Flume之Failover和Load balancing原理

Failover Sink Processor

Failover Sink Processor維護了一個sink的優先級列表,具備故障轉移的功能,具體的配置以下(加粗的必須配置):web

 

屬性名稱默認值描述 算法

sinks 多個sink用空格分開。
processor.type default 組件的名稱,必須是:failover
processor.priority.<sinkName> 優先級值。<sinkName> 必須是sinks中有定義的。優先級值高Sink會更早被激活。值越大,優先級越高。
:多個sinks的話,優先級的值不要相同,若是優先級相同的話,只會有一個生效。且failover時,同優先級的不會Failover,就算是同優先級的還存在也會報All sinks failed to process。
processor.maxpenalty 30000 失敗的Sink最大的退避時間(單位:毫秒)(退避算法(退避算法爲咱們在解決重試某項任務的時候,提供了一個比較好的等待思想。),參考:http://qiuqiang1985.iteye.com/blog/1513049

示例:負載均衡

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

Load balancing Sink Processor

Load balancing sink processor 提供了多個sinks負載均衡的能力。它維護了一個active sinks列表,該列表中的負載必須是分佈式的。實現了round_robin(輪詢調度) 或者 random(隨機) 的選擇機制,默認是:round_robin(輪詢調度)。也能夠經過繼承AbstractSinkSelector類來實現自定義的選擇機制。
當被調用時,選擇器根據配置文件的選擇機制挑選下一個sink,而且調用該sink。若是所選的Sink傳遞Event失敗,則經過選擇機制挑選下一個可用的Sink,以此類推。
dom

屬性名稱默認描述 分佈式

processor.sinks 多個sink用空格分開。
processor.type default 組件的名稱,必須是:load_balance
processor.backoff false 是否以指數的形式退避失敗的Sinks。
processor.selector round_robin 選擇機制。必須是round_robin,random或者自定義的類,該類繼承了AbstractSinkSelector
processor.selector.maxTimeOut 30000 默認是30000毫秒,屏蔽故障sink的時間

示例:ide

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
相關文章
相關標籤/搜索