端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作) - 知乎
这篇文章可以说是作者压箱底儿的知识总结(之一,毕竟作者学的东西很杂 ╮( ̄▽ ̄"")╭ )了. 断断续续写了将近三个月, 耗费了大量的精力, 本来的目的本来只是想对比一下各个state of art的流系统有什么不同, 但是写出来之后只是乱糟糟的罗列数据和资料,像这样列数据一样,"介绍下这个framework这样实现的,所以有这样的特性","那个是那样的".... blablabla... 使得文章只停留于表层,这样写并不是一个好的笔记,我想记录的是更深入更本质和更精髓的一些东西:我想更深入的探讨一个分布式系统的设计是被什么现实和本质问题所逼迫的结果, 2个不同的设计到底是在哪个本质问题上分道扬镳才造成了系统设计如此的不同,追寻问题和解法的前因后果,让未来的自己一眼扫过去之后能够自然而然的回忆和理解出: "嗯,对,在这种现实限制下,要达到这种效果就必须这么做", 我想从乱糟糟的观察到的混乱表象中,抽象出流系统所面对的问题和解决方案的本质; 这就是本文的目的,和文章中除开引用文献之外,作者所贡献的一些自己的思考;
就作者学习流系统的感受来看, 流系统有2个难点, 第一是end to end consistency,或者说exactly once msg processing; 第二则是event time based window操作; 本来作者想用一篇文章同时概括和比较这2点; 无奈第一点写完, 文章已经长度爆炸; 于是分开2篇, 此为上篇, 着重于从分布式系统的本质问题出发, 从最底层的各种"不可能", 和它们的解(比如:consensus协议)开始, 一层一层的递进到高层的流系统中, 如何实现容错场景下的end to end consistency,或者说exactly once msg processing;
Read full article from 端到端一致性,流系统Spark/Flink/Kafka/DataFlow对比总结(压箱宝具呕血之作) - 知乎
No comments:
Post a Comment