有效的微服务:10 个最佳实践
推荐阅读: 架构设计原则 - 高并发 使用 Canal 实现数据异构 MySQL中一条SQL语句是如何执行的? 阿里开源的分布式事务框架 Seata ZooKeeper 并不适合做注册中心 1. 领域驱动设计 微服务开发的首要挑战: 把大的、复杂的应用拆分为小的、自治的、可独立部署的模块。 如果没有正确的拆分,那么结果就是一堆浆糊,有着单体结构的缺点,和微服务结构的复杂度,可以称之为 分布式单体 。 幸运的是,Eric Evans 为领域驱动设计提出了大量的最佳实践和经验技巧,有3个核心思维: 开发团队要和业务部门、业务领域专家紧密合作。 架构师、开发人员、领域专家应该先做出战略设计:找出边界上下文、核心域、子域、上下文映射关系。 架构师、开发人员根据战略设计梳理出一套核心构造块:实体、值对象、聚合等等。 把一个大型系统划分为核心域、子域,再把核心域、子域映射为微服务,这样我们就可以得到一个理想的松耦合微服务体系。 2. 每个微服务一个数据库 微服务模块结构设计好了,下面一个重要问题就是怎么处理数据库,各个微服务是否共享数据库呢? 如果共享,将导致微服务之间紧耦合,违背了微服务的松耦合原则。数据库中一个小小的变动就需要各个团队同步修改。 如果每个微服务都有自己的数据库,那么微服务之间的数据交换将非常麻烦,就像打开了潘多拉魔盒,跑出一堆问题,例如在多个服务中管理事务。 所以