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上,跑了半小时,把缺失的数据补上了。

  • 相关阅读:
    Mysql使用指南
    数据库中的脏读、幻读、不可重复读
    数据库分库分表策略
    php匹配html中的日期进行修改并且重新写入html
    程序猿,你也配吃10元的盒饭?
    git excutable file not found in %path%
    html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
    laravel+gatewayworker+layer搭建网页聊天系统1--workerman安装
    ubuntu使用querylist+cron实现每日新闻采集
    Command "make:console" is not defined.
  • 原文地址:https://www.cnblogs.com/s0611163/p/14608591.html
Copyright © 2011-2022 走看看