一.内部工作流程
- 1.Source 接收数据。
- 2.Channel Processor 处理事件。
- 3.将数据事件传给链接器链 interceptor(拦截器),可以是一个或多个拦截器。
- 4.经过拦截器后又把数据返回给 Channel Processor (Channel 处理器),然后再把这个数据传给 Channel Selector(选择器)。
- 5.经过 Channel Selector(选择器)的选择策略处理之后,再将数据传给 Channel列表。因为可能有多个Channel 组成的Channel列表,所以要通过选择器的选择策略确定数据传给哪一个Channel 。
- 6.根据选择器的选择结果,将数据事件写入相应的Channel中。
- 7.Channel中的数据通过Sink Processor (Sink处理器) 的选择策略再将数据传给某一个sink。因为一个Channel可以绑定多个sink,所以Channel中的数据到底给sink1、sink2···。
二. Channel Selector
首先ChannelSelector的作用是将Event 数据传给哪一个Channel。其中它有两种选择策略,分别是 Replicating(复制)和 Multiplexing(多路复用)。
▶
Replicating
(复制):会将同一个 Event 数据发往所有的 Channel,每一个Channel都发一遍。(默认)
eg:a1.sources.r1.selector.type = replicating (默认的写不写都可以)
▶ Multiplexing (多路复用):会根据相应的原则,将不同的 Event 发往不同的 Channel。
eg:a1.sources.r1.selector.type = multiplexing
三.Sink Processor
首先Sink Processor 共 有 三 种 类 型 , 分 别 是 DefaultSinkProcessor 、 LoadBalancingSinkProcessor 和 FailoverSinkProcessor
▶ DefaultSinkProcessor:对应的是单个的Sink。(默认)
▶
LoadBalancingSinkProcessor
:对应的是Sink Group可以实现负载均衡的功能。
▶
FailoverSinkProcessor
:对应的是Sink Group可以实现故障转移的功能。