不使用flink这类框架,如何自己实现分布式流数据处理

同事用flink写的服务,wifi和人关联查询一个wifi数据kafka流,一个人的数据kafka流,按WIFI相机的设备号和时间关联查询,最后结果写入ClickHouse,如果不用flink这类框架,我想了一个实现分布式流处理的方法代码写起来比用flink可能会繁琐一些,但应该也能做到可靠和高效。
各工作节点用同一个groupId消费同一个topic。
然后数据按设备ID分区,也就是分给各工作节点处理,某个节点遇到一个设备ID,就查自己的缓存,判断由谁处理,如果是分配给自己的就自己处理,如果是分配给别的节点的,就发给别的节点处理,如果缓存里没有,就发给主节点,由主节点按一定规则平均分配,主节点记下缓存,也把分配结果发给各子节点。
缓存可以减少通信次数
节点间发数据,攒够一定数量再发,以减少通信次数,这个数量可以调整。
通信采用socket短连接,提高可靠性。
由于是按设备ID和时间关联,分区后,属于同一个ID的数据不可能被分在两个机器,所以有关联的数据一定在同一个机器,不在同一个机器的数据一定没有关联。这样就可以做到关联查询了。
自己实现相对繁琐,好处1.不依赖hadoop和flink环境。2.方便和其他非flink服务一样用StatHub管理。3.对flink API不够精通,用错API的话会写出性能低下的flink程序,自己写,性能取决于你的水平。

 

相关文章

Flink-core小总结1.实时计算和离线计算1.1离线计算离线计算的...
2022年7月26日,Taier1.2版本正式发布!本次版本发布更新功能...
关于Flink相关的概念性东西就不说了,网上都有,官网也很详尽...
最近准备用flink对之前项目进行重构,这是一个有挑战(但我很...
Thispostoriginallyappearedonthe ApacheFlinkblog.Itwasre...
Flink配置文件对于管理员来说,差不多经常调整的就只有conf下...