暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Flume Agent内部原理

全栈进阶那些事 2021-11-05
517


重要组件
1)ChannelSelector

ChannelSelector的作用就是选出Event将要被发往哪个Channel。其共有两种类型,分别是Replicating(复制)和Multiplexing(多路复用)。
ReplicatingSelector会将同一个Event发往所有的Channel,Multiplexing会根据相应的原则,将不同的Event发往不同的Channel。


2)SinkProcessor

SinkProcessor共有三种类型,分别是DefaultSinkProcessor、LoadBalancingSinkProcessor和FailoverSinkProcessor。
DefaultSinkProcessor对应的是单个的Sink,LoadBalancingSinkProcessor和FailoverSinkProcessor对应的是SinkGroup,LoadBalancingSinkProcessor可以实现负载均衡的功能,FailoverSinkProcessor可以错误恢复的功能。

Source

Source是Flume的数据来源,来源的类型多样化,可以是监听一个文件的变化、一个文件夹的变化,可以是接收JMS消息,或者是监听一个网络端口等。Source至少要连接一个Channel,但是Event写入Channel不是由Source来完成的,每个Source都有自己的Channel处理器,Source每次写Event到Channel时,都由Channel处理器来完成。



Source

1、Source收集数据
2、Source收集到数据后,交给Channel处理器
3、Channel处理器将事件传给Source配置的一个或者多个拦截器,拦截器处理完事件后,返回Channel列表

    拦截器是一段代码,可以基于某些它完成的处理来读取事件或者修改和删除事件。如同正则表达式。每个Source可以配置多个拦截器,按照配置中定义的顺序被调用,将拦截器的结果传递给链的下一个单元,这就是所谓的责任链的设计模式。

4、再次传递给Channel选择器。
5、Channel选择器可以根据事件的具体应用,来决定每个事件必须写入到哪个Channel,以及哪些Channel时必需的或可选的。
6、将所有的事件写入必需的Source附属的Channel中。此时只有一个事务开启,对于每个Channel,所有事件都写为事务的一部分
7、利用可选Channel进行重复操作。

在写入必需的Channel时,如果失败,会抛出ChannelException,说明Source必须重试此事件,不会因为写入失败而忽略掉。写入成功的时候,处理器会向Source指示成功状态,表明写入成功,可以接收更多的事件。


Channel

1、Channel是位于Source和Sink之间的缓冲区。在配置正确的情况下,Channel可以保证Flume的数据不丢失。
2、Source从写入数据到一个或者多个Channel中,由一个或者多个Sink来拉取数据。一个Sink只能从一个Channel中读取数据,而多个Sink可以从同一个Channel中读取,一次可以来提高性能。
3、Channel允许Source和Sink运作在不同的速率上。
4、Channel允许多个Source和Sink在他们上面操作。Channel 可以关联多个 source, 如一个 source个 可以按照配置选择的将数据复制到各个管道,或者按照消息头自动分发到指定的管道,一个 channel 可以接多 个sink ,这个实现了同一份数据的多发发送池,实现了数据的复用及负载均衡等功能
Sink

Sink连续轮询各自的Channel来读取和删除事件(这个动作是Sink Runner激活的)。Sink将事件推送到下一个阶段,如果在推送的事件到达下一个阶段并保证了数据的安全性后,会向Channel提交事务通知,可以在Channel中删除这些事件。
Sink

多个 Sink 可以构成一个Sink组( SinkGroup)。一个 Sink处理器(Sink Processor) 负责从一个指定的 Sink Group 中激活一个 Sink。Sink Processor可以通过组中所有 Sink 实现负载均衡;也可以在一个 Sink 失败时转移到另一个。
————————————————
版权声明:本文为CSDN博主「Fys506」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/f1550804/article/details/88559837


文章转载自全栈进阶那些事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论