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的内部原理的更多相关文章

  1. Flume(2)-拓扑结构与Agent内部原理

    一. 拓扑结构 1. 串行模式 这种模式是将多个flume给顺序连接起来了,从最初的source开始到最终sink传送的目的存储系统.此模式不建议桥接过多的flume数量, flume数量过多不仅会影 ...

  2. git内部原理

    Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要. ...

  3. Git 内部原理 - (7)维护与数据恢复 (8) 环境变量 (9)总结

    维护与数据恢复 有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容. 这个小节将会介绍这些情况中的一部分. 维护 Git 会不定时地自动运行一个叫做 ...

  4. 深入理解javascript作用域系列第一篇——内部原理

    × 目录 [1]编译 [2]执行 [3]查询[4]嵌套[5]异常[6]原理 前面的话 javascript拥有一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量,这套规则被称为作用域.作用域 ...

  5. Android线程管理(三)——Thread类的内部原理、休眠及唤醒

    线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...

  6. 【转】SQLServer内部原理

    原文地址:http://twb.iteye.com/blog/182083 在讲SQLSERVER内部原理的之前,我觉得非常有必要向大家介绍一下SQLSERVER的历史. 让我们站在1999年,看看计 ...

  7. asp.net内部原理3

    asp.net内部原理(三) 第三个版本 (最详细的版本) 前言: 今天继续吧这个系列补齐,这几天公司的项目比较忙,回到家已经非常的累了,所以也没顾得上天天来这里分享一些东西和大家一起探讨,但是今天晚 ...

  8. jquery ready方法实现原理 内部原理

    jquery ready方法实现原理 内部原理 今天闲来无事研究研究jquery.ready()的内部实现,看JQ的源码一头雾水,由于自己很菜了,于是翻了翻牛人的播客,讲述详细,收获颇多. 先普及一下 ...

  9. ElasticSearch 学习记录之集群分片内部原理

    分片内部原理 分片是如何工作的 为什么ES搜索是近实时性的 为什么CRUD 操作也是实时性 ES 是怎么保证更新被持久化时断电也不丢失数据 为什么删除文档不会立即释放空间 refresh, flush ...

随机推荐

  1. Hyperledger fabric 1.4 环境搭建(一)

    Hyperledger fabric 1.4 环境搭建(一) 1.更换下载源 更换apt的下载源,因为官方下载源很慢,需要更换到国内的镜像站 1.1.进入/etc/apt/目录 cd etc/apt ...

  2. vue结合element-ui table本地分页

    <template> <el-table :data="tableData1.slice((start1-1)*length1,start1*length1)" ...

  3. C#——时间之不同国家的显示格式

    对于时间的显示,不同的地方有不同的时间格式,代码如下: public class Common_DateFormat { public Common_DateFormat() { // // TODO ...

  4. 远程桌面连接(出现身份验证错误。要求的函数不支持)这可能由于CredSSP加密Oracle修正。

    家庭版解决方案 在进行远程桌面时会遇到这种情况.对于Windows 10家庭版用户,是不支持组策略功能的.本文根据官方文档采用修改注册表的方式达到相同的目的. 1.打开注册表   win + R  键 ...

  5. Windows10搭建本地ftp服务器

    首先要有一个win10专业版的操作系统,连接上互联网... 一.首先打开控制面板选择程序,再选择"启用或关闭windows功能" 二.在"Windows功能"中 ...

  6. 智能BPOS小票模板字体的使用

    关于伯俊智能BPOS零售小票模板的设置,常用字体"黑体"."宋体"."Arial"这几个字体,在设置的时候看似没有问题, 但是在正真使用打印 ...

  7. 2.1JAVA文件基本结构

    命名 包名 全为英文小写 项目包命名 域名反转.团队名.项目名 相关项目包命名 域名反转.团队名.父项目名.子项目名 类和接口名 所有单词首字母大写 抽象类 用"Abstract" ...

  8. C# 串口连接的读取与发送

    一.串口连接的打开与关闭 串口,即COM口,在.NET中使用 SerialPort 类进行操作.串口开启与关闭,是涉及慢速硬件的IO操作,频繁打开或关闭会影响整体处理速度,甚至导致打开或关闭串口失败. ...

  9. sql操作数据库(2)--->DQL、数据库备份和还原

    查询 查询表中的所有的行和列的数据 ​ select * from 表名; ​ select * from student; 查询指定列的数据:如果有多个列,中间用逗号隔开. select 列名1,列 ...

  10. Hbase性能调优(一)

    转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...