實時計算之kafka的高可用保證_第1頁
實時計算之kafka的高可用保證_第2頁
實時計算之kafka的高可用保證_第3頁
實時計算之kafka的高可用保證_第4頁
實時計算之kafka的高可用保證_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、CONTENTSkafka集群簡單介紹kafka集群有4個kakfa集群cdn集群:40臺user-action集群:30臺性能測試集群:10臺cdn老集群:60臺 (即將淘汰)kafka服務(wù)的不穩(wěn)定因素v 磁盤損壞會造成kafka服務(wù)異常退出。v 服務(wù)器故障kafka服務(wù)退出;兩臺以上故障:kafka數(shù)據(jù)丟失等問題。v zookeeper服務(wù)之前所有的kafka和共用一套zookeeper服務(wù),現(xiàn)已經(jīng)分拆。kafka服務(wù)器進程監(jiān)控目前的監(jiān)控方式:使用crontab定時掃描監(jiān)測kafka服務(wù)進程,如kafka服務(wù)不存在,自動拉起,并短信報警給相關(guān)人員。缺點:時效性不高。其他方式:daemont

2、ools監(jiān)控。KAFKA磁盤故障自動恢復(fù)由于kafka服務(wù)器磁盤開銷很大,隨著集群規(guī)模的增大,出現(xiàn)磁盤故障的可能性大大提高,為了減少維護的成本,我們開發(fā)了磁盤故障的自動處理程序。v通過mysql來管理損壞磁盤;v自動剔除故障磁盤。v自動恢復(fù)磁盤v服務(wù)器運行日志目錄重新選舉。v磁盤故障報警通知。kafka備份池kafka備份池:安裝了3臺kafka服務(wù),平時不啟動,線上kafka服務(wù)器故障時,從備份池中取出一臺備份服務(wù)器接替,同時通知IT及時維修故障的服務(wù)器。由于目前的kafka的topic副本數(shù)為2;當(dāng)kafka服務(wù)器故障超過兩臺時,就會造成數(shù)據(jù)丟失;當(dāng)kafka服務(wù)器故障時,可根據(jù)需要啟動備

3、份服務(wù)器。kafka備份機策略可行性測試檢驗備份機策略是否可行,同時為了檢驗服務(wù)器故障對服務(wù)的影響,檢驗kafka備份機切換對集群和服務(wù)的影響,做了如下測試。測試方案: step1:部署3臺測試集群的kafka集群備份機。 step2: 創(chuàng)建一個測試的topic,只有一個分區(qū),備份數(shù)為2 的test_bak_kafka step3: 編寫一個發(fā)送消息的生產(chǎn)者程序,不停的發(fā)送消息, 啟動一個消費者,實時消費消息。 step4:關(guān)閉一個正在寫入消息的broker的主節(jié)點 stop5:啟動被關(guān)閉的節(jié)點。 step6: 關(guān)閉主節(jié)點,啟動 備份節(jié)點 kafka的zk元數(shù)據(jù)信息介紹關(guān)閉topic分區(qū)的le

4、ader節(jié)點如果故障退出的為follower節(jié)點,則生產(chǎn)者和消費者都不會受到影響。啟動備份節(jié)點topic的zk的狀態(tài)變化在kafka節(jié)點異常,備份節(jié)點恢復(fù)過程中,topic的zk狀態(tài)變化如下:關(guān)閉主節(jié)點:kafka的leader發(fā)生切換啟動備份節(jié)點:正常狀態(tài):一臺broker故障后:備份broker恢復(fù)后:kafka的Leader Electionkafka的partition的leader算法沒有使用常用的“Majority Vote”;而是采用在ZK中動態(tài)維護了一個ISR,這個ISR里的所有Replica都需要跟上了leader,只有ISR里的成員才有被選為Leader的可能。優(yōu)點:優(yōu)點:

