关键要点:
- 微服务架构将应用功能分解为多个服务,其中每个服务都对应于一种业务能力。
- 开发基于微服务的业务应用时,一个主要挑战是功能分解在事务、领域模型和查询中受到了抵制。
- 领域模型可分解为多个领域驱动设计(Domain Driven Design,DDD)聚合。
- 每个服务的业务逻辑都是一个领域模型,该领域模型由一个或更多的DDD聚合所组成。
- 在服务中,每个事务只对单一的聚合进行创建或更新。
- 事件用于维持聚合间(服务间)的一致性。
正变得越来越流行。作为一种实现模块化的方法,微服务架构将应用功能分解为一组服务。团队可使用微服务架构去开发大型复杂的应用,这样可以更块地交付更好的软件。微服务架构还使得在开发中更易于采用新的技术,因为团队可使用最新最适合的技术栈去对每个服务进行实现。此外,通过使每个服务都可以部署在最优的硬件上,微服务架构可改进应用的可扩展性。
但是微服务并非是一剂良方。尤其是在领域模型、事务和查询中,功能分解受到了出乎意料地抵制。由于这个问题的存在,使用微服务架构开发事务性业务应用是一件具有挑战性的事情。在本文中,我将给出了一种微服务开发的方法,该方法使用领域驱动设计、事件溯源和命令查询职责分离(Command Query Responsibility Segregation,CQRS)技术解决了上述的问题。让我们首先看一下开发人员在编写微服务中所面对的挑战。
来源: http://www.infoq.com/cn/articles/microservices-aggregates-events-cqrs-part-1-richardson