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

面試官:Kafka和ES選主有什么區(qū)別?

云計(jì)算 Kafka
Kafka 是一個(gè)分布式流處理平臺(tái),由 LinkedIn 公司開發(fā)和維護(hù),之后成為 Apache 軟件基金會(huì)的一部分。它主要是為處理實(shí)時(shí)數(shù)據(jù)而設(shè)計(jì)的,是一個(gè)高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。

Kafka 和 ES 都是用來(lái)處理大數(shù)據(jù)的中間件,一個(gè)是消息中間件的代表(Kafka),另一個(gè)是大數(shù)據(jù)搜索引擎的代表(ES)。它們?cè)?Java 領(lǐng)域的使用非常廣泛,在大數(shù)據(jù)方面就更不用說(shuō)了,但它們的選主(選擇主節(jié)點(diǎn))有什么關(guān)聯(lián)與區(qū)別呢?接下來(lái),我們一起來(lái)看。

1.基礎(chǔ)概念

(1)什么是Kafka?

Kafka 是一個(gè)分布式流處理平臺(tái),由 LinkedIn 公司開發(fā)和維護(hù),之后成為 Apache 軟件基金會(huì)的一部分。它主要是為處理實(shí)時(shí)數(shù)據(jù)而設(shè)計(jì)的,是一個(gè)高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。

Kafka 集群組成如下:

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

(2)什么是ES?

ES 全稱 Elasticsearch,是一個(gè)開源的高擴(kuò)展的分布式全文檢索引擎。它可以近乎實(shí)時(shí)地存儲(chǔ)、檢索數(shù)據(jù),并且具有出色的擴(kuò)展性,可以擴(kuò)展到上百臺(tái)服務(wù)器,處理 PB 級(jí)別的數(shù)據(jù)。Elasticsearch 使用 Java 開發(fā),并使用 Apache Lucene 作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但它通過(guò)簡(jiǎn)單的 RESTful API 來(lái)隱藏 Lucene 的復(fù)雜性,使得全文搜索變得簡(jiǎn)單。

ES 集群組成如下:

說(shuō)明:一個(gè) ES 集群中只有一個(gè) Master(主節(jié)點(diǎn))節(jié)點(diǎn),其他的為數(shù)據(jù)節(jié)點(diǎn)(還有其他節(jié)點(diǎn)類型,這里忽略),主節(jié)點(diǎn)協(xié)調(diào)整個(gè)集群的工作,數(shù)據(jù)節(jié)點(diǎn)中存儲(chǔ)了多個(gè)分片,每個(gè)分片分為兩種類型:主分片和副本分片(類似 Kafka 中分區(qū)的概念)。

2.Kafka和ES選主

Kafka 選主指的是選 Broker 中的 Controller,而 ES 選主指的是選取集群中的 Master,它們兩個(gè)的關(guān)聯(lián)是 Kafka 新版本(2.8 之后)和 ES 新版本(7.0 之后),它們的選主策略都是基于 Raft 算法實(shí)現(xiàn)的

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

3.什么是Raft算法?

Raft 算法是一種分布式一致性算法,主要用于在分布式系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)副本的一致性。該算法是 Paxos 算法的工程實(shí)現(xiàn),其主要特點(diǎn)是通過(guò)較為簡(jiǎn)單的算法實(shí)現(xiàn)分布式系統(tǒng)的數(shù)據(jù)一致性和高可用。

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

在 Raft 算法中,分布式系統(tǒng)中的所有節(jié)點(diǎn)被劃分為三種角色:領(lǐng)導(dǎo)者(Leader)、追隨者(Follower)和候選人(Candidate),這三者身份的轉(zhuǎn)換如下:

leader -> follower:倘若 leader 發(fā)現(xiàn)當(dāng)前系統(tǒng)中出現(xiàn)了更大的任期,則會(huì)進(jìn)行“禪讓”,主動(dòng)退位成 follower。這里 leader 發(fā)現(xiàn)更大任期的方式包括:

  1. 向 follower 提交日志同步請(qǐng)求時(shí),從 follower 的響應(yīng)參數(shù)中獲得。
  2. 收到了來(lái)自新任 leader 的心跳或者同步日志請(qǐng)求。
  3. 收到了任期更大的 candidate 的拉票請(qǐng)求。