5、vN+1個Replica,容忍N個replica失敗v容忍N個Replica的失敗,比“Majority Vote”少近一半的replica缺點:缺點:需要等待最慢的Broker,但是可以通過Producer選擇是否被commit阻塞來改善(request.required.acks)。kafka的Leader Election實現(xiàn):kafka通過Controller節(jié)點來選舉各個partition的leader。kafka的Leader Election1.controller在ZK的/brokers/ids節(jié)點上注冊Watch2.broker宕機,ZK會fire Controller注冊的

6、Watch會觸發(fā)controller。3.Controller重新設(shè)置partition信息(set_p)。4.從/brokers/topics/topic/partitions/partition/state讀取該Partition當(dāng)前的ISR。5.決定該Partition的新Leader如果ISR 列表中有Replica有幸存,選擇其中一個為新Leader,新ISR為當(dāng)前ISR;如果ISR列表中的Replica都當(dāng)宕掉,選擇任意一個幸存的Replica為新Leader,以及ISR(會有數(shù)據(jù)丟失的可能);如果該Partition的所有Replica都宕機了,則將新的Leader設(shè)置為-1;6

7、. Controlle直接通過RPC向相關(guān)Broker發(fā)送LeaderAndISRRequest命令。如何處理所有Replica都不工作如果某個Partition的所有Replica都宕機了,就無法保證數(shù)據(jù)不丟失了。這種情況下有兩種可行的方案:1.等待ISR中的任一個Replica“活”過來,并且選它作為Leader 2.選擇第一個“活”過來的Replica(不一定是ISR中的)作為Leader??捎眯院鸵恢滦援?dāng)中一個簡單的折衷,kafka使用的第二種方法。kafka的Data Replication消息生產(chǎn)者的消息發(fā)送機制:同步發(fā)送同步發(fā)送: Producer會在嘗試重新發(fā)送message.

8、send.max.retries 次后拋出Exception異步發(fā)送:異步發(fā)送: Producer會嘗試重新發(fā)送message.send.max.retries 次后記錄該異常并繼續(xù)發(fā)送后續(xù)數(shù)據(jù)。目的:kafka為預(yù)防一旦某一個Broker宕機,則其上所有的Partition數(shù)據(jù)都不可被消費;同時提高了整個系統(tǒng)的可用性。vReplica均勻分布到整個集群 Kafka分配Replica的算法如下:設(shè)有n個broker,i個partion,j個Replica,將broker和parttion排序后。 將第i個Partition分配到第(i mod n)個Broker上 將第i個Partition的

9、第j個Replica分配到第((i + j) mod n)個Broker上kafka的數(shù)據(jù)同步機制kafka的各個分區(qū)備份之間的同步機制:1.生產(chǎn)者發(fā)送消息到leader,leader log數(shù)據(jù)2. flowller從leader拉取消息。3.flower接收到消息,放到內(nèi)存ack leader。4.leader ack producer。Kafka之Replication toolsu最優(yōu)副本選舉工具bin/kafka-preferred-replica-election.s -zookeeper localhost:12913/kafka -path-to-json-file topic

10、PartitionList.jsonuTopic 和Partion轉(zhuǎn)移工具#轉(zhuǎn)移topic到新的brokerkafka-reassign-partitions.sh -topics-to-move-json-file topics-to-move.json -broker-list 5,6,7 -execute #轉(zhuǎn)移partition的一些replica到指定的brokerkafka-reassign-partitions.sh -manual-assignment-json-file partitions-to-move.json -execute kafka磁盤上限測試kafka磁盤容量測試,當(dāng)一個topic的一個分區(qū)所在的磁盤用盡,是否會異常?測試環(huán)境:測試環(huán)境:1.開啟一個寫kafka的生生產(chǎn)者,向kafka寫消息,每條消息10kb。2.Topic為1個partitions,2個Replica;Replica對應(yīng)的磁盤大小為5.5結(jié)果:結(jié)果:10.5個小時后,磁盤寫滿。個小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論