004 复杂度来源:高性能
2019-01-21 本文已影响22人
猿笔记
复杂度的体现
- 单台计算机内部为了高性能带来的复杂度
- 多台计算机集群为了高性能带来的复杂度
单机复杂度
- 计算机内部复杂度最关键的地方:操作系统
- 操作系统和性能最相关的是:进程和线程
- 分时调度,本质上仍然是串行任务
- 多cpu才能做到真正的同时执行计算任务
- 常见解决方案:SMP(对称多处理器结构)、NUMA(非一致存储访问结构)、MPP(海量并行处理结构)
集群复杂度
- 任务分配【横向扩展】
-
任务分配:指的是每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行
需考虑的因素:
(1)任务分配器的选择:硬件网络设备(如:F5、交换机等)、软件网络设备(如:LVS),或负载均衡软件(如:Nginx)、自己开发的系统
---需考虑:性能、成本、可维护性、可用性等
(2)选择合适的连接方式,并对连接进行管理
(3)分配算法,如:轮询算法、权重分配算法、按负载分配等
=》若业务进一步发展,任务分配器本身会成为性能瓶颈
需考虑的因素:
(1)将不同的用户分配到不同的任务分配器;如:DNS轮询、智能DNS、CDN、GSLB设备等
(2)任务分配器和业务服务器的连接变成了网状结构
(3)状态管理、故障处理复杂度大大增加
-
任务分配:指的是每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行
- 任务分解【隔离局部瓶颈 把握拆分粒度】
能提升性能的原因:
(1)简单的系统更容易做到高性能
(2)可以针对单个任务进行扩展
=》并不是系统拆分的越细越好,因为系统间的调用次数会呈指数级别上升