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

具体流程图如下:

最新文章

  1. 关于BCGControlbar16.1版本的安装与使用
  2. 异步网络加载开源框架AsyncHttpClient使用
  3. sudo add-apt-repository no found解决方法
  4. hibernate 实现分页查询语句、单条查询语句、多条查询语句、修改、删除语句
  5. Android touch事件的派发流程
  6. JavaScrip的DOM操作(13号讲)
  7. Data manipulation primitives in R and Python
  8. 转:使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
  9. Python里隐藏的 " 诗 "
  10. 【JQ成长笔记】jQuery cookie的使用
  11. ECOS-Ecstore 伪静态规则
  12. 查找oracle自己用户的表
  13. spring 整合 mybatis 中数据源的几种配置方式
  14. too many open files linux服务器 golang java
  15. 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO
  16. 面试被问之-----sql优化中in与exists的区别
  17. ES6 Promise 全面总结
  18. 滚动加载图片(懒加载)实现原理(这是旧实现,仅做为获取元素宽高api的参考)
  19. Python高级特性:迭代器和生成器 -转
  20. NetMagic Simple Overview

热门文章

  1. 使用NPOI读取Excel表格内容并进行修改
  2. .net mvc 微信公众号 验证微信签名
  3. 李宏毅机器学习课程笔记-2.5线性回归Python实战
  4. 2.自定义view-QQ运动步数
  5. C#自定义TemplateImage使用模板底图,运行时根据用户或产品信息生成海报图(1)
  6. Springboot 源码解析-自定装配
  7. Linux嵌入式学习-烟雾传感器驱动-字符设备驱动-按键驱动
  8. JavaDailyReports10_08
  9. spring boot 集成 Apache CXF 调用 .NET 服务端 WebService
  10. java中装箱,拆箱