成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談談你對Kafka副本Leader選舉原理的理解?

開發 架構
確實Kafka早期的版本就是直接用Zookeeper來完成選舉的。利用了Zookeeper的Watch機制;節點不允許重復寫入以及臨時節點這些特性。這樣實現比較簡單,省事。但是也會存在一定的弊端。比如分區和副本數量過多,所有的副本都直接參與選舉的話,一旦某個出現節點的增減,就會造成大量的Watch事件被觸發,ZooKeeper的就會負載過重,不堪重負。

一位7年工作經驗的小伙伴,面試被問到這樣一道題,說:”談談你對Kafka副本Leader選舉原理的理解“。當時,他想,這Kafka用的不就是Zookeeper 的選舉嗎?難道Kafka又自己搞了一套。沒錯,這回Kafka自己造了一個輪子。

那么今天,我給大家來聊一聊我對Kafka副本Leader選舉原理的理解。

1、選舉原理

確實Kafka早期的版本就是直接用Zookeeper來完成選舉的。利用了Zookeeper的Watch機制;節點不允許重復寫入以及臨時節點這些特性。這樣實現比較簡單,省事。但是也會存在一定的弊端。比如分區和副本數量過多,所有的副本都直接參與選舉的話,一旦某個出現節點的增減,就會造成大量的Watch事件被觸發,ZooKeeper的就會負載過重,不堪重負。

新版本的Kafka中換了一種實現方式。不是所有的Repalica都參與Leader選舉,而是由其中的一個Broker統一來指揮,這個Broker的角色就叫做Controller控制器。

Kafka要先從所有Broker中選出唯一的一個Controller。

所有的Broker會嘗試在Zookeeper中創建臨時節點/controller,誰先創建成功,誰就是Controller。那如果Controller掛掉或者網絡出現問題,ZooKeeper上的臨時節點就會消失。其他的Broker通過Watch監聽到Controller下線的消息后,繼續按照先到先得的原則競選Controller。這個Controller就相當于選舉委員會的主席。

當一個節點成為Controller之后,他就會承擔以下職責:

監聽Broker變化、監聽Topic變化、監聽Partition變化、獲取和管理Broker、Topic、Partition的信息、管理Partiontion的主從信息。

2、選舉規則

Controller確定以后,就可以開始做分區選主的事情。接下來就是找候選人。顯然,每個Replica都想推薦自己,但不是所有的Replica都有競選資格。只有在ISR(In-Sync Replicas)保持心跳同步的副本才有資格參與競選。就好比是皇帝每天著急皇子們開早會,只有每天來打卡的皇子才能加入ISR。那些請假的、遲到的沒有資格參與選舉。

接下來,就是Leader選舉,就相當于要在眾多皇子中選出太子。在分布式選舉中,有非常多的選舉協議比如ZAB、Raft等等,他們的思想歸納起來都是:先到先得,少數服從多數。但是Kafka沒有用這些方法,而是用了一種自己實現的算法。

提到Kafka官方的解釋是,它的選舉算法和微軟的PacificA算法最相近。大致意思就是,默認是讓ISR中第一個Replica變成Leader。比如ISR是1、5、9,優先讓1成為Leader。這個跟中國古代皇帝傳位是一樣的,優先傳給皇長子。

假設,我們創建一個4個分區2個副本的Topic,它的Leader分布是這樣的,如圖所示:

第1個分區的副本Leader,落在B節點上。第2個分區的副本Leader落在C節點上,第3個分區的副本Leader落在A節點上,第4個分區的副本Leader落在B節點上。如果有更多副本,就以此類推。我們發現Leader的選舉的規則相當于蛇形走位。

這樣設計的好處是可以提高數據副本的容災能力。將Leader和副本完全錯開,從而不至于一掛全掛。

以上就是我對Kafka副本Leader選舉原理的理解!

責任編輯:武曉燕 來源: Tom彈架構
相關推薦

2022-08-14 07:14:50

Kafka零拷貝

2022-07-28 19:19:21

Zookeeper中心化架構

2023-11-28 12:25:02

多線程安全

2022-06-30 09:10:33

NoSQLHBaseRedis

2022-09-06 11:13:16

接口PipelineHandler

2022-08-26 00:02:03

RocketMQ單體架構MQ

2022-09-19 07:57:59

云服務互聯網基礎設施

2024-09-02 16:10:19

vue2前端

2022-08-29 16:03:33

狀態流轉Java

2024-09-20 05:46:00

2024-09-11 16:49:55

2022-10-09 15:18:31

SwaggerOpenAPI工具

2022-09-09 10:15:06

OAuthJava

2022-03-21 09:05:18

volatileCPUJava

2024-10-24 16:14:43

數據傳輸CPU零拷貝

2025-03-21 00:00:05

Reactor設計模式I/O 機制

2022-08-26 00:21:44

IO模型線程

2024-12-06 14:34:00

Spring過濾器

2025-03-07 00:11:00

JWTJSONSession

2024-09-27 15:43:52

零拷貝DMAIO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产一区二区三区四区 | 国产 日韩 欧美 中文 在线播放 | 欧美白人做受xxxx视频 | www性色| 国产美女在线观看 | 久久成| 99精品国产一区二区青青牛奶 | 麻豆av网| 久青草影院 | 成人片在线看 | 亚洲电影第1页 | 久久亚洲一区 | 日韩中文在线 | 亚洲免费成人 | 日韩不卡在线 | 国产一区二区三区 | 国产精品视频偷伦精品视频 | 久久久这里只有17精品 | av天天爽| 一区二区三区在线 | 欧 | 亚洲国产aⅴ精品一区二区 免费观看av | 欧美黑人体内she精在线观看 | 神马久久香蕉 | 成人毛片在线视频 | 黑人久久久 | 日韩成人精品视频 | 久久免费国产视频 | 美女三区 | 在线a视频网站 | 欧美成人精品 | 中文字幕精品一区久久久久 | 国产精品永久久久久久久www | 免费精品国产 | 日韩av一区二区在线观看 | 日本高清在线一区 | 欧美日韩精品国产 | 一级aaaaaa毛片免费同男同女 | 黄色一级片aaa | 国产成人精品久久二区二区91 | 欧美日韩成人网 | 欧美一级在线观看 |