Apache spark 分布式处理-Apache Spark、Flink、Samza、Siddhi、Hazelcast Jet

Apache spark 分布式处理-Apache Spark、Flink、Samza、Siddhi、Hazelcast Jet,apache-spark,complex-event-processing,stream-processing,hazelcast-jet,Apache Spark,Complex Event Processing,Stream Processing,Hazelcast Jet,设想一个处理系统从其他内部系统或从internet公开的REST端点接收数据。一旦接收到,一组(后台)任务(根据db或其他Web服务计算输入响应)并行处理数据,一个接一个的顺序处理,或者在几个并行任务完成时处理一些任务。最后一个(边缘)任务可以将结果发送到外部Web服务或存放到数据库表中 这些任务可以设计为一个简单的服务,它处理由其他此类服务传递给它的消息队列中的消息,并将结果发送到另一个队列进行进一步处理。系统可以使用流代替队列进行处理。我发现这种方法(编写由MessageBroker连接的服

设想一个处理系统从其他内部系统或从internet公开的REST端点接收数据。一旦接收到,一组(后台)任务(根据db或其他Web服务计算输入响应)并行处理数据,一个接一个的顺序处理,或者在几个并行任务完成时处理一些任务。最后一个(边缘)任务可以将结果发送到外部Web服务或存放到数据库表中

这些任务可以设计为一个简单的服务,它处理由其他此类服务传递给它的
消息队列
中的消息,并将结果发送到另一个队列进行进一步处理。系统可以使用流代替队列进行处理。我发现这种方法(编写由MessageBroker连接的服务)必须重复处理它们的故障场景、扩展和吞吐量


是否有任何特定的框架(如Flink或Samza或Storm或Airflow或Siddhi或Hazelcast Jet)来实现这些任务,并将它们部署到负责扩展和故障处理的集群中,而不是将每个任务作为详细的服务来实现(例如,在春季)独立扩展它们。

根据您的描述,Hazelcast Jet似乎可以在一个部署的作业/管道中完成这一切:从REST端点接收数据,从侧面输入(“db或其他Web服务”)丰富数据,以一系列步骤处理数据,其中每个步骤都以数据并行方式执行,最后将数据推送到另一个队列


这样的作业可以在一组机器上运行无限长的时间。我看到的唯一问题是故障后重新启动,因为REST数据源不可重放。

从您的描述来看,Hazelcast Jet似乎可以在一个部署的作业/管道中完成这一切:从REST端点接收数据,从侧面输入(db或其他Web服务)丰富数据,以级联的方式处理数据,每个步骤以数据并行的方式执行,最后将数据推送到另一个队列


这样的作业可以在一组机器上运行无限长的时间。我看到的唯一问题是故障后重新启动,因为REST数据源不可重放。

REST请求可以流式传输到诸如Redis之类的分布式系统中,Jet可以从中获取作业。然而,您认为,考虑到这是一个关键系统,并且不会丢失一个事务,这可以设计为在Jet集群中以故障安全的方式运行吗?因为Hazelcast本身不会将任何内容持久化到磁盘,而是只将数据保存在内存中。通过跨多台机器的复制,您可以获得安全性。就可靠、可重放的流存储而言,Kafka是当前的标准。Redis的功能与Hazelcast的功能处于同一级别,它是内存存储。我已将Redis持久化数据设置为磁盘,并启用了复制功能,因此,如果主从设备出现故障,将选择主设备并继续为请求提供服务。我对Jet或其他框架故障处理方面更感兴趣。所有分布式系统都具有这种故障恢复能力,包括Hazelcast。只要你能提供一个可重放的数据源,Jet就可以为你提供一次处理的保证。REST请求可以流式传输到像Redis这样的分布式系统中,Jet可以从中找到它的作业。然而,您认为,考虑到这是一个关键系统,并且不会丢失一个事务,这可以设计为在Jet集群中以故障安全的方式运行吗?因为Hazelcast本身不会将任何内容持久化到磁盘,而是只将数据保存在内存中。通过跨多台机器的复制,您可以获得安全性。就可靠、可重放的流存储而言,Kafka是当前的标准。Redis的功能与Hazelcast的功能处于同一级别,它是内存存储。我已将Redis持久化数据设置为磁盘,并启用了复制功能,因此,如果主从设备出现故障,将选择主设备并继续为请求提供服务。我对Jet或其他框架故障处理方面更感兴趣。所有分布式系统都具有这种故障恢复能力,包括Hazelcast。只要您能提供一个可重放的数据源,Jet就能为您提供一次处理的保证。