更新時(shí)間:2022年07月29日10時(shí)20分 來(lái)源:傳智教育 瀏覽次數(shù):
在之前的Flume入門使用中,配置的采集方案是通過(guò)唯一一個(gè)Sink作為接收器來(lái)接收后續(xù)需要的數(shù)據(jù),但有時(shí)會(huì)出現(xiàn)當(dāng)前Sink故障或者數(shù)據(jù)收集請(qǐng)求量較大的情況,這時(shí)候單一的Sink配置可能就無(wú)法保證Flume開發(fā)的可靠性。為此,F(xiàn)lume提供了Flume Sink Processors(Flume Sink處理器)來(lái)解決上述問(wèn)題。
Sink處理器允許開發(fā)者定義一個(gè)Sink groups(接收器組),將多個(gè)Sink分組到一個(gè)實(shí)體中,這樣Sink處理器就可以通過(guò)組內(nèi)的多個(gè)Sink為服務(wù)提供負(fù)載均衡功能,或者是在某個(gè)Sink出現(xiàn)短暫故障的時(shí)候?qū)崿F(xiàn)從一個(gè)Sink到另一個(gè)Sink的故障轉(zhuǎn)移。
什么是負(fù)載均衡?負(fù)載均衡接收處理器(Load balancing sink processor)提供了在多個(gè)Sink上進(jìn)行負(fù)載均衡流量的功能,它維護(hù)了一個(gè)活躍的Sink索引列表,必須在其上分配負(fù)載。Load balancing sink processor支持使用round_robin,但可以通過(guò)配置進(jìn)行覆蓋,還支持繼承AbstractSinkSelector的自定義類來(lái)自定義選擇機(jī)制。
在使用時(shí),選擇器(selector)會(huì)根據(jù)配置的選擇機(jī)制挑選下一個(gè)可用的Sink并進(jìn)行調(diào)用。對(duì)于round_robin和random兩種選擇機(jī)制,如果所選Sink無(wú)法收集event,則處理器會(huì)通過(guò)其配置的選擇機(jī)制選擇下一個(gè)可用Sink。這種實(shí)現(xiàn)方案不會(huì)將失敗的Sink列入黑名單,而是繼續(xù)樂(lè)觀地嘗試每個(gè)可用的Sink。如果所有Sink都調(diào)用失敗,則選擇器將故障傳播到接收器運(yùn)行器(sink runner)。
如果啟用了backoff屬性,則Sink處理器會(huì)將失敗的Sink列入黑名單。當(dāng)超時(shí)結(jié)束時(shí),如果Sink仍然沒(méi)有響應(yīng),則超時(shí)會(huì)呈指數(shù)級(jí)增加,以避免在無(wú)響應(yīng)的Sink上長(zhǎng)時(shí)間等待時(shí)卡住。在禁用backoff功能的情況下,在round_robin機(jī)制下,所有失敗的Sink將被傳遞到Sink隊(duì)列中的下一個(gè)Sink后,因此不再均衡。
北京校區(qū)