我认为可以用工厂里的流水线来类比流处理。相比于传统的数据处理的最主要的区别在于:
传统处理:等所有需要的数据都准备好了再做计算,就像我们要造一台汽车,需要等汽车所有的零件都到了,我们再开始组装成车。
流处理:数据来了就计算。来一部分零件就装一部分。
流处理关注的问题:
- 数据的时序性,数据是有先后的,就像组装汽车时要先装骨架、轮子,再喷漆、测试(实际的流程可能不是这样的,只是做个类比)。
- 状态性,一般来讲,对于数据的处理会依赖于之前的计算,就像装车时,我们要知道车装到哪一步了,加入上一步是拧了螺丝,我要知道是几号螺丝,好用对应的螺帽。再比如说做用户访问统计时,要知道上次的统计量,然后累加。
- 数据管道支持,一般对于数据的处理会有好多步,比如说汽车的框架要先搭好架子、再抛光、喷漆。流处理要做好数据处理工序的衔接。