交易型系统设计的一些原则
- 前言
期待已久的 《亿级流量网站架构核心技术》 终于到手了 。
- 介绍
- 先介绍两个原则吧
墨菲定律 : 1 、 任何事多没有表面看起来那么简单 2 、 所有的事多会比你预计的时间要长 3 、可能出错的事总会出错 4 、 如果你担心某种情款要发生 , 那么它就更有可能发生
康威定律 : 1 、 系统架构应该是公司组织架构的反应 2 、应该按照雨雾闭环进行系统拆分/组织架构划分 ,实现闭环/高内聚/低耦合,减少沟通成本 3 、如果沟通出现问题,那么就应该进行组织架构的调整 4 、在合适的时机进行系统拆分,不要一开始就给系统拆分的非常细,虽然闭环,但每个人维护的系统多,维护成本比较高
- 高并发原则
- 无状态 -- 应用无状态 配置文件有状态 通过配置中心去配置配置文件
- 拆分 -- 需要考虑投入的资源情况 ,系统维度: 按照业务拆分 功能维度 : 对系统按照功能拆分 读写维度 :读大于写 , 应该考虑读写分离 ,缓存提升性能 ;写大于读 ,应该考虑分库分表 ;聚合读写的 , 应该考虑 数据异构拆分系统,聚合存储; AOP 维度 : 应该考虑cdn加速 模块维度 : 按照基础或者代码维护进行拆分,如基础模块分库分表,数据库连接池
- 服务化 -- 随着调用量越来越大 , 应该考虑服务的自动注册于发现,需要考虑服务的分组/隔离 还要考虑一些超时重试, 限流,黑白名单等问题
- 消息队列 -- 如果订阅者太多 ,单个消息队列机会成为瓶颈, 需要注意 生产消息失败 , 以及消息重复接受时的场景 , 对于不能容忍失败的业务场景 需要增加日志 , 报警 等 , 在一些场景下回发生消息的重复接受的问题 , 应该在业务上进行 防重设计
- 大流量缓冲 --