我有一个用例,在这个用例中,应用程序的输入是成批的XML文件。例如,每晚的一批银行交易。我试图看看是否可以使用事件源来创建事件日志。根据我到目前为止所读到的内容,这些示例似乎是基于用户驱动的输入(单击流、用户界面的更新等等)。使用分布式日志机制(如Kafka)的事件来源是否是基于批/文件的输入的有效方法?
以下是我想采取的办法:
如果这种方法效率不高,还有哪些其他可供选择的方法可用于对这类输入进行分布式处理?
发布于 2017-07-08 03:32:35
您的输入是来自看起来像事件存储的东西吗?例如,一个数据库,作为一个永恒的来源的真相,附加的事件。
--如果是这样的话,您就有了使用事件源的基础,另外还有CQRS。(它们不是一回事)
你必须意识到的是所谓的写方/命令方.已经为你做好了。
带有事务的传入一批XML文件..。每个事务已经是一个事件。这听起来不像你需要把这些转化成事件,然后把这些放入卡夫卡。你可以把它们映射到卡夫卡中,然后所有主题的订阅者都可以做相应的事情。
有效地实现了事件源+ CQRS的读取端。
在实际意义上是,除非您要在编写端(生成/接收用户输入的地方)做一些事情.我不会太担心事件来源的的微妙之处,因为它与DDD和CQRS有关。我将简单地看作是将数据分发给多个服务的一种方式。
并确保只在收到这些XML文件时才会考虑缓存、搜索引擎等的更新方式。
发布于 2017-07-08 12:38:24
如果这些xml文件中的每个单独事件都有时间戳,那么您可以将输出到Kafka看作是延迟到达事件的一股动力。卡夫卡允许你在这些信息上设定事件时间,作为事件的时间戳,而不是卡夫卡摄入的时间。这样,任何下游处理应用程序(如Kafka流)都可以将事件置于正确的时态上下文中,并聚合到适当的时间窗口或会话窗口中,甚至可以与其他实时输入连接。
https://stackoverflow.com/questions/44980176
复制