大学的八篇记事
大学四年也写了一些东西,主要记录心情和发牢骚。大多数是在日记本上,只有八篇写在百度空间上。后来百度空间关闭,被动迁移到百度文章上,估计百度文章也会关掉。大学毕业十多年了,在今天看来,当年写的这八篇文章里面的想法太幼稚了。可是谁没有幼稚过呢?也许当我变得不幼稚了,我就完全不是我自己了。落花流水皆文章,我非常珍惜这些旧文字。
大学四年也写了一些东西,主要记录心情和发牢骚。大多数是在日记本上,只有八篇写在百度空间上。后来百度空间关闭,被动迁移到百度文章上,估计百度文章也会关掉。大学毕业十多年了,在今天看来,当年写的这八篇文章里面的想法太幼稚了。可是谁没有幼稚过呢?也许当我变得不幼稚了,我就完全不是我自己了。落花流水皆文章,我非常珍惜这些旧文字。
在系统架构设计阶段,我一般会首先做数据建模。根据业务模型和功能列表,已经可以分清楚大概的系统、模块和功能,由此数据库的概念模型基本能够确定下来。通过数据库的概念模型设计,结合需求分析阶段产出的功能需求列表,整个系统的详细需求基本可以被印在大脑中了。同时经过概念模型的设计,不同数据实体之间的关系已经相对清晰,服务或领域的划分也具备初步的雏形了
在计算机发展的早期,一直都是集中式计算,计算能力依赖大型计算机。随着互联网的发展,有些业务需要巨大的计算能力才能完成,而集中式计算无法满足要求,大型计算机的价格也非常昂贵。分布式计算将任务分解成更小的部分,分配给多台计算机处理,这样可以节约整体计算时间,大大提高计算效率。互联网大型网站往往面临高并发访问、海量数据处理等问题,必须保证系统高可用、易伸缩等等。分布式架构采用多台机器协同工作,动态伸缩容量,使用冗余节点来消除单点故障,提高系统可用性。
关系型数据库如MySQL的单机并发能力很弱,高并发下表字段的加减操作,可能出现幻读。电商的秒杀活动典型的高并发减库存场景,这类问题有三种优化性能的思路:1. 异步处理减库存,而不是同步。2. 在内存中操作减库存。3. 分布式处理,分摊压力。
过程化编程是将带解决问题的解决方案抽象为一系列概念化的步骤。通过编程的方法将这些步骤转化成程序指令集(算法),而这些指令按照一定的顺序排列,用来说明如何执行一个任务或解决一个问题。程序员必须要知道程序要完成什么,并且告诉计算机如何进行所需的计算工作,包括每个细节操作。
当单服务器的性能无法满足业务需求时,就需要把多台服务器组成集群系统提高整体的处理性能。我们要使用统一的流量入口来对外提供服务,本质上就是需要一个流量调度器,通过均衡的算法,将用户请求流量均衡地分发到集群中不同的服务器上
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Redis是一款开源的内存数据结构存储,用作数据库、分布式缓存、消息中间件,支持多种数据结构。Redis内置了主从复制、事务以及不同级别的持久化功能,并通过Sentinel和自动分区的Cluster提供了高可用性。