我目前正在评估设计/实现事件源CQRS系统设计架构方法的选项。由于我们想将Apache Kafka用于其他方面(正常的发布子消息流处理),下一个逻辑问题是,“我们可以将Apache Kafka存储用作CQR的事件存储吗?”?,或者更重要的是,这是一个明智的决定吗?
现在我对此不确定。这一消息来源似乎对此表示支持:https://www.confluent.io/blog/okay-store-data-apache-kafka/
另一个消息来源建议:https://medium.com/serialized-io/apache-kafka-is-not-for-event-sourcing-81735c3cf5c
在我当前的测试/实验中,我遇到了与第二个来源描述的问题类似的问题,这些问题是:
尽管这个问题有点开放,但实际上是这样的:您是否使用Kafka作为事件源系统上的主事件存储?您如何处理从命令历史记录中重新组合实体实例的问题(假设该主题有数百万个条目,扫描所有集合不是一个选项)?您是否只使用了1个分区,从而牺牲了潜在的并发消费者(假设订单保证仅限于特定的主题分区)?
任何具体或一般的反馈都将不胜感激,因为这是一个复杂的主题,需要考虑几个因素。
提前谢谢。
编辑6年前这里有一个类似的讨论:将Kafka用作(CQRS)事件存储。好主意当时的共识也存在分歧,很多人认为这种方法很方便,他们提到Kafka是如何处理大量实时数据的。然而,问题(至少对我来说)与此无关,而是与Kafka重建实体状态的能力有多不方便有关——要么将主题建模为实体实例(主题数量呈指数级增长是不需要的),要么建模主题或实体类型(主题内的事件数量使重建非常缓慢/不实用)。
我在几个使用Kafka作为长期存储的项目中,Kafka对此没有问题,特别是最新版本的Kafka,他们引入了称为分层存储的东西,它使您可以在Cloud环境中将旧数据传输到较慢/更便宜的存储。
您不应该太担心事务,在今天的IT中,还有其他概念需要处理,例如事件源、[边界上下文][3]是的,您在设计应用程序时应该有所不同,如何?,这段视频对此进行了解释。
但你们是对的,你们对查询这些数据的选择是有限的,最简单的方法是使用Kafka Streams和KTable,但这将是一个键/值数据库,所以你们只能通过主键询问有关数据的问题。
你的下一个最佳选择是在Akka投影等框架的帮助下实现CQR的查询部分,我写了一篇关于如何将Akka投影与Elasticsearch结合使用的博客,你可以在这里和这里找到。
您的理解基本正确:
所有这些都不会阻止应用程序使用Kafka作为他们国家的真理来源,只要:
samza和(IIUC)kafka都用日志压缩的kafka主题返回其状态存储。在kafka offset的内部,消费者组管理存储为一个日志压缩主题,代理在内存中持有“物化视图”-当消费者偏移分区的所有权在代理之间移动时,新领导会重放分区以重建此视图。
我正在实验Kafka流,我有以下设置: null 有什么方法可以让我的KTable从我的主题中“继承”保留策略吗?这样当记录从主主题过期时,它们在KTable中就不再可用了? 我担心将所有记录转储到KTable中,并使StateStore无限增长。 我能想到的一个解决方案是转换成一个窗口流,其跳跃窗口等于记录的TimeToLive,但我想知道是否有更好的解决方案,以更原生的方式。 多谢了。
这个问题类似于将Kafka用作CQRS EventStore。好主意?,但更具体的实现。当我有数千个事件“源”(DDD中的聚合根)时,如何使用kafka作为事件存储?正如我在链接问题和其他一些地方读到的,我会有每个来源的主题的问题。如果我将事件按类型拆分到主题中,它将更容易使用和存储,但我需要访问特定源的事件流。如何用Kafka做事件来源?
操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成
问题内容: 似乎Linux VFS缓存在默认情况下无法与FUSE文件系统一起使用。例如,“读取”调用似乎被系统地转发到FUSE文件系统。 我在FUSE专用的远程文件系统上工作。我需要一个非常激进的缓存。 我需要实现自己的页面缓存吗?还是可以为此特定的FUSE文件系统激活Linux VFS缓存?还是有人知道一个好的代理/缓存FUSE文件系统(或者某种C库可以做到这一点,而无需重新发明轮子)? 奖励问
本文向大家介绍kafka 有几种数据保留的策略?相关面试题,主要包含被问及kafka 有几种数据保留的策略?时的应答技巧和注意事项,需要的朋友参考一下 kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。
OnStrategyStart – 在策略启动时调用,在第一笔行情到达之前 OnStrategyStop – 在策略结束时调用,在最后一笔行情之后 OnBarOpen – 在Bar行情最前沿调用(如,在日线数据开盘时买入) OnBar – 在所有行情的后沿调用(如,在日线数据收盘时买入) OnPositionOpened – 当一个新的交易开仓确认后调用 OnPositionChanged – 当