我们目前正在设计大数据处理链。我们目前正在研究NiFi / MiNiFi来摄取数据,进行一些规范化,然后导出到数据库。标准化之后,我们计划对数据进行分叉,以便获得实时供稿,供使用不同过滤器的客户使用。
我们正在研究将NiFi和/或Kafka都发送给客户端的数据,但是两者都存在设计问题。
借助NiFi,我们正在考虑添加一个Websocket服务器,该服务器侦听新连接并将其过滤器添加到自定义有状态处理器块。如果该块与用户过滤器匹配,则该块将过滤数据并使用适当的套接字ID对其进行标记,然后生成X个要发送到匹配客户端的流文件。该部分似乎可以正常工作,但如果客户端连接在短时间内断开,我们也希望能够将数据排队。
作为替代方案,我们正在研究Kafka,但它似乎不支持动态数量的客户端连接的想法。如果我们使用kafka流过滤数据,那么每个客户需要1个主题吗?最终可能会超出我们的Zookeeper实例。或者,我们可以使用NiFi进行过滤,然后插入类似Kafka work queue with a dynamic number of parallel consumers的不同分区中。但是受支持的分区数量仍然有限制吗?更不用说我们将不得不扩大生产者和消费者的负担,以便在我们向上或向下缩放时从正确的分区读取内容。
我是否缺少NiFi或Kafka的任何产品?还是有另一个我应该考虑进行过滤后的数据发送的项目?