成人免费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

2025-03-21 00:00:05

Reactor設計模式I/O 機制

2024-10-24 16:14:43

數據傳輸CPU零拷貝

2022-08-26 00:21:44

IO模型線程

2024-12-06 14:34:00

Spring過濾器

2025-03-07 00:11:00

JWTJSONSession

2025-02-21 15:25:54

虛擬線程輕量級
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文无吗 | 日韩欧美一区二区三区四区 | 国产在线观 | 日韩成人 | 国产丝袜一区二区三区免费视频 | 国产成人综合久久 | 国产精品久久久久久久久久久久午夜片 | 国产精品一区二区不卡 | 免费在线观看av网站 | 国产亚洲精品美女久久久久久久久久 | 精品国产乱码久久久久久蜜退臀 | 丝袜美腿一区二区三区 | 国产一极毛片 | 91亚洲一区| 国产精品嫩草影院精东 | 久久成人一区 | 狠狠操天天干 | 一级黄色片一级黄色片 | 久久久久久成人 | 午夜性视频 | 国产精品69av| 久久久久久久久99 | 波多野结衣一区二区 | 精品国产乱码久久久久久蜜退臀 | 欧美一区二区三区视频在线播放 | 日韩欧美在 | 国产乱码精品一区二区三区中文 | 日韩中文字幕久久 | 性高湖久久久久久久久 | 激情的网站 | 日日夜夜精品视频 | 久久久久久国产精品 | 日韩欧美三区 | 三级国产三级在线 | 久久国产精品免费一区二区三区 | 国产精品一区二区视频 | 天天av网| 全免费a级毛片免费看视频免费下 | 日韩在线播放网址 | 免费av观看 | 中文字幕视频在线观看 |