最近手头有个任务最要是做实时数据分析的,由于数据量的庞大想到效率就想到了分布式,大体需求是不断从原始脏数据中提取自己需要的数据做分析,原始数据会不断更新,起先我的想法是用如下这种方式
zmq:1.push-->2.pull+pub--->3.sub
1.push端直接拉取源数据然后由2.pull端一次处理数据然后pub模式下发3.sub端订阅后进行实际的处理然后录入数据库,然后领导对我这个方案有了质疑,因为1到2,2再到3是逻辑上是单向的,理论上1拿数据最快,2稍慢,3最慢(因为设计到数据库操作)所以必定会造成数据堵塞,3处理数据的快慢直接影响到数据的实时性,或许3加入更多的机子会变快,但是数据阻塞的同时我2程序异常断开(守护已有)我阻塞的这部分数据肯定是丢掉了,所以又想到了应答模式,这样上端做处理就必须得到下端的应道再去处理,大致思路如下:
zmq:1.push|repreq|pull|rep|pubreq|sub
但是req|rep有个我无法处理的地方,就是如果服务端是在收到req后断掉了,还没来得及rep,客户端会处于永远等待状态,这我就死循环了,翻阅各种资料都没查到如何应对。
请有经验的大神能给我个解决方法或者我的这个思路本身就很奇葩还有更好的解决思路,因为就只看过zmq的3个模式一边摸索一边做的,烦请大家帮我看看,已经纠结死了!