|NO.Z.00049|——————————|BigDataEnd|——|Hadoop&Flume.V12|——|Flume.v12|高级特性|拦截器|高可用|选择器.v04|
一、Sink组逻辑处理器
### --- Sink组逻辑处理器
~~~ 可以把多个sink分成一个组,
~~~ Sink组逻辑处理器可以对这同一个组里的几个sink进行负载均衡 或者
~~~ 其中一个sink发生故障后将输出Event的任务转移到其他的sink上。
### --- N个sink将Event输出到对应的N个目的地的,
~~~ 通过 Sink组逻辑处理器 可以把这N个sink配置成负载均衡或者故障转移的工作方式:
~~~ 负载均衡是将channel里面的Event,按照配置的负载机制(比如轮询)分别发送到sink各自对应的目的地
~~~ 故障转移是这N个sink同一时间只有一个在工作,其余的作为备用,
~~~ 工作的sink挂掉之后备用的sink顶上
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance

### --- 默认
~~~ 默认的组逻辑处理器就是只有一个sink的情况,这种情况就没必要配置sink组了。
~~~ 前面的例子都是 source - channel - sink这种一对一,单个sink的。
### --- 故障转移
~~~ 故障转移组逻辑处理器维护了一个发送Event失败的sink的列表,
~~~ 保证有一个sink是可用的来发送Event。
~~~ 故障转移机制的工作原理是将故障sink降级到一个池中,
~~~ 在池中为它们分配冷却期(超时时间),在重试之前随顺序故障而增加。
~~~ Sink成功发送事件后,它将恢复到实时池。sink具有与之相关的优先级,数值越大,优先级越高。
~~~ 如果在发送Event时Sink发生故障,会继续尝试下一个具有最高优先级的sink。 例如,在优先级为80的sink之前激活优先级为100的sink。如果未指定优先级,则根据配置中的顺序来选取。
~~~ 要使用故障转移选择器,不仅要设置sink组的选择器为failover,
~~~ 还有为每一个sink设置一个唯一的优先级数值。
~~~ 可以使用 maxpenalty 属性设置故障转移时间的上限(毫秒)。
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

二、负载均衡
### --- 负载均衡
~~~ 负载均衡Sink 选择器提供了在多个sink上进行负载均衡流量的功能。
~~~ 它维护一个活动sink列表的索引来实现负载的分配。
~~~ 支持轮询( round_robin )【默认值】和随机( random )两种选择机制分配负载。
~~~ 工作时,此选择器使用其配置的选择机制选择下一个sink并调用它。
~~~ 如果所选sink无法正常工作,则处理器通过其配置的选择机制选择下一个可用sink。
~~~ 此实现不会将失败的Sink列入黑名单,而是继续乐观地尝试每个可用的Sink。
~~~ 如果所有sink调用都失败了,选择器会将故障抛给sink的运行器。
~~~ 如果 backoff 设置为true则启用了退避机制,失败的sink会被放入黑名单,
~~~ 达到一定的超时时间后会自动从黑名单移除。 如从黑名单出来后sink仍然失败,
~~~ 则再次进入黑名单而且超时时间会翻倍,以避免在无响应的sink上浪费过长时间。
~~~ 如果没有启用退避机制,在禁用此功能的情况下,发生sink传输失败后,
~~~ 会将本次负载传给下一个sink继续尝试,因此这种情况下是不均衡的。

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」