Flume Agent内部流程解析

Fiume内部原理

在这里插入图片描述
1.首先Flume中的组件最先接收到数据的是Source

2.Source在接收到数据后,会把数据包装成Event,并且把数据交给Channel处理
3.由ChannelProcessor决定具体怎么交到Channel以及交到哪个Channel

4.在ChannelProcessor处理流程的过程中,首先会将事件拿过来发给拦截器(链)。拦截器(链)可以先进行数据的清洗、处理不合格的数据。比较常用的是给数据加一些header。
拦截器尽量不要写过重的逻辑,否则会影响流式处理的链条,整个效率都会变慢。

5.将处理后的事件交给ChannelSelector(Channel选择器),ChannelSelector根据事件的属性(header,可以通过拦截器加或Source本身的)决定当前的事件该去往哪一个Channel。(ChannelSelector的作用就是选出Event将要被发往哪个Channel。其共有两种类型,分别是Replicating(复制)和Multiplexing(多路复用)。
ReplicatingSelector会将同一个Event发往所有的Channel,Multiplexing会根据相应的原则,将不同的Event发往不同的Channel。)

6.ChannelSelector都处理完后会重新发送给ChannelProcessor

7.根据Channel选择器的选择结果,将事件写入到对应的Channel

8.每个Channel都有一个独立的SinkProcessor,Sink在Channel中也不是直接拉取数据的,一次拉多少,怎么拉这种事都是由SinkProcessor来决定的。SinkProcessor决定了Sink以什么样的行为模式来Channel中拉取数据,默认的SinkProcessor一共有三种分别是
DefaultSinkProcessor:对应Sink只有一个的时候
LoadBalancingSinkProcessor:可以实现负载均衡的功能
FailoverSinkProcessor:容灾,一个Sink只要“不死”就使劲的拉,知道挂了换另一个,可以错误恢复的功能。
DefaultSinkProcessor对应的是单个的Sink,LoadBalancingSinkProcessor和FailoverSinkProcessor对应的是Sink Group,LoadBalancingSinkProcessor,FailoverSinkProcessor
多个Sink从Channel中拉数据的时候,多个Sink就会组成一个Sink组,一个Sink组只能有一个SinkProcessor,一个Sink组只能消费一个Event一次。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值