使用 Kafka 作为事件存储效果很好,很容易将消息保留设置为无限制。
但我也看到过一些关于 Kafka 也被用于事件溯源的报告。这就是我对这如何可能感到困惑的地方。作为一个事件商店,我可以将我的消息塞进去。并根据需要使用或重播。
但是对于事件溯源,您很可能希望读取给定实体/聚合 ID 的事件。您当然可以使用分区,但这似乎滥用了这个概念,并且很难实际添加新实体,因为分区计数更多地位于静态方面,即使您可以更改它。有没有明智的解决方案?Apache Kafka 文档本身仅简要提及事件溯源。
最佳答案
关于您对其他问题的评论:
Thanks for the effort here, the answer is pretty off topic though. "Is it what you want to express really?" No. The question is not about DDD nor CQRS. I'm well familiar with those. I'm asking how or if I can use Kafka for eventsouring. Lets say I have 10 million entities, I might not want to have them all loaded in memory across servers at once. Can I load the data for a single aggregate using Kafka w/o replaying everything ?
答案是肯定的:您可以使用Kafka Streams来处理事件。您的流逻辑生成聚合并将它们存储在本地状态存储 (RocksDB) 中,以便生成的聚合不需要位于内存中,并且无需重播所有事件即可访问。您可以使用 Interactive Queries API 访问这些聚合。 。相当不错!此时,编写可重播的事件处理逻辑是 easier said than done ,但无论如何也不是不可能。
关于apache-kafka - Apache Kafka 中的事件外包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245092/
对待外包的态度 外包是来钱最快的方式,通过出售自己的时间和技能换取报酬,一定程度上与上班类似。创业后一直在做自己的产品,从习惯打卡软件:加一,到灵动岛软件:Island Widgets,然后Ma
抽象测试 public abstract class AbstractTest User user; @Before public void before(){ user = new User
我有一个简单的问题,尽管我进行了所有研究和尝试,但仍无法解决。我想将一个 css 属性移出到一个文件中。在拳头下方的代码片段中元素未正确显示在第二个位置。 我的 CSS 文件: .navBarItem
我想外包 tableView 的委托(delegate)和数据源协议(protocol)。所以我创建了一个新的TableViewController,为其创建了一个Cocoa Touch Class并
我的项目团队使用具有 Maven 结构的 GWT 开发了一个浏览器游戏: 家长 应用程序接口(interface) 域名 服务 查看 GWT主要用在 View 中(除了继承 View 的其他模块),我
我的大多数应用程序都是只有一个屏幕的应用程序(由于功能原因),有时会通过“ float ”弹出窗口进行扩展,这些弹出窗口基本上是添加到主布局的相对布局(包含其他 UI 元素),保留 UI 元素主布局在
我有一个项目,里面有一个项目,我开发了一堆非常抽象的类,所以我可以在其他项目中使用它。我应该如何以某种方式外包该包,以便最终可以通过 gradle 或 IDE 包含它? 此外,可重复使用的包内容仍在开
我想知道如何分离 JavaScript 和 HTML。当然,我包括 JS: 但是当我使用 JS 动态添加 HTML 标签到网站时: $( "#content" ).append(""); 然后 J