微服务的划分方式
目录
微服务的划分
当业务复杂度足够高的时候,应该基于领域驱动划分服务,而领域驱动本身足够复杂,很多概念比较抽象,应用范围并不是特别广泛,所以当业务复杂度较低时,可以选择基于数据驱动划分服务。数据驱动更容易理解和上手。
- 基于数据驱动划分
- 基于[[领域驱动设计]]划分 DDD
- 使用统一的语言理解需求,最好是业务语言而不是技术语言。
- 业务分析
- 寻找聚合,可以通过事件风暴来寻找聚合,将一系列的事件、动作聚合成一个领域
- 确定服务的调用关系
- 业务流程验证
- 服务划分是否合理?
- 如果一次调用要跨多个服务,怎么保证一致性?
- 性能是否达标?
- 从单体架构中逐步分离
- 先分割前后端,不过目前的开发架构都已经默认是前后端分离的,所以对于新应用来说这一步是默认完成的。
- 在剥离出公共服务,比如单点登录。因为公共服务的边界清洗,耦合度低
- 再抽象出核心服务
判断服务划分是否合理:
- 一个小功能的上线需要多久,是否能够在几天内完成?如果需要的时间太久,可能就是划分的颗粒度不足。
- 大多数功能的修改是否能够在一个服务内部完成,如果修改一个功能,要修改多个服务,可能就存在划分不合理的情况。