- 无状态
- 尽量使系统和接口保持无状态。无状态便于水平扩展复制和快速回滚。
- 幂等设计
- 幂等性就是对于同一操作发起的一次请求或者多次请求的结果是一致的。
- 幂等可以避免因各种问题导致的数据重复,也可以快速修复因bug而产生的数据问题。
- 上下游数据流转增加防重码
- 防重码可以实现接口幂等。
- 防重码可以作为唯一id,便于上下游沟通和定位问题。
- N+1 设计
- 同一服务至少要两台及以上机器。
- 低耦合
- 尽量让任意一个对象的修改造成的影响尽可能的小。
- 高内聚
- 同一或相似功能模块或耦合高的模块最好放在一起。
- 不要让分支流程影响到主流程
- 分支流程可以采用异步方式和主流程隔离开来
- 自动化
- 可以进行自动化的流程一定要自动化,人做得再仔细、制度再严格也有出错的时候。
- BASE理论
- BASE理论是对CAP理论的延伸。CAP理论只能在可用性、一致性和分区容错性中舍弃一个,而现实中,我们可以通过放弃追求100%的可用性和强一致性,通过基本可用、允许系统存在软状态和最终一致性来让CAP理论中的三者同时尽可能的满足。
- 基本可用。分布式系统出现故障时,允许部分可用性,以保证核心流程的稳定。
- 软状态。允许多节点间同步的延迟就是一种软状态。
- 最终一致性。最终一致性就是经过一段时间后,系统能够达到最终一致状态。
- 不要过度设计。
- 如果设计在未来预期中能用到的概率比较低,就不要过度设计。
- 兼容更新
- 新功能上线时尽量保证兼容旧逻辑
- 如果新旧功能无法兼容,尽量不要直接在旧功能上改,而要另起分支,之所以这么做一是便于新旧功能切换和回滚;二是若同时涉及多个系统,可以避免新功能上线后旧数据无法处理的尴尬境地。
- DRY原则(Dont repeat yourself)
- 尽量不要让代码重复。
- 资源隔离
- 将重要服务和不重要服务所使用进行隔离,避免不重要服务影响到重要服务。
- 限流
- 避免因一个接口的异常流量造成整个系统的不可用。
- 读写分离
- 自动化测试
软件架构设计原则总结
最新推荐文章于 2024-08-11 02:13:36 发布