Introduction to Apache Flink - C
2018-12-02 本文已影响7人
耳边的火
处理持续事件数据的目标
能够以较低的延迟处理数据并不是高效流处理的唯一优点。我们对流处理的愿望清单上不仅有高吞吐与低延迟,同时还要要求它有能力应对故障。一个好的流处理技术应该能够在故障发生时,立即重启应用并且仍能计算出精确的结果。换句话说,流处理器应该有这样的特点:它可以在具备故障容忍能力的基础上同时保证数据有且仅有一次(即恰好一次)被处理。
不仅如此,即便通过某种方式实现了上述要求,我们还要要求这种实现方式在没有故障发生时不会消耗太多的资源。如果流处理可以做到基于session的数据处理,那么这对比于一刀切式的处理固定时间段内的数据方式要有用处的多;如果流处理能够对所处理的数据进行正确的排序再进行处理,也会非常有用。对于开发者来说,一套系统在书写代码与修复bug时是否容易使用是很关键的一方面,同时该系统也要运维起来更容易。当然更关键的是,该系统能够按照事件在真实世界发生的顺序来计算结果。例如:能够有能力处理乱序的事件流(一个不幸的事实),能够决定性地替换流(例如,用于审计或调试目的)。