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

面試官:Kafka和ES選主有什么區別?

云計算 Kafka
Kafka 是一個分布式流處理平臺,由 LinkedIn 公司開發和維護,之后成為 Apache 軟件基金會的一部分。它主要是為處理實時數據而設計的,是一個高吞吐量的分布式發布訂閱消息系統。

Kafka 和 ES 都是用來處理大數據的中間件,一個是消息中間件的代表(Kafka),另一個是大數據搜索引擎的代表(ES)。它們在 Java 領域的使用非常廣泛,在大數據方面就更不用說了,但它們的選主(選擇主節點)有什么關聯與區別呢?接下來,我們一起來看。

1.基礎概念

(1)什么是Kafka?

Kafka 是一個分布式流處理平臺,由 LinkedIn 公司開發和維護,之后成為 Apache 軟件基金會的一部分。它主要是為處理實時數據而設計的,是一個高吞吐量的分布式發布訂閱消息系統。

Kafka 集群組成如下:

說明:每個 Broker 就是一個 Kafka 實例(其中的 Broker 1 為 Controller,也就是主 Broker),一個 Broker 中有多個 Topic,一個 Topic 中有多個分區,分區分為兩類:Leader 分區和 Follower 分區。

(2)什么是ES?

ES 全稱 Elasticsearch,是一個開源的高擴展的分布式全文檢索引擎。它可以近乎實時地存儲、檢索數據,并且具有出色的擴展性,可以擴展到上百臺服務器,處理 PB 級別的數據。Elasticsearch 使用 Java 開發,并使用 Apache Lucene 作為其核心來實現所有索引和搜索的功能,但它通過簡單的 RESTful API 來隱藏 Lucene 的復雜性,使得全文搜索變得簡單。

ES 集群組成如下:

說明:一個 ES 集群中只有一個 Master(主節點)節點,其他的為數據節點(還有其他節點類型,這里忽略),主節點協調整個集群的工作,數據節點中存儲了多個分片,每個分片分為兩種類型:主分片和副本分片(類似 Kafka 中分區的概念)。

2.Kafka和ES選主

Kafka 選主指的是選 Broker 中的 Controller,而 ES 選主指的是選取集群中的 Master,它們兩個的關聯是 Kafka 新版本(2.8 之后)和 ES 新版本(7.0 之后),它們的選主策略都是基于 Raft 算法實現的

PS:當然,Kafka 中叫做 KRaft,ES 也是在 Raft 算法的基礎上擴充了二階段選舉,但它們基于的底層算法都是 Raft 算法。

3.什么是Raft算法?

Raft 算法是一種分布式一致性算法,主要用于在分布式系統中實現數據副本的一致性。該算法是 Paxos 算法的工程實現,其主要特點是通過較為簡單的算法實現分布式系統的數據一致性和高可用。

Raft 算法的核心是通過選舉投票,少數人服從多數人的原則(投票過半原則),如果有一半以上的人投票給某個節點作為 Leader,那么它就是新的 Leader。

在 Raft 算法中,分布式系統中的所有節點被劃分為三種角色:領導者(Leader)、追隨者(Follower)和候選人(Candidate),這三者身份的轉換如下:

leader -> follower:倘若 leader 發現當前系統中出現了更大的任期,則會進行“禪讓”,主動退位成 follower。這里 leader 發現更大任期的方式包括:

  1. 向 follower 提交日志同步請求時,從 follower 的響應參數中獲得。
  2. 收到了來自新任 leader 的心跳或者同步日志請求。
  3. 收到了任期更大的 candidate 的拉票請求。

follower -> candidate:leader 需要定期向 follower 發送心跳,告知自己仍健在的消息。倘若 follower 超過一定時長沒收到 leader 心跳時,會將狀態切換為 candidate,在當前任期的基礎上加 1 作為競選任期,發起競選嘗試補位。