follower -> candidate:leader 需要定期向 follower 發(fā)送心跳,告知自己仍健在的消息。倘若 follower 超過(guò)一定時(shí)長(zhǎng)沒收到 leader 心跳時(shí),會(huì)將狀態(tài)切換為 candidate,在當(dāng)前任期的基礎(chǔ)上加 1 作為競(jìng)選任期,發(fā)起競(jìng)選嘗試補(bǔ)位。

candidate -> follower:candidate 參與競(jìng)選過(guò)程中,出現(xiàn)以下兩種情形時(shí)會(huì)退回 follower:

多數(shù)派投了反對(duì)票。

競(jìng)選期間,收到了任期大于等于自身競(jìng)選任期的 leader 傳來(lái)的請(qǐng)求。

candidate -> leader:candidate 競(jìng)選時(shí),倘若多數(shù)派投了贊同票,則切換為 leader。

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

4.Raft選舉流程

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

它的投票流程有三種:

競(jìng)選者投票給原 leader

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

競(jìng)選者投票給 follower

倘若任期落后于自己,拒絕請(qǐng)求,并回復(fù)自己所在的任期。

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

競(jìng)選者投票給 candidate

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

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

每個(gè)競(jìng)選者根據(jù)以上投票來(lái)決定新的 leader,如果有一個(gè)投票過(guò)半,那么它就升級(jí)為新的 leader,并把這個(gè)消息同步給其他節(jié)點(diǎn)。否則會(huì)開啟新的一輪投票,為了防止一直投票,會(huì)在開啟新一輪投票時(shí),設(shè)置的隨機(jī)等待時(shí)間,和一定次數(shù)投票失敗后棄權(quán)的機(jī)制,來(lái)保證投票順利完成。

責(zé)任編輯:姜華 來(lái)源: Java中文社群
相關(guān)推薦

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

開發(fā)

2023-07-11 08:40:02

IO模型后臺(tái)

2023-02-09 07:01:35

轉(zhuǎn)發(fā)重定向Java

2023-12-13 13:31:00

useEffect對(duì)象瀏覽器

2022-05-16 11:04:43

RocketMQPUSH 模式PULL 模式

2023-02-20 07:19:14

2024-03-26 16:24:46

分布式事務(wù)2PC3PC

2025-03-12 08:45:15

函數(shù)聲明函數(shù)表達(dá)式IIFE

2021-12-27 06:57:40

This SuperJava

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2023-12-05 09:33:08

分布式事務(wù)

2024-09-29 16:17:02

2022-08-22 07:06:32

MyBatisSQL占位符

2024-08-28 11:58:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品极品美女在线观看免费 | japanhd美女动 | 美女131mm久久爽爽免费 | 欧美一区二区三区视频在线观看 | 精品国产99 | 国产精品久久久久久久粉嫩 | 成人在线观看免费 | 欧美日韩在线视频一区 | av免费入口 | 欧美日韩18 | www.99热这里只有精品 | 草久在线 | 最新国产精品 | 色接久久| 国产高清一区二区 | 99精品在线观看 | 999视频在线播放 | 国产免费一区二区三区 | 手机在线一区二区三区 | 午夜亚洲 | 成人精品鲁一区一区二区 | 国产精品久久久久久久久久久久久 | 亚洲欧美日本在线 | 国产精品久久性 | 国产精品美女久久久久久久久久久 | 国产一区二区在线视频 | 网站黄色在线免费观看 | 性色的免费视频 | 成人在线观看网站 | 天天插天天操 | 91免费观看在线 | 国产一级毛片精品完整视频版 | 欧美日在线 | 狠狠干av | 成人免费毛片片v | 夜夜操天天干 | 成人深夜福利 | 国产精品免费小视频 | 日本a视频| 美女视频一区二区三区 | 亚洲欧美成人影院 |