SinkGroup允許組織多個sink到一個實體上。SinkProcessors 能夠提供在組内所有sink之間實作負載均衡的能力。而且在失敗的情況下能夠進行故障轉移。
sinks: 空格分隔的多個sink
processor.type:default|failover|load_balance
一 DefaultSink Processor
隻允許接收單個sink,不強制使用者為sink建立processor.
二FailoverSink Processor
它維護着一個sink的優先級清單,保證event隻要有效就會被處理。
failover機制工作原理把失敗的sinks放到一個池裡,然後給他配置設定一個冷凍期。一旦一個event被成功發送,重新會把這個sink放入live池子裡。
對于這個配置,我們要設定sinkgroups processor為failover,為每一個單獨的sink設定優先級,另外failover的上限可以通過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
三Loadbalancing Sink Processor
LoadBalancing Sink Processor 提供另一種可以在多個sink之間平衡負載的能力。
實作支援通過round_robin(輪詢)或者random(随機)參數來實作負載分發,預設情況下使用round_robin。
processor.sinks:多個空格分割的sink
processor.type:load_balance
processor.backoff:
processor.selector:round_robin|random|繼承AbstractSinkSelector的類
processor.selector.maxTimeOut:
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