zoukankan      html  css  js  c++  java
  • 不使用flink这类框架,如何自己实现分布式流数据处理

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

    ================= 分隔 ===========================================================================================================

    复杂的程序自己写不太现实,简单的可以自己实现。同事用flink写的另一个程序,比较简单,为了补某天缺失的数据,又不想折腾flink和服务器,就随手用SpringBoot写了一个,没用flink但功能和同事用flink写的一样,扔到StatHub上,跑了半小时,把缺失的数据补上了。

  • 相关阅读:
    老年人微信教程手绘版|微信入门教程1
    微信网页版朋友圈在哪?怎么找不到
    如何用<dl>标签做表格而不用table标签
    600万个!520元的微信红包发了这么多!
    微信红包最高能发520元啦!只限今天!
    微信和WeChat的合并月活跃账户数达到7.62亿了
    excel隔行选中内容如何操作
    各大公司广泛使用的在线学习算法FTRL详解
    在线最优化求解(Online Optimization)之五:FTRL
    在线最优化求解(Online Optimization)之四:RDA
  • 原文地址:https://www.cnblogs.com/s0611163/p/14608591.html
Copyright © 2011-2022 走看看