我目前正在研究Spark是否有助于提高系统中组件的可伸缩性和故障转移率,但我并不习惯这个库的概念。
我必须解决的一个简单用例:
此系统的延迟应该很低:如果我收到一个事件,它应该在不到X秒的时间内在数据库中。而且,评估"语义的规则"可以在不停止事件流的情况下更新事件。
目前,我使用一个简单的策略:事件只是存储在内存中(通过hazelcast),但只有一个节点可以关联它们之间的事件。它不具备容错能力。
看起来加入流可以帮助这种事情,但我湖混凝土的例子......
Spark可以处理这个用例,同时可以扩展和扩展。容错?我正在寻找关于流相关的一些指针,同时使用Spark(doc?example?)
进行容错谢谢!
答案 0 :(得分:1)
我假设你想使用Spark Streaming。
在Spark中执行此操作的一种可能性可能是使用updateStateByKey函数引入状态,这意味着实际实现状态。 您可以在官方文档中找到说明,这里是example。
另一种可能性是使用Spark Streaming中的内置窗口函数。再次查看官方文件。
答案 1 :(得分:0)
应该可以使用logstash和elasticsearch。在您的logstash配置中,您可以监控任何事件的唯一标识,并根据该标识对elasticsearch进行查询。它将在一次搜索中列出所有相关事件。