1. 理解高功能杂乱度本质;为什么高功能做起来比较难,难点在哪里
  2. 掌握高功能架构剖析和规划;思路和手段是啥

一、高功能杂乱度模型

如何设计高性能架构笔记
在剖析和规划高功能架构的时分,假如没有思路,能够对照这个图,这个图就是在做高功能架构剖析和规划的时分的一个思路,比方说高功能,单机高功能和集群高功能

二、单机高功能杂乱度剖析

如何设计高性能架构笔记

  1. PPC,process per connection每个衔接一个进程
  2. TPC,thread per connection每个衔接一个线程
  3. LSM,适用于写多读少,它的数据结构写入功能比读取功能高,比方HBase
  4. 单机高功能杂乱度应对之道:各种编程技巧,上面列出的只是常见的,不是只能用这些

三、集群高功能规划

鸡蛋篮子理论第二规律 – 叠加规律

如何设计高性能架构笔记

  1. 使命分配,三个篮子一模一样
  2. 使命分化,三个不同的篮子

鸡蛋篮子理论第二规律(叠加规律):假如一个篮子装不下你的鸡蛋,用多个篮子

四、集群高功能 – 使命分配

4.1 使命分配器

如何设计高性能架构笔记
一、使命分配

将使命分配给多个服务器履行

二、杂乱度剖析

  1. 添加“使命分配器”节点,可所以独立的服务器,也可所以SDK
  2. 使命分配器需求管理所有的服务器,能够经过装备文件,也能够经过装备服务器(例如zookeeper)
  3. 使命分配器需求依据不同的需求选用不同的算法分配

4.2 使命分配器集群

如何设计高性能架构笔记
使命分配器自身也是集群,需求上一级的分配器

4.3 使命分配架构规划要害点

如何设计高性能架构笔记

从三方面去考虑,从运转形态、装备获取、算法三方面

4.4 使命分配事例

一、DNS

如何设计高性能架构笔记
架构形式

  1. 独立服务器
  2. 装备文件
  3. DNS解析规则(A记载、CNAME等)

使用场景

  1. 机房等级、地理位置等级的”使命分配”
  2. 相似还有GSLB、CDN

二、Nginx

如何设计高性能架构笔记
架构形式

  1. 独立服务器
  2. 装备文件
  3. 负载均衡算法

使用场景

  1. 服务器脚踏车的”使命分配”
  2. 相似的还有F5(硬件的负载均衡设备)、LVS(基于Linux内核的负载均衡)

三、Memcached

如何设计高性能架构笔记
架构形式

  1. SDK
  2. 代码装备
  3. 一致性Hash

使用场景

  1. 系统内部的”使命分配”

五、集群高功能 – 使命分化

5.1 使命分化

如何设计高性能架构笔记

使命分化,将服务器拆分为不同角色,不同服务器处理不同的事务

杂乱度剖析

  1. 添加“使命分化器”节点,可所以独立的服务器,也可所以SDK
  2. 使命分化需求管理所有的服务器,能够经过装备文件,也能够经过装备服务器(例如zookeeper)
  3. 需求规划使命拆分的方法,使命分化器需求记载“使命”和“服务器”的映射关系
  4. 使命分化器需求依据不同的需求选用不同的算法分配

使命分化和使命分配,哪个更杂乱?为什么?

  • 使命分化更杂乱
  • 由于使命分化的杂乱度包含了使命分配的杂乱度,它同时要添加一个使命拆分杂乱点
  • 使命怎样拆分,哪些使命有功能瓶颈

5.2 使命分化架构规划要害点

如何设计高性能架构笔记

5.3 使命分化事例

一、微信服务拆分

如何设计高性能架构笔记
架构形式

  1. 依照事务逻辑区分服务器集群
  2. 独立的接入服务器

二、数据库读写分离

如何设计高性能架构笔记
架构形式

  1. 使命拆分为 读 + 写
  2. MySQL区分为主从
  3. 嵌入到Java程序
  4. 装备文件,经过装备信息来记载MySQL有哪些节点

三、Zuul

如何设计高性能架构笔记
架构形式

  1. 依照服务拆分
  2. 独立服务器
  3. 装备服务器 Eureka
  4. 负载均衡 Ribbon

使用场景

  1. 微服务架构,相似的还有OpenResty、Kong

六、总结 – 思想导图

如何设计高性能架构笔记