cqrs clean eventual consistency

2025-12-07 0 161

带有派生数据的清洁体系结构CQR

CQR,使用干净的体系结构,多个数据库和最终的一致性

?详细信息

我还将更多详细信息保留在我的博客中

  • CQRS翻译成干净的体系结构

    • CQRS深入命令
    • CQRS查询和实现
    • CQRS共识和一致性
    • CQRS分布式混乱,盖定理

?我如何使用它?

您将需要以下工具:

  • Docker
  • Visual Studio 2019+或Visual Studio代码
  • .NET 6

从 /src文件夹中执行您喜欢的命令行

$ cd src
$ docker compose build
$ docker compose up

打开您的浏览器并打到URL以查看OpenAPI

http:// localhost:5000/swagger/index.html

如果您无法运行,则可以按健康检查,以查看组件是否下降。

http:// localhost:5000/HealthCheck

如果您仍然遇到问题,请不要像分离一样运行,并在执行Docker命令后查看控制台上的错误。

干净的体系结构

这是此微服务模板的基本体系结构:

  • 尊重政策规则,依赖性总是指向内向
  • 将技术细节与系统的其余部分分开
  • 坚硬的
  • 每一层的单一责任

✂️CQRS

命令和查询之间的分离,具有孤立的数据库和不同的模型

命令堆栈

可以直接访问业务规则,并且仅负责仅在应用程序中写作。

在下面,您可以在命令堆栈中找到组件之间的基本交互:

⬆️查询堆栈

负责向您的应用程序的消费者提供数据,其中包含一个简化,更合适的读取模型,具有计算的数据,汇总值和实体结构。

该图像包含查询堆栈中组件之间的基本交互:

DDD

此示例包含一个简化的域模型,其中包含实体,汇总根,值对象和事件,这对于将写作与阅读数据库同步至关重要。

✔️TDD

该项目包含一个定义明确的IOC结构,除技术依赖性外,还可以单位测试该服务模板的几乎每个部分。

在主层内部,您将找到对应用程序必不可少的接口,但是将它们的实现在自己的层中,是什么允许使用测试双打嘲笑,固执。

有一个简单的示例使用母体对象图案和构建器来简化单元测试并保持其可维护和清洁。

数据密集型微服务

此微服务模板随附SRP和SOC。鉴于CQRS的本质,您可以轻松地将此应用程序分开调整每个堆栈。

?得出数据

拥有多个数据存储使该系统成为派生的数据系统,这意味着您永远不会丢失数据,例如,您总是可以从另一个商店重建一个商店,例如,如果您丢失了在写入和读取数据库之间同步数据的事件,则可以始终从写入数据库中恢复此数据并重建读取存储。

域模型使用视图材料器来查询模型。将其作为查询堆栈中分离的组件保持完全控制,以完全控制映射属性并进行全面测试。

✉️消息经纪

考虑到数据存储的物理隔离,命令堆栈查询堆栈必须通信以同步数据。这是在此处使用消息经纪人完成的。

每个成功处理的命令都会创建一个事件,该事件已发表在消息经纪人中。同步背景过程订阅了这些事件,并负责更新阅读数据库。

?最终的一致性

一切都带有一些交易折扣。具有多个数据库的CQR的情况,为了维持高可用性和可扩展性,我们在数据库之间创建了不一致之处。

更具体地说,在两个数据库之间复制数据会产生最终的一致性,在特定的时刻,鉴于复制滞后滞后,尽管它们是临时的,但最终可以自我解决。

?参考

这是用于使该项目栩栩如生的可靠信息列表。

  • 设计密集型应用程序

  • 干净的建筑,罗伯特·马丁

  • 云应用程序体系结构指南

  • Microsoft .NET-企业的架构应用程序,第二版

下载源码

通过命令行克隆项目:

git clone https://github.com/fals/cqrs-clean-eventual-consistency.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 cqrs clean eventual consistency https://www.zuozi.net/31684.html

APIJSON.NET
上一篇: APIJSON.NET
Blog.IdentityServer
下一篇: Blog.IdentityServer
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务