- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究事件溯源和命令/查询隔离,我有一些疑问,希望有更多经验的人能轻松回答:
我制作了一个序列图来更好地说明所有这些问题
(抱歉英语不好)
最佳答案
If my command handler generates more than one event to store, how do you guys push all those events atomically to the event store?
最合理的事件存储实现将允许您将多个事件批处理到同一个事务中。
In many articles I read people suggest using optimistic locking to write the new events generated, but in my use case I will have around 100 requests / second.
如果您有许多并行线程试图维护一个复杂的不变量,则说明出现了严重错误。
对于不希望建立或保持任何不变量的“事件”,您只是将内容写入流的末尾。换句话说,您可能不会尝试将事件写入流中的特定位置。所以你可以使用批处理来减少冲突写入的数量,以及一个简单的重试机制。实际上,您使用的是与并发写入者插入队列时出现的相同类型的“扇入”模式。
对于建立/维护不变量的情况,通常不会有很多并发编写器。相反,特定的作者有权编写事件(想想“分片”);那里的并发控制主要是为了避免在异常情况下造成困惑。
How to deal with the fact that the command handler can crash after storing the events in the event store but before publishing them to the event bus?
使用拉取而不是推送作为主要的订阅机制。确保订阅者可以安全地处理重复的消息(又名“幂等”)。当您需要严格排序事件时,不要使用可以重新排序事件的消息订阅。
How you guys deal with the eventual consistency in the projections? you just live with it?
差不多。 View 和报告中包含元数据信息,让您知道报告在哪个“时间”固定点是准确的。
除非您在使用报告时锁定所有编写者,否则任何数据都有可能过时,无论您使用的是事件还是其他数据模型,无论您是否使用单一数据模型或几个。
这都是权衡的一部分;我们接受报告时间和当前时间之间会有更大的窗口,以换取更低的响应延迟、“不可变”的事件历史等。
should a command handler work with more than one aggregate?
可能不是 - 这与永远不会是一回事。
通常的框架是这样的:聚合不是域建模模式,就像实体一样。这是一种生命周期模式,用于确保我们一次所做的所有更改都是一致的。
如果您发现您希望命令处理程序同时修改多个域实体,并且这些实体属于不同的聚合,那么您真的选择了正确的聚合边界吗?
有时您可以做的是使用一个命令处理程序来管理多个事务,并在每个事务中更新不同的聚合。但从长远来看,拥有两个不同的命令处理程序可能会更容易,每个处理程序接收命令的副本并独立决定要做什么。
关于concurrency - Event Sourcing/CQRS对聚合、原子性、并发和最终一致性的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65481903/
我在 Mac OsX 10.11 上使用 Xcode 7.0.1 (7A1001) 我使用 carthage 0.9.2 通过以下购物车文件下载reactivecocoa github“Reactiv
我正在将一个对象从属性“模型”(我从 Laravel 中的 Blade 属性模型中获得)分配给数据属性模型。后来数据属性模型发生变化,因为它绑定(bind)到表单输入字段。但 Prop “模型”也发生
当我更新数组内对象的属性然后作为组件的 Prop 传递时,在 svelte 中触发 react 性的正确方法是什么? let items = [{ id: 1, name: 'first'
我是 DRY principle 的坚定拥护者: Every piece of knowledge must have a single, unambiguous, authoritative rep
我正在实现一个需要以下功能的线程: 及时响应终止请求 推送消息 在等待消息时保持对 SendMessage 请求的响应 我对消息泵的初始实现使用了 GetMessage,如下所示: while not
在我的应用程序中,用户获得了一份已到达她的文档列表,并且可以对每个文档执行操作。 文件是分批提交的,当这种情况发生时,列表会增加。这一切都很好,这是预期的行为,但最好有一个按钮“暂停实时数据”,它会忽
我有一个属性为 的数据对象 displaySubtotal 我可以通过以下方式更新该属性的值: data.displaySubtotal = numPad.valueAsAString(); 我的方法
我需要一个垂直 slider 输入。由于内置的 sliderInput 函数无法做到这一点,因此我选择自己实现。根据this thread可以 (I) 使用 CSS 旋转 sliderInput
我正在从自定义用户权限管理系统迁移到 Alanning:roles v2.0 .我有一个非常基本的结构: 基本用户 用户组,每个用户组都有特定的设置。我将它们存储在一个“组”集合中。 管理群组的用户的
Shiny 中的响应式(Reactive)表达式将更改传播到需要去的地方。我们可以使用 isolate 来抑制一些这种行为。 ,但是我们可以抑制基于我们自己的逻辑表达式传播的更改吗? 我给出的例子是一
是否有(或可能有) react 性 Parsec (或任何其他纯函数式解析器)在 Haskell 中? 简而言之,我想逐个字符地为解析器提供数据,并获得与我提供的足够多的结果一样多的结果。 或者更简单
HTML(JADE) p#result Lorem ipsum is javascript j s lo 1 2 4 this meteor thismeteor. meteor input.sear
我有一个被导入函数更改的对象。 https://svelte.dev/repl/e934087af1dc4a25a1ee52cf3fd3bbea?version=3.12.1 我想知道如何使我的更改反
我有一个YUV 420半平面格式的图像,其中字节以这种方式存储: [Y1 Y2 ... [U1 V1.... Yk Yk+1...] Uk' Uk'+1] 其中Y平面的大小是UV平面的两倍,并
如何使用 ReactiveCocoa 订阅从 NSMutableDictionary 添加和删除的对象?另外,我想在它发生变化时广播通知。我的猜测是可以使用 RACMulticastConnectio
我正在构建一个带有多个选项卡的应用程序,其中一些选项卡涉及过多的计算,而另一些选项卡的计算速度很快。一个允许用户在 react 性或手动更新之间进行选择的复选框,与“刷新”按钮结合使用,将是理想的选择
我知道您可以在获取集合时使用 reactive: false 关闭 react 性。如何在内容可编辑区域内的集合字段中实现相同的效果?示例: Template.documentPage.events(
我想在 z3 中表示一个哈希函数,比如 SHA(x)。在做了一些研究之后,似乎 z3 不能很好地支持注入(inject)性,所以我不能有像这样的约束(虽然我意识到这并不是严格意义上的碰撞,但作为一种启
我正在解决一个问题,我想在仪表板中将数据显示为图表(通过 perak:c3 )和表格(通过 aslagle:reactive-table )。我的问题是数据是从 MongoDB 中的集合中提取的,它的
我的 ViewModel 中有这个函数,它返回一个信号,但内部 block 不起作用,我尝试添加断点,但它没有中断。这是我的代码。 func executeLoginAPI() -> RACSigna
我是一名优秀的程序员,十分优秀!