|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

 

 

posted on   yanqi_vip  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示