1. Sink Processor共有三種類型
| 類型 | |
|---|---|
| DefaultSinkProcessor | 對(duì)應(yīng)單個(gè)sink,發(fā)送至單個(gè)sink |
| LoadBalancingSinkProcessor | 對(duì)應(yīng)的是 Sink Group,可以實(shí)現(xiàn)負(fù)載均衡的能力 |
| FailoverSinkProcessor | 對(duì)應(yīng)的是Sink Group,可以錯(cuò)誤回復(fù)的功能 |
Sink 提供了分組功能,用于把多個(gè) Sink 聚合為一組進(jìn)行使用,內(nèi)部提供了 SinkGroup 用來完成這個(gè)事情。Sink Processors可以使在Sink Group中所有sink具有負(fù)載均衡的能力,或者在一個(gè)sink失效后切換到另一個(gè)sink的fail over模式。默認(rèn)的sink processor只接受一個(gè)sink,用戶不一定非得創(chuàng)建sink group
DefaultSinkProcessor :默認(rèn)實(shí)現(xiàn),用于單個(gè) Sink 的場(chǎng)景使用。
FailoverSinkProcessor :故障轉(zhuǎn)移實(shí)現(xiàn), failover機(jī)制維護(hù)一個(gè)sink優(yōu)先級(jí)列表,保證有效事件可以被處理掉。
LoadBalancingSinkProcessor: load balancing sink processor給多個(gè)sinks之間提供負(fù)載均衡,它維護(hù)一個(gè)可用sink索引,它支持通過round_robin和random兩種方法進(jìn)行負(fù)載分配,默認(rèn)的選擇方式是round_type類型的,也可以通過配置文件進(jìn)行更改。當(dāng)被選擇器被調(diào)用的時(shí)候,它不會(huì)屏蔽故障的sink,繼續(xù)嘗試訪問每一個(gè)可用的sink,如果所有的sink都故障了,選擇器則無法給sink傳播數(shù)據(jù)。如果backoff被開啟,則sink processor會(huì)屏蔽故障的sink,選擇器會(huì)在一個(gè)給定的超時(shí)時(shí)間內(nèi)移除它們,當(dāng)超時(shí)時(shí)間完畢后,sink還是無法訪問,則超時(shí)時(shí)間以指數(shù)方式增長(zhǎng)。
例子:
a_stat_info.sinkgroups.sg_stat_info.sinks = k_stat_info_1 k_stat_info_2
a_stat_info.sinkgroups.sg_stat_info.processor.type = load_balance
a_stat_info.sinkgroups.sg_stat_info.processor.backoff = true
a_stat_info.sinkgroups.sg_stat_info.processor.selector = round_robin
a_stat_info.sinkgroups.sg_stat_info.processor.selector.maxTimeOut = 30000