按一般原则来讲,微服务的拆分是应该从横向角度进行拆分。但是在一些业务流程中,如果想从纵向角度进行拆分,如何能够更好的实现合理拆分,并且不影响系统的响应时间等性能指标?
如何拆分微服务,这个目前没有一个原则或者标准可以参考,但是大范围可以看到:
1、单一职责、高内聚低耦合:简单来说一张表划分为一个服务
2、服务粒度适中:服务不要太细(有的团队甚至一个接口一个服务)
3、 以业务模型切入:比如产品,用户,订单为一个模型来切入
4.、演进式拆分:刚开始不要划分太细,可以随着迭代过程来逐步优化
5.、避免环形依赖与双向依赖:尽量不要做服务之间的循环依赖
一楼的回答应该已经很全面了,我来补充几点实践的:
1 服务分层,将系统的功能进行分层,服务归属于前后中台,层间单向调用,有效控制调用深度
2 数据耦合,对于需要跨机事务的拆分,要重点分析,是否可以通过服务功能的调整避免(如将两段式提交变成数据副本的最终一致性),如果确实不行,对拆分的必要性进行确认。