flume agent的内部原理
2021-04-24 14:29
标签:cin col 选择器 启动 sele code 利用 defaults 复制 1、Source采集数据, 2、Channel Processor将Event事件传递给拦截器链(Intercepter,进行简单的数据清洗) 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。 4、Channel Processor根据Channel选择器的选择结果,将Event事件写入相应的Channel。 5、然后SinkProcessor启动sink,sink不断到channel中去轮询,将channel中的event事件拿过来。 具体流程图如下: flume agent的内部原理 标签:cin col 选择器 启动 sele code 利用 defaults 复制 原文地址:https://www.cnblogs.com/zhqin/p/12234165.htmlflume agent 内部原理
EventBuilder.withBody(body)
将数据封装成Event对象,source.getChannelProcessor().processEvent(event)
然后将数据交给Channel Processor(利用该类的方法进行下一步的处理)interceptorChain.intercept(event)
,然后将数据返回给Channel Processor。(通过调用selector.getRequiredChannels(event)
方法来使操作封装成事务。)
而event中的header是拦截器过滤好event之后,给event加的具体的header,即key-value。所以一般都是拦截器和Multiplexing Channel Selector 结合起来使用。
其中:SinkProcessor有三种,DefaultSinkProcessor(默认的,内部无任何逻辑,只是单纯的调用sink)、LoadBalancingSinkProcessor(负载均衡)、FaioverSinkProcessor(容灾恢复)
上一篇:CSS中设置元素的圆角矩形
下一篇:php弱类型比较