为什么说优秀的微服务设计一定少不了 DDD?
- 前言 -
- 微服务和 DDD 的关系 -
- 微服务的缺陷 -
服务并没有解决复杂系统如何应对需求变化这个问题,甚至还加剧了这个问题。 当一个需求变化了,需要花大量的精力去识别这个变化影响到了哪些微服务,这些服务的多个团队之间,需要通过无休止的扯皮去决定哪个服务多一些,哪些服务少改一些。 然后测试团队还需要做昂贵的这种联调测试。 即便如此呢,开发团队依然不放心,还要通过一系列的开关控制,小心翼翼的去做切流,去做灰度发布。
- DDD 的功用 -
功能纬度; 质量纬度,比如性能、可用性; 工程纬度。
- 拆分案例 -
关于领域
商品子域; 订单子域; 库存子域等等。
划分系统内部架构边界
边界清晰的好处
资源倾斜; 使用弹力设计模式:比如重试,熔断,降级; 使用特殊技术:比如Go语言; 具备独立代码库:有独立团队和运维人员,和A和B的运行期做到隔离不互相影响。
聚合根用来保证内部实体规则的正确性和数据的一致性; 外部对象只能通过ID来引用聚合根,不能引用聚合根内部的实体; 聚合根之间不能共享一个数据库事务,它们之间的数据一致性需要通过最终的一致性来保障。
来源:
https://www.cnblogs.com/jackyfei/p/12089123.html
评论