Published on

架构设计复杂度模型

鸡蛋篮子第一法则:如何一个蓝字数不清,拆分到多个蓝字再数

业务复杂度 和 质量负责度 正交,二者相互不影响

image-20230623002714228

架构复杂度应对之道

image-20230623003725148

可扩展

extensibility:系统适应变化的能力。包含可理解 可复用两个部分(可理解也是可扩展的部分) 重点就是拆分和复用。

scalability:可伸缩,系统通过添加更多资源来提升性能的能力

可理解和可复用如何影响可扩展:可理解代码系统有哪些地方有修改,可复用代表修改的范围有多大。

image-20230623121946454

拆分法则

image-20230623122305438

内部复杂度,外部复杂度 平衡原则

image-20230623122402447

image-20230623122552027

为什么不先拆多一些然后再合并。

image-20230623122808656

封装

image-20230623122856916

预测的艺术

image-20230623123043469

封装的技巧

image-20230623123232591

美团MazeGo规则引擎image-20230623124531263

OSGI微内核

image-20230623124603932

image-20230623123521199

高性能

高性能:计算的高性能, 存储的高性能

image-20230623184032570

单机高性能复杂度分析

image-20230623184247038

列出只是常见的

集群高性能设计

鸡蛋蓝字理论-叠加法则

image-20230623184714107

任务分配

image-20230623185059173

任务分配器本身也是集群

image-20230623185401303

任务分配:DNS,Nginx(10万)(类似的还有F5百万, LVS 50万量级)

memcached

image-20230623185609113

任务分解

比任务分配更复杂。

image-20230623185719052

image-20230623185800257

微信

image-20230623185852983

数据库读写分离 就是为了提升读的性能。

image-20230623190206061

投入产出比,拆分之后更容易优化

高可用

image-20230623191601056

单机架构没有高可用。

鸡蛋篮子第三法则 冗余法则

高可用方案必然是集群方案。

计算高可用

任务分配

image-20230623192249296

任务分配器 需要监控业务服务器的状态。,在故障时进行切换。

image-20230623192545645

下面 运行形态,配置获取,分配算法和高性能是一样的。

image-20230623193051146

image-20230623193401329

存储高可用

image-20230623193457263

复制格式

image-20230623193930628

复制方式

image-20230623194256427

image-20230623194512858

image-20230623194723801

image-20230623195436951

image-20230623195511122

image-20230623195704168