精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Pinterest開源Kafka集群自愈和工作負載均衡工具:DoctorKafka

責(zé)任編輯:editor004

作者:張衛(wèi)濱

2017-09-04 11:14:57

摘自:INFOQ

根據(jù)Pinterest的數(shù)據(jù)工程師Yu Yang的博客文章介紹,該網(wǎng)站已經(jīng)有1 75億以上的用戶,Pin圖片的數(shù)量超過了1000億,目前,他們在云端運行了1000個以上的Kafka broker

Pinterest是一個進行圖片分享的社交站點。他們使用Kafka作為中心化的消息傳輸工具,用于數(shù)據(jù)攝取、流處理等場景。隨著用戶數(shù)量的增加,Kafka集群也越來越龐大,對它的管理日趨復(fù)雜,并變成了運維團隊的沉重負擔(dān),因此他們研發(fā)了Kafka集群自愈和工作負載均衡工具DoctorKafka,最近他們已經(jīng)在GitHub上將該項目開源。

根據(jù)Pinterest的數(shù)據(jù)工程師Yu Yang的博客文章介紹,該網(wǎng)站已經(jīng)有1.75億以上的用戶,Pin圖片的數(shù)量超過了1000億,目前,他們在云端運行了1000個以上的Kafka broker。

在這樣的規(guī)模下,每周他們都會遇到Kafka broker的故障,有時候一天之內(nèi)就會遇到好幾次。當(dāng)broker出現(xiàn)故障時,待命的工程師需要及時將已經(jīng)處于死亡狀態(tài)的broker替換掉,從而盡可能減少數(shù)據(jù)丟失的風(fēng)險。他們有時候還需要在broker之間轉(zhuǎn)移工作負載,以保證整體負載的均衡。在替換broker和重新平衡工作負載時,需要非常小心地創(chuàng)建和編輯分區(qū)重分配文件(partition reassignment file)并手動執(zhí)行Kafka腳本命令。這些操作會明顯增加團隊的負擔(dān)。

為了擴展Kafka服務(wù)的運維規(guī)模,Pinterest構(gòu)建了DoctorKafka,這是一項Kafka集群自愈和工作負載均衡的服務(wù)。DoctorKafka能夠探測到Kafka broker的故障并自動將故障broker的負載轉(zhuǎn)移給健康的broker。現(xiàn)在,Pinterest已經(jīng)在GitHub上將該項目開源。

高層架構(gòu)

DoctorKafka由三部分組成,如下圖所示:

  圖1 DoctorKafka的高層架構(gòu)

部署在每個broker上的指標(biāo)收集器(metrics collector),它會定期收集Kafka進程和主機的指標(biāo),并將其發(fā)布到一個Kafka主題上。在這里,使用了Kafka作為broker的狀態(tài)存儲,這樣的話,能夠簡化DoctorKafka的搭建過程并減少對其他系統(tǒng)的依賴;中心化的DoctorKafka服務(wù)會管理多個集群,分析broker的狀態(tài)指標(biāo)以探測broker的故障,執(zhí)行集群自愈和負載均衡的命令。DoctorKafka會將執(zhí)行的命令記錄在另外一個名為“Action Log”主題上;用于瀏覽Kafka集群狀態(tài)和執(zhí)行流程的Web UI頁面。圖2展現(xiàn)了兩個測試集群的管理界面,圖3展現(xiàn)了其中一個集群的詳細視圖。

  圖2 DoctorKafka的前端頁面

  圖3 DoctorKafka的集群視圖

需要注意的是,DoctorKafka只會采取有把握的操作,對于不確定的情況,它會給出告警。

DoctorKafka的實際運行過程

每個broker上都會運行一個指標(biāo)收集器,它會收集Kafka broker輸入和輸出的網(wǎng)絡(luò)流量指標(biāo)以及每個副本(replica)的狀態(tài)。圖4展現(xiàn)了指標(biāo)收集器所收集的broker的部分狀態(tài)。即便采用副本配額配置(replication quota setting,在Kafka 0.10.1之后可用的特性),主題分區(qū)的重分配通常也會帶來額外的網(wǎng)絡(luò)流量并且會影響到指標(biāo),因此,指標(biāo)收集器在收集指標(biāo)時會明確報告某個主題分區(qū)正在進行重分配。

  圖4 指標(biāo)收集器所收集到的broker狀態(tài)

DoctorKafka服務(wù)啟動之后,它會首先讀取broker最近24到48小時的狀態(tài),基于此,DoctorKafka會推斷每個副本工作負載所需的資源。因為Kafka工作負載主要是網(wǎng)絡(luò)密集型的,DoctorKafka主要關(guān)注副本的網(wǎng)絡(luò)帶寬使用情況。

DoctorKafka在啟動之后,會階段性地檢查每個集群的狀態(tài)。當(dāng)探測到broker出現(xiàn)故障時,它會將故障broker的工作負載轉(zhuǎn)移給有足夠帶寬的broker。如果在集群中沒有足夠的資源進行重分配的話,它會發(fā)出告警。與之類似,當(dāng)DoctorKafka進行工作負載平衡時,它會識別出網(wǎng)絡(luò)流量超出配置的broker,并將工作負載轉(zhuǎn)移給流量更少的broker,或者是執(zhí)行更優(yōu)的領(lǐng)導(dǎo)者選舉(leader election)方案來轉(zhuǎn)移流量。

DoctorKafka已經(jīng)在Pinterest運行了數(shù)月之久,并幫助其運維人員管理著1000個以上的集群。現(xiàn)在,他們將其開源,對于Pinterest的工程師來說,開源是非常重要的事情。讀者可以訪問該項目的GitHub地址獲取源碼和相關(guān)文檔。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 宣武区| 青铜峡市| 遵义市| 柞水县| 聂拉木县| 治县。| 平陆县| 兰考县| 红河县| 满洲里市| 通许县| 松滋市| 克拉玛依市| 定西市| 远安县| 桑日县| 繁昌县| 宁城县| 伊吾县| 丰县| 来凤县| 永川市| 陕西省| 麟游县| 康乐县| 盈江县| 丁青县| 北碚区| 孟津县| 北安市| 论坛| 澄江县| 平远县| 徐闻县| 庐江县| 长宁县| 工布江达县| 海林市| 大田县| 鹤山市| 周口市|