架构分层
一、高可用架构为什么需要分层
1. ALLIN ONE 架构的缺点
– 整个架构只有一个模块
• 数据部分、逻辑部分、接入部分、展示部分等
– 架构存在问题
• 耦合严重
• 职责不分明
• 模块庞大、臃肿
• 开发成本高、效率低下
• 运维成本高
• 组件间相互影响,一旦一个组件有问题,整个服务都受影响
• 扩展性差
• 性能极限差
• 牵一发而动全身!!!!
2. 服务高可用分层设计的好处
– 模块耦合性低
– 模块职责分明
• 数据层、逻辑层、接入层、展示层等等
– 模块间不再相互影响
– 模块独立扩展
– 系统整体性能高
二、高可用架构分层设计原则
– 数据服务和逻辑服务分离
• 数据存储
• 业务逻辑
– 逻辑服务和接入服务分离
• 业务逻辑
• 接入层
– 接入服务和展示服务分离
• 接入层
• 数据展示
– 分层服务功能单一
• 数据
• 逻辑
• 接入
• 展示
• ……
– 分层间低耦合
• 接口交互
– 分层内高内聚
• 功能聚焦单一
– 分层适中
• 层次过多
– 请求交互路径长
– 请求响应延迟高
– 层次多,运维成本高
– 定位问题涉及层次多,定位复杂多增加,定位时间长
• 层次过少
– 每个层次功能不单一,耦合性高
– 模块内组件间相互影响高
– 高可用无法保证
三、高可用架构如何分层
高可用架构分层
– 前端架构
• MVC架构分层
– 后端架构
• 按照功能水平划分
– 四层
» 接入层、逻辑层、数据层、数据存储
» 接入层、逻辑层、原子服务层、数据存储
– 五层
» 接入层、序列化层(异步消息队列)、逻辑层、数据层、数据存储
• 按照业务垂直拆分
你投入得越多,就能得到越多得价值