微服务体系结构的一个重要规则是,每个微服务必须拥有其域数据和逻辑。正如完整的应用程序拥有自己的逻辑和数据一样,每个微服务也必须在自主生命周期中拥有自己的逻辑和数据,每个微服务都有独立的部署。
这意味着域的概念模型在子系统或微服务之间会有所不同。考虑企业应用程序,其中客户关系管理(CRM)应用程序、事务性采购子系统和客户支持子系统各自调用唯一的客户实体属性和数据,并且每个应用程序使用不同的有界上下文(BC)。
这一原则在领域驱动设计(DDD)中类似,每个有界上下文或自治子系统或服务都必须拥有自己的领域模型(数据加上逻辑和行为)。每个限定于DDD的上下文都与一个业务微服务(一个或多个服务)相关。关于有界上下文模式的这一点将在下一节中展开。
另一方面,在许多应用程序中使用的传统(单片数据)方法是有一个单一的集中式数据库或只有几个数据库。这通常是一个标准化的SQL数据库,用于整个应用程序及其所有内部子系统,如图4-7所示。
传统方式数据管理