首页 文章
  • 6 votes
     answers
     views

    CQRS,事件采购和扩展

    很明显,基于这些模式的系统很容易扩展 . 但我想问你,究竟是怎么回事?关于可伸缩性我几乎没有问题: 如何扩展聚合?如果我要创建 aggregate A 的多个实例,如何同步它们?如果其中一个实例处理该命令并创建一个事件,那么该事件应该传播到该agregate的每个实例? 不应该有一些业务逻辑存在要求的agregate实例?因此,如果我发出适用于 aggregate A (ORDERS) 的...
  • 91 votes
     answers
     views

    使用RDBMS作为事件源存储

    如果我使用RDBMS(例如SQL Server)来存储事件源数据,架构可能是什么样的? 我从抽象的意义上看到了一些变化,但没有具体的 . 例如,假设有一个“产品”实体,对该产品的更改可以采用以下形式:价格,成本和描述 . 我很困惑我是否: 有一个"ProductEvent"表,其中包含产品的所有字段,其中每个更改表示该表中的新记录,并在适当时加上"who, wha...
  • 0 votes
     answers
     views

    如何通过事件采购和CQRS处理预测错误?

    我想使用事件源和CQRS,所以我需要预测(我希望我使用正确的术语)来更新我的查询数据库 . 我该如何处理数据库错误? 例如,我的一个查询缓存数据库不可用,但我已经更新了其他数据库 . 因此,当它恢复业务时,不可用的数据库将不会与其他数据库紧密相连 . 它如何知道它必须运行例如来自事件存储的最后10个域事件?我想我必须存储有关数据库当前状态的信息,但是如果该数据库状态存储失败怎么办?任何想法,最佳实...
  • 9 votes
     answers
     views

    聚合应该是事件处理程序

    在研究了大量材料和示例之后,我目前正在开始第一次尝试DDD / CQRS / ES系统 . 1)我已经看到了事件源代码示例,其中Aggregates是事件处理程序,并且它们的每个事件的Handle方法都会改变对象实例上的状态(它们为将改变状态的事件实现IHandleEvent <EventType>接口) 2)我还看到了一些例子,其中Aggregates看起来就像是对域进行建模的普通经...
  • 3 votes
     answers
     views

    通过多个聚合重建来自域事件的查询

    我正在使用DDD / CQRS / ES方法,我有一些关于建模我的聚合和查询的问题 . 作为示例,请考虑以下情形: 用户可以创建WorkItem,更改其 Headers 并将其他用户与其关联 . WorkItem具有参与者(关联用户),参与者可以向WorkItem添加动作 . 参与者可以执行操作 . 我们假设用户已经创建,我只需要userIds . 我有以下WorkItem命令: Creat...
  • 4 votes
     answers
     views

    没有DDD的CQRS事件采购

    我正在构建一个非常以数据为中心的系统 . 我有大型的分层数据集,但没有业务规则 . 系统的输出来自对数据和一些报告进行的一些计算 . 我需要有一个完整的审计跟踪(出于监管原因),并能够从过去的任何一点对数据集运行计算 . 出于这些原因,我认为使用CQRS的事件源系统是可行的方法 . 我见过的所有例子都围绕创建聚合来做ES . 我遇到的问题是因为每个数据都是一个大的相关集合,我会有少量的大量聚合 ....
  • 23 votes
     answers
     views

    使用事件采购和CQRS有哪些缺点?

    事件来源和CQRS很棒,因为它让开发人员陷入了一个预先建模的数据库,开发人员必须在应用程序的生命周期内使用该数据库,除非有大数据迁移项目 . CQRS和ES还有其他好处,如扩展事件存储,审计日志等已经遍布互联网 . But what are the disadvantages ? 在研究和编写小型演示应用程序之后,我可以想到以下一些缺点 Complex: 有人说ES很复杂 . 但是我的查询语...
  • 4 votes
     answers
     views

    事件采购/ CQRS阅读模型 - 预测

    我在AWS Lambda上运行了一个基于微服务的应用程序 . 其中两个微服务,最关键的微服务,使用事件源/ cqrs . Background: (this is also for me to organize my thoughts) 我正在使用this library并在DynamoDB中存储事件并在AWS S3中进行投影 . 写入部分就像一个魅力:每个命令调用从DynamoDB加载聚合的当前...
  • 2 votes
     answers
     views

    CQRS(事件采购)读取多个聚合

    我有2个聚合,有一对多关系 . 例如,我有一个问题列表,我想将其中的一些添加到questonaires,其中一些是强制性的,必须添加到所有问卷中,其中一些不是,并且问卷的创建者选择它们 . 假设我正在使用事件采购和CQRS . 我创建问题列表,我想将问题添加到问卷中 . 通常我会这样做 questionaire.AssignQuestions(questions.Where(q => q.i...
  • 0 votes
     answers
     views

    lagom如何识别哪个事件是针对哪个实体的

    根据Lagom概念上的一个讨论,我在这里读到link 实体不会在任何地方持久存在 - 这就是事件源的重点,您只需存储事件,这些事件可以非常简单地实现,易于分发,并且具有非常高的性能,因为它只是一个追加操作 . 当需要加载实体时,将加载该实体的事件,并且您声明处理事件的事件处理程序然后处理每个事件以生成当前实体状态 . 我的问题是lagom如何识别哪个事件属于哪个实体 . 让我们举一个例子:我有...
  • 11 votes
     answers
     views

    使用akka-persistence的CQRS Event Sourcing实现

    我想使用akka-persistence事件采购功能,以便在我的新项目中实现CRQS事件采购理念 . 问题是,除了文档(http://doc.akka.io/docs/akka/snapshot/scala/persistence.html),我找不到任何好的示例或指南如何处理它 . 该文档在解释体系结构的所有构建块(如处理器,视图,通道)方面非常出色,但没有解释如何将它们组合在一起 . 所以问题...
  • 0 votes
     answers
     views

    将CQRS应用于信用卡收费(使用AKKA)

    鉴于我对CQRS有点困惑,我想进一步了解它是以下场景: 我有一个向用户的信用卡收费的演员 . 为此,请联系执行操作的银行外部服务,获取确认结果 . 我想知道如何将其应用于CQRS? 需要在此处写入的信息是特定用户已收取一定金额 . 因此生成的事件是Charged(UserID,Card,Amount) . 这样的事情 . 问题是,我特别使用AKKA看到的所有示例都只会在验证命令后生成事件,以便它保...
  • 0 votes
     answers
     views

    了解CQRS实施(可选择使用AKKA视角)

    我对CQRS很新 . 我通过AKKA学到了它 . 然而,AKKA提供了实施它的方法,它不是教你CQRS . 因此,人们最终可能会做出愚蠢的事情 . 我想澄清一些概念 . 假设我是一个带购物篮和库存的网站(我们还可以添加信用卡处理器) . 在akka术语中,我可能有一个代表购物篮的演员和库存的演员 . 在任何情况下,我在谈论演员与否并不是真正的关系 . 重要的是,我有独立的处理单元异步操作并通过消息...
  • 3 votes
     answers
     views

    在使用Akka进行事件采购时如何处理CQRS中的Q?

    与Event Sourcing结合使用时,有没有一种很好的方法来进行CQRS? 我想到的一种方法是在Command处理程序(持久化Actor)中执行此操作,只要将Command转换为事件并持久保存到事件日志(这些事件代表Write模型),我就会使用事件总线到感兴趣的订阅查询actor,以便他们可以更新他们的Query模型 . 我想的另一种方式(如果期刊支持它)是使用持久性查询(通过Akka Str...
  • 8 votes
     answers
     views

    Akka Persistence Query事件流和CQRS

    我正在尝试在ES-CQRS架构中实现读取端 . 假设我有一个像这样的持久性演员: object UserWrite { sealed trait UserEvent sealed trait State case object Uninitialized extends State case class User(username: String, password: Strin...
  • 1 votes
     answers
     views

    CQRS微服务:如何处理关系/验证?

    Scenario: 我有2个微服务(内部都使用CQRS事件采购) 微服务1管理联系人(=聚合根) 微服务2管理发票(=聚合根) 发票的收件人必须是有效的联系人 . CreateInvoiceCommand: { "content": "my invoice content", "recipient": "...
  • 3 votes
     answers
     views

    什么导致EventStore如此容易地抛出ConcurrencyException?

    使用JOliver EventStore 3.0,开始使用简单的样本 . 我有一个使用NServiceBus的简单发布/子CQRS实现 . 客户端在总线上发送命令,域服务器接收并处理命令并将事件存储到事件存储,然后由事件存储的调度程序在总线上发布 . 然后,读取模型服务器订阅这些事件以更新读取模型 . 没什么好看的,几乎是书本 . 它正在工作,但只是在简单的测试中,当事件存储到EventStore...
  • 4 votes
     answers
     views

    Jonathan Oliver的EventStore是否积极发展? [关闭]

    我正在开始一个将在Windows Azure上托管的新项目 . 我使用RavenDb作为后端,我想使用CQRS和事件采购 . 我阅读了Jonathan的EventStore的好评,它完全适合我的架构,因为它是一个薄层,可以使用RavenDb作为商店 . 现在,我注意到3.0版本(最新的官方版)已经有一年了,新的3.1还没有发布(分支中有一些活动) . 我想推荐3.1版本,因为它集成了CommonD...
  • 2 votes
     answers
     views

    EventStore:学习如何使用

    我正在尝试学习EventStore,我喜欢这个概念但是当我尝试在实践中应用时,我会陷入同样的困境 . 我们来看看代码: foreach (var k in stream.CommittedEvents) { //handling events } 两个问题: 当应用程序在某些维护后启动时,我们如何以安全的方式书签哪些事件开始读取?有使用的模式吗? 一旦事件全部被消耗,循环结束.....
  • 1 votes
     answers
     views

    Lagom框架/持久读取端/ Cassandra / DataStax /表未配置

    我成功编译了http://www.lagomframework.com/documentation/1.0.x/ReadSide.html的代码示例 它是关于CQRS架构的读取端 . 只有问题:它没有运行 . 看起来像配置问题......此时Lagom的官方文档非常不完整 . 错误说: java.util.concurrent.CompletionException: java.util.conc...
  • 3 votes
     answers
     views

    了解AKKA持久性以及ES和CQRS原则

    我最近观看了几个关于ES和CQRS模型的视频以及我几乎没有关于AKKA持久性的讨论 . 我知道它们是什么,但我在编写将要执行的实际代码时遇到问题 . 我有几个问题 . 我应该如何进行视图和事件堆栈通信?是否会在视图和相同持久性ID的持久actor之间传递事件?什么是持久的演员和视图负责根据模型? 编辑:我应该在哪里放置我的业务逻辑?根据模型我应该写在写,但如果我需要检查读取的东西,以验证cmd怎么...
  • 7 votes
     answers
     views

    CQRS存储库/事件发布者

    我正在使用CqrsLite进行CQRS式项目 . 具体Repository实现的Save方法如此(省略了不相关的行) . public void Save<T>(T aggregate, int? expectedVersion = null) where T : AggregateRoot { if (expectedVersion != null &...
  • 5 votes
     answers
     views

    CQRS - 允许使用事件和其他信息源构建读取模型的依赖关系

    我的问题与CQRS(命令和查询责任隔离)和构建阅读模型(视图)的机制有关 . 据我所知,读模型是由事件处理程序构建的 . 这些处理程序(也称为非规范化程序)接收域事件并使用这些事件来构建不同的数据视图 . 特定事件包含有关域模型中所做更改的信息 . 我认为这些信息在某些情况下不足以构建视图 - 即没有更改的字段,在这种情况下没有更改的实体丢失等 . 所以我的问题是: 是否允许负责构建读取模型的非规...
  • 5 votes
     answers
     views

    在CQRS(命令处理程序或域事件处理程序)中保存域以写入数据库的最佳位置

    我正在研究CQRS,我看到了一些源代码(Greg Young的SimpleCQRS和Mark Nihjof的) . 我仍然对命令和域事件感到困惑 . 我们是否始终需要在域事件处理程序中将域保持为“写入数据库”?如果我调用代码将域保存到命令处理程序中的数据库(通常通过域存储库),然后让域事件处理程序处理其他东西(例如:更新读取模型和执行其他服务,如电子邮件通知),这是很常见的 . 谢谢 .
  • 2 votes
     answers
     views

    DDD / CQRS:在哪里坚持

    我们最近开始使用DDD和CQRS(无事件采购)的概念开发应用程序 . 我仍然有点困惑,因为在哪里调用存储库来保持我的聚合根 . 我是在命令处理程序中执行此操作还是在事件处理程序中执行此操作?
  • 8 votes
     answers
     views

    从CQRS访问Web服务

    假设我有一个基于CQRS的系统,我的域需要来自外部Web服务的一些数据来做出决定 . 我该如何正确建模? 我可以想到两个选择: 命令处理程序运行域逻辑,域本身调用Web服务 . 一旦获得响应,它就会将适当的事件附加到当前聚合并存储它们 . 该域基本上“等待”Web服务返回 . 命令处理程序运行域逻辑,域立即发出域内部更多数据所需事件 . 进程管理器对此作出反应,与Web服务进行通信,对结果...
  • 4 votes
     answers
     views

    CQRS中写入侧DDD中的时间序列/时间数据

    我无法理解如何支持DDD中的时间序列/时间数据以及如何使用CQRS在写入端处理它 . 最终,我想找到一个与事件采购相关的解决方案 . 以温度预报为例,温度变化也会影响区域/位置的预测能量需求 . 假设温度预测可以进入未来(基于历史数据),将所有预测加载到 Location 聚合中我认为如果不对加载的数据量施加一些限制将是不切实际的 . What is a good/recommended appr...
  • 3 votes
     answers
     views

    需要DB调用的CQRS命令验证

    在CQRS中,验证需要数据库调用的命令的最佳方法是什么?例如,我有 Order 聚合验证命令 CommitOrder 并且除非有足够的库存,否则我不想接受此命令 . 在这种情况下,命令处理程序如何检查我是否有订单商品的库存或没有?我可以从写入端查询读取端吗? 注意:我正在使用akka来实现
  • 0 votes
     answers
     views

    akka持久化演员测试事件生成

    通过CQRS命令的定义可以/应该验证并且最终甚至拒绝(如果验证没有通过) . 作为我的命令验证的一部分,我检查是否真的需要状态转换 . 因此,让我们举一个简单的虚拟示例:actor处于状态A.命令被发送到actor以转移到状态B.命令被验证并且在结束时生成事件 StateBUpdated . 然后发送完全相同的命令以转移到状态B.再次命令得到验证,并且在验证期间确定不会生成任何事件(因为我们已经...
  • 7 votes
     answers
     views

    处理CQRS读取端的无序事件

    我已经阅读了Jonathan Oliver关于处理无序事件的好帖子 . http://blog.jonathanoliver.com/cqrs-out-of-sequence-messages-and-read-models/ 我们使用的解决方案是将消息出列并将其置于“保持表”中,直到收到具有先前序列的所有消息 . 当收到所有先前的消息后,我们将所有消息从保留表中取出,并通过适当的处理程序依次运...

热门问题