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 提供了多個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