微服务拆分细则

InterviewCoder

​ 在微服务的设计过程中,微服务设计有多大,微服务粒度的把控,一直是设计人员需要考虑和设计的难点。

因为服务粒度设计过大,不能得到微服务架构带来的便利,例如:更加敏态的开发,更频繁的版本发布,由于服务功能划分的小,可以根据实际的业务场景,选择更加合适的技术进行代码重构等等。

​ 但同时我们也要注意,不是服务越” 微 “越好,因为服务的过度拆分会使架构的设计复杂度大大提升,同时也会大大提升运维和测试的复杂度等。

​ 所以对服务拆分粒度的把控,对设计人员来讲就至关重要了,甚至对项目的成败有非常重要的影响。

这篇文档提供了一些主要的微服务拆分原则,供您参考,来帮助您进行更加合理粒度的微服务设计。

# 微服务的拆分原则 - 通用

编号 原则 说明
原则 1 基于业务分析拆分 基于 TOGAF, ADA 等
原则 2 基于 DDD 领域驱动设计中的子域设计拆分 基于领域驱动设计
原则 3 根据动作和用例拆分 比如支付
原则 4 根据名词或者资源拆 比如账号
原则 5 架构稳定 拆分的结构稳定,不会经常修改
原则 6 服务是可测试的 集成测试要可定义,测试可回溯
原则 7 单一原则 一个服务做一个业务, 自己治理自己的数据库
原则 8 开闭原则 面向对象理论, 对扩展开放, 对修改关闭
原则 9 高内聚 强一致,强依赖关系的放在一起, 减少分布式事务
原则 10 低耦合 服务间互相独立
原则 11 足够小的团队可维护,最大两个 pizza team 6-10 人一个 pizza team
原则 12 团队自治,自己的服务的开发和发布要跟别的团队尽可能小的协调

# 微服务的拆分原则 - 技术侧重点

编号 原则 说明
原则 1 潜在风险 服务的风险性
原则 2 资源性能计算性能硬盘性能内存容量网络带宽 机器的性能决定了方案的部分选择
原则 3 安全 安全要求是否很高,安全的策略
原则 4 高并发瞬时并发持续并发 并发的种类, 持续的时间
原则 5 数据库数据量大小读操作写操作数据类型 数据的类型, 读写的多少,数据量

# 关于我

Brath 是一个热爱技术的 Java 程序猿,公众号「InterviewCoder」定期分享有趣有料的精品原创文章!

InterviewCoder

非常感谢各位人才能看到这里,原创不易,文章如果有帮助可以关注、点赞、分享或评论,这都是对我的莫大支持!

评论