Introduction to Apache Flink - C
2018-12-02 本文已影响2人
耳边的火
消息传输与消息处理
实现一个高线的流式结构并且从使用Flink中获取巨大的便利需要什么?一个常用的方式是,通过实现两种主要的组件来实现流式结构,这两种组件简要的描述如下,并在下图中展示。
- 一个消息传递系统。一个消息传递系统可以从各种类型的数据流的持续事件中收集与分发数据(生产者),并允许应用与服务订阅这个系统来获取数据(消费者)
-
流处理系统。(1)流处理系统能够不断的在流处理系统与应用间移动数据,(2)能够聚合与处理事件,(3)能够维持本地应用状态(为了达到状态一致性)
Flink项目的架构中有两个主要的组件:传输阶段,用于从持续的事件中分发消息;处理阶段,由Flink提供。能够满足要求的消息传输技术有Kafka以及MapR,MapR与Kafka API兼容,是MapR融合数据平台的一个组成部分
对实时处理应用的兴奋往往将人们的注意力集中在列表中的第二点上:流处理系统,以及如何选择一个合适的流处理器满足特定项目的要求。除了使用Flink处理数据,也有其他的选择(如,Spark Streaming,Storm,Samza,Apex)。我们会在本书的后面的所有示例中,使用Apache Flink作为流处理器。
事实证明,不仅仅是对流处理器的不同选择,会对设计一个高效的基于流的架构产生巨大的差异。传输层也是一个关键。现代系统能够更容易地大规模处理流数据的一个主要原因是,消息传递系统工作方式的改进,以及对如何处理与现代系统交互的元素的改变。
消息传输层需要有一定的能力来满足流式设计的需要。目前为止,两个消息传递技术提供了与所要求的能力非常好的匹配:Kafka与MapR Streams,MapR与Kafka API兼容,是MapR融合数据平台的一个组成部分。在本书中,我们假设我们示例中的传输层是由两者中的其一来提供支持的。