
架构演进图

单一职责原则指的是一个微服务只负责一个明确的业务能力,专注于做好一件事情,此规则也会根据业务变化频率、团队规模上会有一定的相关业务的合并,过多的拆分需要的人力也会增多,适当的合并可以减少人力成本
将可靠性要求高的核心服务和可靠性要求低的非核心服务拆分开来,然后重点保证核心服务的高可用。
基于领域模型拆分,围绕业务领域按职责单一性、功能完整性拆分。
需要区分系统中变与不变的部分,不变的部分一般是成熟的、通用的服务功能;变的部分一般是改动比较多的需求、满足业务迭代扩展性需要的功能,我们可以将不变的部分拆分出来,作为共用的服务,将变的部分独立出来满足个性化扩展需要。
微服务拆分并不是一步到位的,应当根据实际情况逐步展开;如果一开始不知道应该划分多细,完全可以先粗粒度划分,然后随着需要,适当将粒度划分更细拆分;
微服务拆分需要几人维护一个系统合理呢?
微服务拆分还有一个重要原则,就是分层调用,避免环形及双向依赖;服务之间的环形/双向依赖会使得服务间耦合加重,在服务升级及后续维护中成本会很高,接触过一知名公司的IM系统,系统分层混乱,让接受人维护成本剧增及修复问题的复杂度一时不敢轻易修复问题上线,调用链路庞大混乱,链路自测不充分,上线会带来其他影响,奉劝每位架构师在开发前一定要做好应用架构及调用规范;开发中codereview检查美味每位开发者的代码是否越过规范;开发后跨应用互相熟悉的时间统计,代码是给比别人看的,开发者要牢记。
单向依赖的补充:在我们实际开发中这条规则常被打破,如支付收单系统,订单会调用支付收单系统进行创建支付单支付,支付收单系统还要异步通知订单系统结果,可能有人会说,让订单系统查询就可以避免了互相调用了,这种异常情况会有很多无效调用,实际中,通知和查询两种都会存在。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。