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. java如何实现入职时间到现在 java如何计算知道入职时间, 求工作时长格式为年--月--日。

    Date ruZhi = new Date("入职年月bai"); Date now = new Date(); //算出du来时间夸格zhi多长 long shiChang = ...

  2. [leetcode]21Merge Sorted ListNode递归合并顺序链表

    /** * Merge two sorted linked lists and return it as a new list. * The new list should be made by sp ...

  3. cmake的安装

    安装cmake有2种方式 安装方式1:源码安装 1.下载cmake源码包(https://cmake.org/download/),解压后进入解压目录 2.执行安装配置命令:配置软件二进制安装到/us ...

  4. Java ClassLoader浅析

    双亲委派 提起 java 类加载器,自然绕不开其双亲委派模型 什么是双亲委派 提起双亲委派,首先想到便是那张经典的向上委派图 一般场景下,当某个类将要被加载时,由系统上下文默认的类加载器Thread. ...

  5. 搭建 Typecho 个人博客

    搭建 Typecho 个人博客 前言 最近在学习中,感觉有个自己的博客,用来记录学习总结,写写生活点滴是件不错的事. 在网上看到 Typecho 博客和 WordPress博客,顿时被 Typecho ...

  6. UML第三次结对作业

    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11274 这个作业的目标 <学会使用专业的建模工具> 队 ...

  7. linq to entity不识别方法"System.String ToString()"

    将班级id以字符串形式输入如:"1111,1112,1113".数据库里的id为int型,在数据路里找到匹配的相应班级转换成列表.在这里爆出问题:不识别方法"System ...

  8. 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)

    风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...

  9. Akka Typed 官方文档之随手记

    ️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Dom ...

  10. Modbus 协议图文详解

    1.概论 Modbus是一种串行通信协议,由于其协议简单易用,且没有版权要求,目前已经成为工业领域通信协议的实时标准.ModBus协议是又施耐德电气的前身Modicon公司在1979年提出的.Modb ...