zoukankan      html  css  js  c++  java
  • flume agent的内部原理

    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(容灾恢复)

    具体流程图如下:

  • 相关阅读:
    Linux文本处理命令
    管道和重定向
    Linux网络基本配置
    网络基础
    普通权限和特殊权限
    Linux权限
    Linux用户
    Linux帮助文档
    创建新表,自动授权trigger
    禁用约束语法测试
  • 原文地址:https://www.cnblogs.com/zhqin/p/12234165.html
Copyright © 2011-2022 走看看