亚洲精品无码鲁网中文电影,无码专区日韩亚洲精品,丁香花视频资源在线观看,亚洲综合av永久无码精品一区二区

您好,歡迎進入銳速云官網(wǎng)!

售后熱線:4006-5050-10 QQ客服:2852917158 登錄 注冊

LinkedIn開源Kafka Cruise Control,旨在使Kafka實現(xiàn)大規(guī)模運維自動化!
編輯作者:   發(fā)布時間:2017-09-03

LinkedIn開源Kafka Cruise Control,旨在使Kafka實現(xiàn)大規(guī)模運維自動化!

  在過去這幾年,Apache Kafka的人氣急劇上升。實際上,LinkedIn部署的系統(tǒng)最近每天處理的消息超過2萬億個,有 1800多臺Kafka服務(wù)器(即代理,broker)。雖然事實證明Kafka很穩(wěn)定,但是在規(guī)模如此龐大的環(huán)境下運行Kafka還是面臨運維方面的挑戰(zhàn)。代理每天都在失效,這導(dǎo)致我們的集群上工作負(fù)載不均衡。因而,網(wǎng)站可靠性工程師(SRE)投入大量的時間和精力來重新分配分區(qū),以便讓Kafka集群恢復(fù)均衡。

   

  在這種情況下,智能自動化至關(guān)重要,這就是為什么我們開發(fā)了Cruise Control(https://github.com/linkedin/cruise-control):這個通用系統(tǒng)可不斷監(jiān)控我們的集群,自動調(diào)整分配給集群的資源,以滿足預(yù)定的性能目標(biāo)。實際上,用戶明確指定目標(biāo),Cruise Control負(fù)責(zé)監(jiān)控有無違反這些目標(biāo),分析集群上的現(xiàn)有工作負(fù)載,并自動執(zhí)行管理運維,以滿足那些目標(biāo)。你可以在此查看視頻(https://www.youtube.com/watch?v=lf31udm9cYY),內(nèi)容關(guān)于去年秋天的數(shù)據(jù)流處理大會上介紹的Cruise Control。

   

  今天我們很高興宣布開源Cruise Control,現(xiàn)在它放在Github上。我們在本文中將描述Cruise Control的一般用途和其在LinkedIn的用途、體系結(jié)構(gòu),以及我們當(dāng)初開發(fā)它時面臨的一些獨特挑戰(zhàn)。想進一步深入了解本文中使用的Kafka術(shù)語,這份參考資料(https://github.com/jet/kafunk/wiki/Kafka-Crash-Cource)大有幫助。

   

  設(shè)計目標(biāo)

   

  我們當(dāng)初設(shè)計Cruise Control時想到了幾個重要的需求:

   

  •  

  可靠的自動化:CruiseControl應(yīng)該能夠準(zhǔn)確地分析集群工作負(fù)載,并生成執(zhí)行計劃,這些計劃可放心地運行,根本不需要人干預(yù)。

  •  

  •  

  節(jié)省資源:CruiseControl足夠智能化,在執(zhí)行操作時并不給集群處理正常工作負(fù)載的可用性帶來負(fù)面影響,

  •  

  •  

  可擴展性:Kafka用戶對于部署的Kafka系統(tǒng)在可用性和性能方面有不同的需求,會使用不同的部署工具、管理端點和度量指標(biāo)收集機制。Cruise Control必須能夠滿足用戶指定的隨意目標(biāo),并執(zhí)行用戶指定的操作。

  •  

  •  

  通用性:我們很早就認(rèn)識到,其他分布式系統(tǒng)也能得益于需要這類可識別應(yīng)用的監(jiān)控/分析/操作周期的類似的運維自動化。雖然一些現(xiàn)有的產(chǎn)品有助于集群中的資源利用率實現(xiàn)均衡,但大多數(shù)與應(yīng)用無關(guān),通過遷移整個應(yīng)用過程來執(zhí)行重新均衡。雖然這適用于無狀態(tài)的系統(tǒng),不過由于與這個過程有關(guān)的大量狀態(tài),面對有狀態(tài)的系統(tǒng)(比如Kafka)時,它通常無能為力。因此,我們想要Cruise Control成為一種通用框架,可以明白具體的應(yīng)用,只遷移部分狀態(tài),可以用在任何有狀態(tài)的分布式系統(tǒng)中。

  •  

   

  LinkedIn的CruiseControl

   

  我們目前針對Kafka部署的Cruise Control旨在解決下列重要的運維和報告目標(biāo):

   

  1.  

  必須從磁盤、網(wǎng)絡(luò)和CPU利用率方面不斷均衡Kafka集群。

  1.  

  2.  

  某個代理失效時,我們需要自動將該代理上的副本重新分配到集群中的其他代理,并恢復(fù)原來的復(fù)制因子(replication factor)。

  1.  

  2.  

  我們需要能夠識別集群中耗用最多資源的主題分區(qū)。

  1.  

  2.  

  我們需要支持低接觸(low-touch)的集群擴展和代理停用。由于為集群添加代理或從集群刪除代理后需要手動重新分配分區(qū),這些操作原本很費勁。

  1.  

  2.  

  能夠運行配備異構(gòu)硬件的集群很有用,比如說,缺少同樣的硬件時,可以迅速修復(fù)硬件故障。然而,異構(gòu)硬件加大了運維開銷,因為SRE在均衡這類集群時,對硬件差異要非常留意。Cruise Control應(yīng)該能夠支持異構(gòu)的Kafka集群和每臺機器的多個代理。

  1.  

   

  它是如何工作的?

   

  Cruise Control遵循監(jiān)控/分析/操作這個工作周期。下圖描述了Cruise Control的體系結(jié)構(gòu)。許多組件是可插入的,如該圖重點顯示的(比如度量指標(biāo)采樣器和分析器等)。

   

  

   

  REST API

   

  Cruise Control提供了一個REST API,讓用戶可以與之交互。REST API支持工作負(fù)載查詢和Kafka集群的優(yōu)化方案,還支持管理運維的觸發(fā)。

   

  負(fù)載監(jiān)控器

   

  負(fù)載監(jiān)控器(Load Monitor)從集群收集標(biāo)準(zhǔn)的Kafka度量指標(biāo),并根據(jù)分區(qū)獲得并不直接可用的資源度量指標(biāo)(比如根據(jù)每個分區(qū)估計CPU利用率)。然后,它生成一個準(zhǔn)確記錄集群資源利用率的集群工作負(fù)載模型,資源利用率包括磁盤利用率、CPU利用率、字節(jié)輸入速率和字節(jié)輸出速率,達(dá)到了副本的精細(xì)度。然后,它將集群模型饋入到檢測器和分析器。

   

  分析器

   

  分析器好比是Cruise Control的“大腦”。它使用啟發(fā)式方法,基于用戶提供的優(yōu)化目標(biāo)和來自負(fù)載監(jiān)控器的集群工作負(fù)載模型來生成優(yōu)化方案。

   

  優(yōu)化目標(biāo)擁有基于用戶配置的優(yōu)先級。優(yōu)先級較高的目標(biāo)比優(yōu)先級低的目標(biāo)更有可能達(dá)到。低優(yōu)先級目標(biāo)的優(yōu)化并不會違反高優(yōu)先級目標(biāo)。

   

  Cruise Control還允許指定硬性目標(biāo)和軟性目標(biāo)。硬性目標(biāo)是指必須滿足的目標(biāo)(比如副本布置必須做到可識別機架)。另一方面,軟性目標(biāo)可以不用達(dá)到,如果這么做可以滿足所有的硬性目標(biāo)。如果經(jīng)過優(yōu)化的結(jié)果違反了硬性目標(biāo),優(yōu)化就會失效。硬性目標(biāo)的優(yōu)先級通常會高于軟性目標(biāo)。到目前為止,我們已實現(xiàn)了下列硬性和軟性目標(biāo):

   

  硬性目標(biāo)

   

  1.  

  副本布置必須做到可識別機架。同一分區(qū)的副本放在不同的機架上,那樣某個機架宕機后,任何分區(qū)頂多損失一個副本。這有助于控制故障邊界,讓Kafka來得更可靠。

  1.  

  2.  

  代理的資源利用率必須在事先定義的閾值以內(nèi)。

  1.  

  2.  

  網(wǎng)絡(luò)利用率不得超過事先定義的容量,即便該代理上的所有副本都成為leader。在這種情況下,所有使用者流量將重定向至該代理,因而導(dǎo)致網(wǎng)絡(luò)利用率高于平常。

  1.  

   

  軟性目標(biāo)

   

  1.  

  試圖所有代理都實現(xiàn)一致的資源利用率。

  1.  

  2.  

  試圖諸代理的leader分區(qū)都實現(xiàn)一致的字節(jié)輸入速率(即來自客戶端而不是來自復(fù)制的字節(jié)輸入速率)。

  1.  

  2.  

  試圖將特定主題的分區(qū)均衡地分配到所有代理上。

  1.  

  2.  

  試圖將副本(全局性)均衡地分配到所有代理上。

  1.  

   

  目標(biāo)優(yōu)化邏輯大體上如下:

   

  

   

  異常檢測器

   

  異常檢測器可識別兩種類型的異常:

   

  1.  

  代理故障:即非空代理離開集群,這導(dǎo)致了副本數(shù)不足的分區(qū)。由于這在正常的集群bounce過程中也會發(fā)生,異常檢測器在觸發(fā)通知器、修復(fù)集群之前提供了一段可配置的寬限期。

  1.  

  2.  

  目標(biāo)違反:即違反優(yōu)化目標(biāo)。如果啟用了自愈功能,Cruise Control會自動分析工作負(fù)載,執(zhí)行優(yōu)化方案,從而積極地試圖解決目標(biāo)違反問題。

  1.  

   

  執(zhí)行器

   

  執(zhí)行器負(fù)責(zé)執(zhí)行來自分析器的優(yōu)化方案。重新均衡Kafka集群通常需要重新分配分區(qū)。執(zhí)行器確保執(zhí)行可感知資源,并不讓任何代理不堪重負(fù)。重新分配分區(qū)還可能是個長時間運行的過程――在龐大的Kafka集群中,可能要好幾天才能完成。有時候,用戶想要停止進行中的分區(qū)重新分配。執(zhí)行器采用了這樣的方式來設(shè)計:執(zhí)行方案時,可以安全地中斷。

   

  值得關(guān)注的挑戰(zhàn)

   

  我們在開發(fā)和使用Cruise Control時遇到了許多值得關(guān)注的挑戰(zhàn)。下面列出了其中的幾個挑戰(zhàn)。

   

  為Kafka打造一種可靠的集群工作負(fù)載模型

   

  這不像聽起來那么簡單。有好多細(xì)節(jié)地方要注意。比如說,從代理收集CPU利用率的度量指標(biāo)簡單直觀,但是我們?nèi)绾瘟炕總€分區(qū)給CPU利用率帶來的影響?這個維基頁面(https://github.com/linkedin/cruise-control/wiki/Build-the-cluster-workload-model)解釋了我們是如何解答這個問題的。

   

  你愿意為優(yōu)化方案等多久?

   

  分析器組件取得了巨大的進展。我們最初使用了一種通用優(yōu)化器,帶有復(fù)雜的參數(shù)化損失函數(shù)。在中等大小的Kafka集群上獲得優(yōu)化方案就算不需要數(shù)年,至少也需要數(shù)周。后來我們改用了目前的啟發(fā)式優(yōu)化器解決方案,這讓我們在短短幾分鐘內(nèi)獲得了相當(dāng)好的結(jié)果。

   

  內(nèi)存還是速度?

   

  由于我們要將眾多的度量指標(biāo)保存一段時間(比如一周),以便分析Kafka集群中分區(qū)的流量模式,Cruise Control非常耗費內(nèi)存。由于生成優(yōu)化方案勢必需要相應(yīng)的計算操作,它還很耗費CPU資源。然而,那兩個方面有點彼此沖突。為了加快生成方案的速度,我們想要處理更多的緩存和并行方案計算,但是這么做耗用更多的內(nèi)存。我們最終做了一些設(shè)計方面的決定,以便兼顧兩者。比如說,我們預(yù)先計算優(yōu)化方案,并緩存起來,那樣用戶開始查詢時,可避免長時間等待。另一方面,我們還錯開內(nèi)存密集型任務(wù)(比如方案預(yù)先計算和異常檢測等)的執(zhí)行,避免同時大量耗用內(nèi)存的情況出現(xiàn)。

   

  未來的工作

   

  實現(xiàn)更多的Kafka集群優(yōu)化目標(biāo)!

   

  由于Cruise Control的優(yōu)化目標(biāo)可插入,用戶可能會根據(jù)需要,提出錯綜復(fù)雜的目標(biāo)來優(yōu)化各自的Kafka集群。比如說,我們在LinkedIn內(nèi)部使用Kafka監(jiān)控器,監(jiān)控集群可用性。由于Kafka監(jiān)控器根據(jù)每個代理向“監(jiān)控器”主題發(fā)送消息的功能,報告代理的可用性,我們需要確保該主題的分區(qū)的leader覆蓋所有代理。作為一個開源項目,我們還希望鼓勵用戶創(chuàng)建各自的目標(biāo),并將它們貢獻給社區(qū)。

   

  與云管理系統(tǒng)(CMS)整合起來

   

  目前,Cruise Control通過從壞掉的代理遷移分區(qū)來修復(fù)集群。我們設(shè)想,Cruise Control有望與其他CMS整合起來,利用率達(dá)到某個閾值時,可自動擴展集群,或者必要時,用來自閑置代理池的新代理替換壞的代理。如上所述,我們歡迎社區(qū)獻計獻策,為這項未來的功能作出貢獻。

   

  借助洞察力助力運維

   

  Cruise Control便于對從Kafka收集的度量指標(biāo)執(zhí)行深度分析。我們認(rèn)為,它將讓SRE能夠量化各個資源使用率度量指標(biāo)的影響,并獲得洞察力,從而幫助容量規(guī)劃和性能調(diào)優(yōu)。

   

  推而廣之

   

  我們在開發(fā)Cruise Control時就認(rèn)識到,對任何分布式系統(tǒng)而言,動態(tài)的負(fù)載均衡機制是一種實用的工具。Cruise Control針對度量指標(biāo)聚合、資源利用率分析和生成優(yōu)化方案的各組件同樣適用于其他分布式系統(tǒng)。從長遠(yuǎn)來看,我們希望抽取那些核心組件,將它們提供給其他項目。我們對Cruise Control懷有的愿景是,讓人們可以與任何分布式系統(tǒng)輕松整合起來,為針對特定應(yīng)用的性能分析、優(yōu)化和執(zhí)行提供便利。

   


版權(quán)所有:Copyright @ 2016-2022 深圳市銳速云計算有限公司 增值電信業(yè)務(wù)經(jīng)營許可證
粵B1-20171508
備案系統(tǒng) 粵ICP備16119720號 粵公網(wǎng)安備 44030902000612號