更新时间:2022年07月29日10时20分 来源:传智教育 浏览次数:
在之前的Flume入门使用中,配置的采集方案是通过唯一一个Sink作为接收器来接收后续需要的数据,但有时会出现当前Sink故障或者数据收集请求量较大的情况,这时候单一的Sink配置可能就无法保证Flume开发的可靠性。为此,Flume提供了Flume Sink Processors(Flume Sink处理器)来解决上述问题。
Sink处理器允许开发者定义一个Sink groups(接收器组),将多个Sink分组到一个实体中,这样Sink处理器就可以通过组内的多个Sink为服务提供负载均衡功能,或者是在某个Sink出现短暂故障的时候实现从一个Sink到另一个Sink的故障转移。
什么是负载均衡?负载均衡接收处理器(Load balancing sink processor)提供了在多个Sink上进行负载均衡流量的功能,它维护了一个活跃的Sink索引列表,必须在其上分配负载。Load balancing sink processor支持使用round_robin,但可以通过配置进行覆盖,还支持继承AbstractSinkSelector的自定义类来自定义选择机制。
在使用时,选择器(selector)会根据配置的选择机制挑选下一个可用的Sink并进行调用。对于round_robin和random两种选择机制,如果所选Sink无法收集event,则处理器会通过其配置的选择机制选择下一个可用Sink。这种实现方案不会将失败的Sink列入黑名单,而是继续乐观地尝试每个可用的Sink。如果所有Sink都调用失败,则选择器将故障传播到接收器运行器(sink runner)。
如果启用了backoff属性,则Sink处理器会将失败的Sink列入黑名单。当超时结束时,如果Sink仍然没有响应,则超时会呈指数级增加,以避免在无响应的Sink上长时间等待时卡住。在禁用backoff功能的情况下,在round_robin机制下,所有失败的Sink将被传递到Sink队列中的下一个Sink后,因此不再均衡。