背景说明
列举记录下日常实际工作中涉及到的架构设计的手段、套路和方法论
职责边界划分
分层、分平面
分层分平面可以降低架构设计复杂度,典型如K8S定义了数据平面、控制平面、管理平面并严格分离;
边界划分步骤
1、梳理清楚全链路的业务流程节点
例如:梳理后整体业务流程 A -> B -> C -> D -> E -> F -> G -> H
2、切分把若干流程,框为一个边界,可以有多种框法对应多种划分方案,具体划分思想参考下面DDD
例如:有以下备选划分方案
划分方式1:(A -> B -> C) -> D -> (E -> F) -> G -> H
划分方式2:A -> (B -> C -> D) -> (E -> F -> G) -> H
3、多角度审视合理性,优先考虑是否符合当前组织架构
划分的指导思想:DDD
DDD 作为架构设计思想帮助微服务控制规模复杂度
基于DDD思想去具体划分
多态拆分
管理态和运行态分离、开发态和运行态分离,具体举例来说比如应用A有管理后台和运行态提供API 2块业务,其中管理后台相对来运行态说使用频率低、需求迭代少,运行态稳定性压力大、请求量大、性能要求高,则可以把应用A拆分成应用A-console和应用A-runtime 2个应用,在物理代码层面解耦
基础架构理论
CAP 和 PACELC
基础架构类型
单体架构
微服务架构
模块化单体
单体架构面临的问题其实更多是领域划分不合理导致的,而这个问题并不能通过微服务解决。-- by 公司某位大佬
介于“巨石应用”和“过度微服务”之间的一种方案。
稳定性架构常用套路
首先要明确稳定性的工作其实是一项非常综合的工作,技术、流程、机制,过程中需要有技术的意识和专业知识,不仅仅限于架构设计层面,架构层面常用手段如下。
依赖治理
故障隔离架构
先考虑单一故障故障,再考虑更复杂的场景,多个独立依赖同时出概率极低,假设单个依赖故障概率1%,2个独立依赖同时故障 1% * 1% = 0.0001,概率低所以刚开始设计阶段不用过分纠结,把问题转化为对任意单故障做到隔离;
异地多活(单元化架构)
混合云架构
目前比较流行的一种新型架构方案