复杂度来源:高性能
单机复杂度
程序执行控制台(输入计算和输出)–>批处理程序(执行指令清单,一次只执行一个)–>多进程并行运行–>进程间通信–>线程出现(线程是操作系统调度的最小单位,进程是操作系统分配资源的最小单位)–>多CPU达到多任务并行
集群复杂度
大量机器配合起来达到高性能的目的,是个复杂任务。
- 任务分配。
- 每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行。
- 架构的复杂度体现在:
- 增加任务分配器:可能是硬件网络设备(交换机)、可能是软件网络设备(LVS)、可能是负载均衡软件(Nginx)、可能是自己开发的系统。
- 任务分配器和真正的业务服务器之间的连接和交互。例如:连接建立、连接检测、连接中断后如何处理。
- 任务分配器需要增加分配算法。例如采用轮询算法,还是按权重分配。
- 随着流量增加,并不是业务机器线性增加即可,因为任务分配器可能成为瓶颈,增加了新的复杂度。
- 要将不同用户分配到不同的任务分配器上。
- 任务分配器和业务服务器的连接从一对多变为多对多的网状结构。
- 状态管理、故障处理等复杂度大大增加。