candidate -> follower:candidate 參與競選過程中,出現以下兩種情形時會退回 follower:

多數派投了反對票。

競選期間,收到了任期大于等于自身競選任期的 leader 傳來的請求。

candidate -> leader:candidate 競選時,倘若多數派投了贊同票,則切換為 leader。

candidate -> candidate:candidate 的競選流程有一個時間閾值. 倘若超時仍未形成有效結論(多數派贊同或拒絕),則會維持 candidate 身份,將競選任期加1,發起新一輪競選。

4.Raft選舉流程

Raft 算法的選舉流程如下圖所示:

它的投票流程有三種:

競選者投票給原 leader

  1. 倘若該任期小于自身,拒絕,并回復自己的最新任期。
  2. 倘若該任期大于自身,退位為 follower,按照 follower 的模式處理該請求。

競選者投票給 follower

倘若任期落后于自己,拒絕請求,并回復自己所在的任期。

倘若任期大于自己,判斷最后的同步日志是否夠新,如果比自己新就把這一票投給競選者,如果沒有自己新則拒絕。

競選者投票給 candidate

倘若 leader 任期大于等于自己,同意此次投票,并退回 follower,按照 follower 模式處理請求。

如果 leader 任期小于自己,拒絕,并回復自己的最新任期。

每個競選者根據以上投票來決定新的 leader,如果有一個投票過半,那么它就升級為新的 leader,并把這個消息同步給其他節點。否則會開啟新的一輪投票,為了防止一直投票,會在開啟新一輪投票時,設置的隨機等待時間,和一定次數投票失敗后棄權的機制,來保證投票順利完成。

責任編輯:姜華 來源: Java中文社群
相關推薦

2023-02-17 08:10:24

2024-04-03 15:33:04

JWTSession傳輸信息

2024-09-19 08:42:43

2021-12-10 12:01:37

finalfinallyfinalize

2021-11-30 07:44:50

FinalFinallyFinalize

2021-12-13 06:56:45

Comparable元素排序

2021-12-23 07:11:31

開發

2023-02-09 07:01:35

轉發重定向Java

2023-07-11 08:40:02

IO模型后臺

2023-02-20 07:19:14

2023-12-13 13:31:00

useEffect對象瀏覽器

2022-05-16 11:04:43

RocketMQPUSH 模式PULL 模式

2024-03-26 16:24:46

分布式事務2PC3PC

2025-03-12 08:45:15

函數聲明函數表達式IIFE

2021-12-27 06:57:40

This SuperJava

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2023-12-05 09:33:08

分布式事務

2024-09-29 16:17:02

2022-08-22 07:06:32

MyBatisSQL占位符

2024-08-28 11:58:02

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级一级毛片 | 国产视频1区 | 欧美精品一区二区三区在线播放 | 成人免费毛片片v | 久久精品国产免费 | 欧美性视频在线播放 | 亚洲日本一区二区三区四区 | 中文字幕在线观看一区 | 午夜天堂精品久久久久 | 日韩视频在线免费观看 | 黄色在线播放视频 | 精品国产99 | 欧美激情综合五月色丁香小说 | 黄网免费| 亚洲小视频在线观看 | 91网在线播放 | 亚洲精品字幕 | 成人夜晚看av | 久久中文字幕一区 | 美女天天操 | 精品国产一区二区国模嫣然 | 日韩福利 | 国产高清精品一区 | av超碰 | 久久性av | 嫩草研究影院 | 国产精品 欧美精品 | 女同久久另类99精品国产 | 亚洲欧美在线视频 | 国产高清在线精品 | 亚洲一区二区三区 | 日韩毛片在线观看 | 国产一区二区 | 国产一区二区三区在线看 | 亚洲人成人一区二区在线观看 | 麻豆一区二区三区 | 精品欧美 | 三级成人在线 | 日日干天天干 | 日韩在线一区二区 | 视频一区在线观看 |