学习
实践
活动
工具
TVP
写文章

用 CQRS/ES 模式构建弹性 Node.js 应用

查询职责分离模式(Command Query Responsibility Segregation,CQRS),该模式从业务上分离修改 (Command,增,删,改,会对系统状态进行修改)和查询(Query,查,不会对系统状态进行修改)的行为。从而使得逻辑更加清晰,便于对不同部分进行针对性的优化。

事件溯源(Event Sourcing,ES)模式则是不保存对象的最新状态,而是保存对象产生的所有事件,所有由对象产生的事件会按照时间先后顺序有序地存放在数据库中。因为是用事件来表示对象的状态,而事件又只会增加不会修改,这就能让数据库里表示对象的数据非常稳定。这种特性可以让领域模型非常稳定,在数据库级别不会产生并发更新同一条数据的问题。

本文中作者结合 CQRS 和 ES 两种模式,尝试在工程应用中达到如下目的:

从实现细节中剥离出核心业务逻辑;

具体实现不依赖任何数据库、框架或者服务;

尽可能使用简单纯函数

让项目工程更容易水平扩展

让项目工程更容易测试

不过话说回来,一方面使用 CQRS/ES 确实能让应用程序变得更健壮、更好的扩展性,可另一方面也会给系统添加额外的复杂度,且架构实践门槛较高需要成熟框架去支撑;所以并非所有应用都要应用 CQRS/ES 模式,我们应该在必要的时候选择正确的方案

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212B0FX8U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券