本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
近年来,微服务的流行导致对命令查询责任分离 (CQRS) 模式的兴趣重新抬头。 CQRS 是一种模式,可用于将应用程序架构为一组独立的服务,每个服务负责一个任务。
使用 CQRS 的主要好处是它可以使应用程序更具可扩展性和更易于维护。如果实施得当,CQRS 还可以使应用程序更具可预测性和更易于理解。
在本文中,我们将仔细研究 CQRS 模式以及如何使用它来构建可伸缩和可维护的应用程序。我们还将研究实施 CQRS 时需要考虑的一些挑战。
命令查询责任分离 (CQRS) 是一种模式,可用于将应用程序架构为一组独立的服务,每个服务负责一个任务。
“命令查询责任分离”这个术语最早是由 Greg Young 在 2010 年的一篇博客文章中创造的。在这篇文章中,Greg 将 CQRS 描述为“我第一次听到 Eric Evans 在他的领域驱动设计一书中描述的技术”。
CQRS 模式起源于领域驱动设计 (DDD) 社区,并且经常与事件溯源等其他 DDD 模式结合使用。
CQRS 模式的核心很简单:它将应用程序分为两个独立的部分,一个负责处理命令(也称为写入),另一个负责处理查询(也称为读取)。
命令是更改系统状态的请求。它们通常由用户交互触发,例如单击按钮或提交表单。
命令通常由命令处理程序处理,它是一段代码,负责验证命令并将更改应用到系统。
查询是对系统信息的请求。它们通常由用户交互触发,例如加载页面或执行搜索。
查询通常由查询处理程序处理,它是一段代码,负责从系统中获取数据并将其返回给用户。
CQRS 模式通常被描述为关注点分离,因为它将处理命令的责任与处理查询的责任分开了。
CQRS 模式可以在技术性能和开发人员生产力方面提供许多好处。
CQRS 的主要好处之一是提高了性能。通过将应用程序拆分为两个独立的部分,可以更轻松地水平扩展应用程序。
例如,如果应用程序接收大量流量,则可以通过添加更多查询服务器来扩展应用程序的查询部分。可以通过添加更多命令服务器来扩展应用程序的命令部分。
CQRS 的另一个好处是提高了可预测性。当一个应用程序被分成两个独立的部分时,可以更容易地理解应用程序是如何工作的。这是因为每个部分的职责都有明确的规定。
CQRS 还可以提高开发人员的工作效率。通过将应用程序拆分为两部分,可以更轻松地对应用程序进行更改而不影响另一部分。
例如,如果对命令的处理方式进行了更改,则不会影响查询的处理方式。这可以使将更改部署到应用程序变得更加容易和快速。
虽然 CQRS 模式可以提供许多好处,但在实施 CQRS 时也需要考虑许多挑战。
CQRS 的主要挑战之一是增加的复杂性。当应用程序分为两部分时,理解应用程序的工作原理会更加困难。这是因为每个部分的职责并不总是很清楚。
CQRS 的另一个挑战是增加了开发时间。当应用程序分为两部分时,开发应用程序可能需要更长的时间。这是因为开发团队需要同时开发应用程序的命令部分和查询部分。
CQRS 的另一个挑战是增加了操作开销。当应用程序分为两部分时,操作应用程序会更加困难。这是因为运营团队需要同时管理应用程序的命令部分和查询部分。
在本文中,我们了解了 CQRS 模式以及如何使用它来构建可扩展和可维护的应用程序。我们还研究了实施 CQRS 时需要考虑的一些挑战。
虽然 CQRS 模式可以提供许多好处,但它并不适合所有应用程序。应根据具体情况决定是否使用 CQRS。