写在前面
在设计系统时,应该多思考墨菲定律。
- 任何事都没有表面看起来那么简单。
- 所有的事都会比你预计的时间长。
- 可能出错的事总会出错。
- 如果你担心某种情况发生,那么它就跟有可能发生。
在系统划分时,也要思考康威定律。
- 系统架构师公司组织架构的反应。
- 应该按照业务闭环进行系统拆分/组织架构划分,实现闭环/高内聚/低耦合,减去沟通成本。
- 如果沟通出现问题,那么就应该考虑进行系统和组织架构的调整。
- 在合适时机进行系统拆分,不要一开始就把系统/服务拆得非常细,虽然闭环,但是每个人维护的系统多,维护成本高。
架构设计遵循的原则
高并发原则
- 无状态
- 拆分(系统、功能、读写、AOP(面向切面编程)、模块)
- 服务化
- 消息队列(大流量缓冲、数据校验)
- 数据异构
- 缓存银弹(浏览器端缓存、APP客户端缓存、CDN缓存、接入层缓存、应用层缓存、分布式缓存)
并发化
高可用原则
- 降级
- 限流
- 切流量
可回滚
业务设计原则
- 防重设计
- 幂等设计
- 流程可定义
- 状态与状态机
- 后台系统操作可反馈
- 后台系统审批化
- 文档和注释
- 备份