设计分布式系统的一些原则
在设计架构时,要以业务为基础,同时需要考虑时间,人员技术储备等一系列因素,不存在直接设计出来一个完美的架构。
先解决核心问题,再一步步解决项目中出现的痛点。一个满足业务需求的架构是根据业务演变来的,这是一个不断迭代的过程。
微服务架构设计的几大定律
康威定律
- 系统架构可以反映出公司的组织架构
复杂的系统设计离不开人与人的沟通,沟通成本的算法为人数*(人数-1)/2,人数越多,成本越高。沟通的问题,会影响到系统的开发效率和周期。
- 时间再多也不能把一件事情做完美
一个复杂的系统,无论人员技术水平多高,终究会有漏洞。 需求复杂情况下,先忽略一些细节,业务量大的情况下,先做核心内容,把能做好的做到完美,然后再持续集成。- 根据系统做团队的划分
还是为了解决沟通问题,团队越多,共同成本越高,尽量让一个团队内全栈,让团队自治,降低沟通成本。- 久合必分,分而治之
将一个大的系统在合适的实际进行拆分
墨菲定律
- 任何事情都没有表面看起来那么简单
- 所有事情都会比你预计的时间要长
- 可能出错的事情总会出错
- 如果你担心某种情况发生,那么它更有可能发生
二八定律
各个行业都普遍存在二八定律,在设计系统时,应将有效的资源放到核心的环节。