- 理解高功能杂乱度本质;为什么高功能做起来比较难,难点在哪里
- 掌握高功能架构剖析和规划;思路和手段是啥
一、高功能杂乱度模型
在剖析和规划高功能架构的时分,假如没有思路,能够对照这个图,这个图就是在做高功能架构剖析和规划的时分的一个思路,比方说高功能,单机高功能和集群高功能
二、单机高功能杂乱度剖析
- PPC,process per connection每个衔接一个进程
- TPC,thread per connection每个衔接一个线程
- LSM,适用于写多读少,它的数据结构写入功能比读取功能高,比方HBase
- 单机高功能杂乱度应对之道:各种编程技巧,上面列出的只是常见的,不是只能用这些
三、集群高功能规划
鸡蛋篮子理论第二规律 – 叠加规律
- 使命分配,三个篮子一模一样
- 使命分化,三个不同的篮子
鸡蛋篮子理论第二规律(叠加规律):假如一个篮子装不下你的鸡蛋,用多个篮子
四、集群高功能 – 使命分配
4.1 使命分配器
一、使命分配
将使命分配给多个服务器履行
二、杂乱度剖析
- 添加“使命分配器”节点,可所以独立的服务器,也可所以SDK
- 使命分配器需求管理所有的服务器,能够经过装备文件,也能够经过装备服务器(例如zookeeper)
- 使命分配器需求依据不同的需求选用不同的算法分配
4.2 使命分配器集群
使命分配器自身也是集群,需求上一级的分配器
4.3 使命分配架构规划要害点
从三方面去考虑,从运转形态、装备获取、算法三方面
4.4 使命分配事例
一、DNS
架构形式
- 独立服务器
- 装备文件
- DNS解析规则(A记载、CNAME等)
使用场景
- 机房等级、地理位置等级的”使命分配”
- 相似还有GSLB、CDN
二、Nginx
架构形式
- 独立服务器
- 装备文件
- 负载均衡算法
使用场景
- 服务器脚踏车的”使命分配”
- 相似的还有F5(硬件的负载均衡设备)、LVS(基于Linux内核的负载均衡)
三、Memcached
架构形式
- SDK
- 代码装备
- 一致性Hash
使用场景
- 系统内部的”使命分配”
五、集群高功能 – 使命分化
5.1 使命分化
使命分化,将服务器拆分为不同角色,不同服务器处理不同的事务
杂乱度剖析
- 添加“使命分化器”节点,可所以独立的服务器,也可所以SDK
- 使命分化需求管理所有的服务器,能够经过装备文件,也能够经过装备服务器(例如zookeeper)
- 需求规划使命拆分的方法,使命分化器需求记载“使命”和“服务器”的映射关系
- 使命分化器需求依据不同的需求选用不同的算法分配
使命分化和使命分配,哪个更杂乱?为什么?
- 使命分化更杂乱
- 由于使命分化的杂乱度包含了使命分配的杂乱度,它同时要添加一个使命拆分杂乱点
- 使命怎样拆分,哪些使命有功能瓶颈
5.2 使命分化架构规划要害点
5.3 使命分化事例
一、微信服务拆分
架构形式
- 依照事务逻辑区分服务器集群
- 独立的接入服务器
二、数据库读写分离
架构形式
- 使命拆分为 读 + 写
- MySQL区分为主从
- 嵌入到Java程序
- 装备文件,经过装备信息来记载MySQL有哪些节点
三、Zuul
架构形式
- 依照服务拆分
- 独立服务器
- 装备服务器 Eureka
- 负载均衡 Ribbon
使用场景
- 微服务架构,相似的还有OpenResty、Kong
六、总结 – 思想导图