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. NET 5 使用HttpClient和HttpWebRequest

    HttpWebRequest 这是.NET创建者最初开发用于使用HTTP请求的标准类.HttpWebRequest是老版本.net下常用的,较为底层且复杂,访问速度及并发也不甚理想,但是使用HttpW ...

  2. Multipass使用教程

    一.Multipass介绍 Multipass是一种简单的虚拟机工具.它不仅使启用虚拟机变得快速简易,还使管理那些虚拟机变得异常简单,因此可以立即开始针对云.边缘.物联网或任何一种类型的技术进行开发. ...

  3. Spring-IOC基本使用

    通过上篇文章大概知道ioc.DI的概念了,下面我们详细介绍一下 一.Spring IOC创建对象 IOC通过上文的介绍作用是控制创建对象的解释权,我们把代码重新看一下 //User.java publ ...

  4. 深入浅出JVM(一):你写得.java文件是如何被加载到内存中执行的

    众所周知,.java文件需要经过编译生成.class文件才能被JVM执行. 其中,JVM是如何加载.class文件,又做了些什么呢? .class文件通过 加载->验证->准备->解 ...

  5. day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知

    目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...

  6. CMS、G1收集器

    目录 CMS.G1收集器 1.CMS收集器 1.1.原理 1.2.不足 2.G1收集器 2.1.特点 2.2.执行过程 CMS.G1收集器 1.CMS收集器 CMS(Concurrent Mark S ...

  7. Scanner详解

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入 1)public static void main(String[] args) { S ...

  8. Java并发包源码学习系列:AbstractQueuedSynchronizer

    目录 本篇学习目标 AQS概述 AbstractOwnableSynchronizer 同步队列与Node节点 同步状态state 重要方法分析 独占式获取与释放同步状态 共享式获取与释放同步状态 A ...

  9. Termux键盘配置

    通过编辑~/.termux/termux.properties配置 extra-keys = [\ ['ESC', 'CTRL', '&', '$', '!', '%', '<', '& ...

  10. Lesson_strange_words6

    stylized 有艺术效果的 slide 幻灯片,滑动 template 模板,样板 grasp 掌握,领悟 factor 因素 twisted pair cable 双绞线 twisted 扭曲的 ...