设计系统:墨菲定律
- 1.任何事都没有表面看起来的那么简单
- 2.所有的事都会比你预期的时间长
- 3.可能出错的事总会出错
- 4.如果你担心某事会发生,那么他就更有可能发生
系统划分:康威定律
- 1.系统架构是公司组织架构的反映
- 2.应该按照业务闭环进行系统的拆分/组织架构的划分,实现闭环/高内聚/低耦合, 减少沟通成本
- 3.如果沟通出现问题,那么就应该考虑系统和组织架构的调整
- 4.在合适时机进行系统的拆分,不要一开始就把系统/服务拆得非常细,虽然闭环,但是每个人维护的系统多,维护成本高
重要参考:二八原则
高并发原则
- 1.无状态
- 2.拆分(拆分纬度)
- 1.系统纬度
- 2.功能纬度
- 3.读写纬度
- 4.AOP纬度
- 5.模块纬度
- 3.服务化
- 4.消息队列
- 1.大流量缓冲
- 数据校对
- 5.数据异构
- 数据异构
- 2.数据闭环
-
6.缓存
- 1.浏览器缓存 通过请求设置,如Expires,Cache-control进行控制
- 2.App客户端缓存
- 3.CDN缓存
- 4.接入层缓存
对于没有CDN缓存的应用来说,可以使用nginx搭建一层接入层,实现机制如下
- 1.URL重写:将url按照顺序或者格式重写,去除随机数
- 2.一致性哈希:按照指定参数做一致性Hash化,从而抱着个相同数据落到同一服务器上
- 3.proxy_cache:使用内存级/SSD级代理缓存来缓存
- 4.proxy_cache_lock:使用lock机制,经多个回源合并为一个,以减少回源量,并设置lock
- 5.share_dict:架构使用nginx+lua实现,则可以考虑使用lua share_dict 进行cache。最大的好处就是reload缓存不丢失
- 5.应用层缓存
6.分布式缓存
高可用原则
- 1.降级
- 2.限流
- 3.切流量
- 4.可回滚
业务设计原则
- 1.防重设计
- 2.幂等设计
- 流程可定义
- 4.状态与状态机
- 5.后台系统操作可反馈
- 6.后台系统审批化
- 7.文档与注释
- 8.备份