当前位置:首页 > Web开发 > 正文

Replicating Channel Selector : 将source过来的events发往所有的channel

2024-03-31 Web开发

标签:

flume agent 内部道理

1、Source收罗数据,EventBuilder.withBody(body)将数据封装成Event东西,source.getChannelProcessor().processEvent(event)然后将数据交给Channel Processor(操作该类的要领进行下一步的措置惩罚惩罚)

2、Channel Processor将Event事件通报给拦截器链(Intercepter,进行简单的数据清洗)interceptorChain.intercept(event),然后将数据返回给Channel Processor。(通过挪用selector.getRequiredChannels(event)要领来使操纵封装成事务。)

3、然后Channel Processor将拦截过滤之后的Event事件通报给Channel选择器(Channel Selector)(因为一个Source 可以对应多个 Channel,所以Channel Selector可以决定每个event具体分配给哪一个Channel),然后Channel Selector返回给Channel Processor写入event事件的Channel列表。

此中:Channel Selectors有两种类型,分袂是Replicating Channel Selector(默认的) 和 Multiplexing Channel Selector。

Replicating Channel Selector : 将source过来的events发往所有的channel(相当于复制多份)

Multiplexing Channel Selector:可以配置source发过来的events具体发往哪些Channel

event的布局是header + body

技术图片

Multiplexing Channel Selector的事情道理就是按照event中的header中的key-value来判断该Event该发往哪一个Channel。
而event中的header是拦截器过滤好event之后,给event加的具体的header,即key-value。所以一般都是拦截器和Multiplexing Channel Selector 结合起来使用。

4、Channel Processor按照Channel选择器的选择功效,将Event事件写入相应的Channel。

5、然后SinkProcessor启动sink,sink不停到channel中去轮询,将channel中的event事件拿过来。
此中:SinkProcessor有三种,DefaultSinkProcessor(默认的,,内部无任何逻辑,只是纯挚的挪用sink)、LoadBalancingSinkProcessor(负载均衡)、FaioverSinkProcessor(容灾恢复)

具体流程图如下:

技术图片

flume agent的内部道理

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30993.html