我的任务是为数据转换管道开发架构。 从本质上讲,数据从一端进入,然后通过各种内部系统进行路由,以获取不同的形式,然后到达目的地。
The main objectives are -
- Fault Tolerant. The message should be recoverable if one of the intermediate systems were down.
- Replay/ Resequence - The message can be replayed from any stage and it should be possible to recreate the events in an idempotent manner.
我有几个自定义解决方案要解决
- 实现检查点系统,其中可以在每个检查点的入口点和导出点记录消息,以便我们知道故障发生的位置。
- 实现一种恢复机制,可以转到记录的存储(数据库、日志文件等)并以编程方式重建事件。
但是,我觉得这是一个相当标准的问题,具有明确的解决方案。
因此,我欢迎任何关于合适架构的想法,任何工具/包/模式的引用等等。
谢谢
最佳答案
Akka是显而易见的选择。当然 Scala 版本更强大,但即使使用 Java 绑定(bind)你也可以实现很多。
我觉得你可以关注CQRS方法和使用Akka Persistence模块。在这种情况下,很容易重播任何事件序列,因为您始终有一个持久的日志。
通常,Actor 模型使用 supervision 为您提供容错能力.
Akka Clustering将为您提供所需的可扩展性。
将 Akka 集群与 Akka Persistence 和 Cassandra 一起使用的非常棒的示例 - https://github.com/boldradius/akka-dddd-template (不幸的是只有 Scala)。
关于java - 用于重构事件的可扩展架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550925/