微服务拆分原则

业务

根据业务主要可以采用DDD的战略分析的方式,通过分析子域,划分界限上下文的方式划分微服务。

但注意,DDD其实也是一种工具或方法,而且不是银弹,DDD适合于“业务”流程多的场景,富领域模型的核心域开始。典型的场景就是“状态流转”多的场景,比如审核流程,创建审核、审核过程会有多个业务状态的变化。而在查询非常多,或者数据分析的场景下,DDD并不能发挥优势。而且可能适得其反,使用简单的三层模型的方式更简单、高效。

非业务

性能

典型的,打点接口,吞吐量很大,一个或几个接口可以放在一个微服务内。而且基本没有什么领域模型,直接贫血三层可能更合适。

架构

如业务网关、日志服务、注册发现中心等都是一个单独的微服务。

发部更新频率

典型的就是活动服务,可以先从api层进行拆分,单独一个微服务。

技术异构

对于一些场景如用户关注设计师,是个多对多的关系,典型的大数据的场景可以单独进行服务的拆分。技术异构往往也与性能相关,往往使用不同的技术栈的服务对于吞吐量、延迟的要求也不一样。

根据团队

根据团队有两层理解,一是从微服务的个数上,如果一个7人团队20多个维护的服务就可能会吃力。

二是根据康威定律,组织的建设要和沟通保持一致,如果一个团队分割两地,那么这两个团队维护的服务要做到高内聚、低耦合。

PS

Table of Contents