高性能复杂度模型

高性能复杂度分析和设计
单机

集群
任务分配

将任务分配给多个服务器执行
复杂度分析
- 增加“任务分配器”节点,可以是独立的服务器,也可以是SDK
- 任务分配器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如ZooKeeper)
- 任务分配器需要根据不同的需求采用不同的算法分配
任务分配器集群

复杂度分析:任务分配器本身也是集群,需要上一级的分配器
任务分配架构设计关键点

案例
案例1-DNS

架构模式
- 独立服务器
- 配置文件
- DNS解析规则
应用场景
机房级别、地理位置级别的“任务分配”
案例2-Nginx

架构模式
- 独立服务器
- 配置文件
- 负载均衡算法
应用场景
服务器级别的“任务分配”
案例3-Memcached

架构模式
- SDK
- 代码配置
- 一致性Hash
应用场景
系统内部的“任务分配”
任务分解

将服务器拆分为不同角色,不同服务器处理不同的业务
复杂度分析
- 增加“任务分解器”节点,可以是独立的服务器,也可以是SDK
- 任务分解器需要管理所有的服务器,可以通过配置文件,也可以通过配置服务器(例如Zookeeper)
- 需要设计任务拆分的方式,任务分解器需要记录“任务”和“服务器”的映射关系
- 任务分解器需要根据不同的需求采用不同的算法分配
任务分解架构设计关键点

案例
案例1-微信服务拆分

架构模式
- 按照业务逻辑划分服务器集群
- 独立的接入服务器
案例2-数据库读写分离

架构模式
- 任务拆分为“读”+“写”
- MySQL划分为主从
- 嵌入到java程序
- 配置文件
案例3-Zuul

架构模式
- 按照服务拆分
- 独立服务器
- 配置服务器Eureka
- 负载均衡Ribbon
应用场景
微服务架构,类似的还有OpenResty、Kong



















