Java程序員面試必備——kafka的專業(yè)術(shù)語-創(chuàng)新互聯(lián)

Java程序員面試必備——kafka的專業(yè)術(shù)語

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比中站網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式中站網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋中站地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

主題 + 客戶端

  1. 發(fā)布訂閱的對(duì)象是主題(Topic)

  2. 向主題發(fā)布消息的客戶端應(yīng)用程序稱為生產(chǎn)者(Producer),生產(chǎn)者可以持續(xù)不斷地向多個(gè)主題發(fā)送消息

  3. 訂閱這些主題消息的客戶端應(yīng)用程序稱為消費(fèi)者(Consumer),消費(fèi)者能夠同時(shí)訂閱多個(gè)主題的消息

  4. 生產(chǎn)者和消費(fèi)者統(tǒng)稱為客戶端

服務(wù)端

  1. Kafka的服務(wù)端由被稱為Broker的服務(wù)進(jìn)程構(gòu)成,一個(gè)Kafka集群由多個(gè)Broker組成

  2. Broker負(fù)責(zé)接收和處理客戶端發(fā)送過來的請(qǐng)求,以及對(duì)消息進(jìn)行持久化

  3. 多個(gè)Broker進(jìn)程能夠運(yùn)行在同一臺(tái)機(jī)器上,但更常見的做法是將不同的Broker分散運(yùn)行在不同的機(jī)器上
  • 這樣如果集群中某一臺(tái)機(jī)器宕機(jī)了,即使在它上面運(yùn)行的所有Broker進(jìn)程都掛掉了
  • 其他機(jī)器上的Broker也依然能夠?qū)ν馓峁┓?wù),這是Kafka提供高可用的手段之一

備份

  1. 實(shí)現(xiàn)高可用的另一個(gè)手段是備份機(jī)制(Replication)

  2. 備份:把相同的數(shù)據(jù)拷貝到多臺(tái)機(jī)器上,這些相同的數(shù)據(jù)拷貝在Kafka中被稱為副本(Replica)

  3. 副本的數(shù)量是可以配置的,Kafka定義了兩類副本:領(lǐng)導(dǎo)者副本(Leader Replica)和追隨者副本(Follower Replica)
  • 領(lǐng)導(dǎo)者副本:對(duì)外提供服務(wù),對(duì)外指的是與客戶端程序進(jìn)行交互
  • 生產(chǎn)者總是向領(lǐng)導(dǎo)者副本寫消息
  • 消費(fèi)者總是從領(lǐng)導(dǎo)者副本讀消息
  • 追隨者副本:被動(dòng)地追隨領(lǐng)導(dǎo)者副本,不能與外界交互
  • 向領(lǐng)導(dǎo)者副本發(fā)送請(qǐng)求,請(qǐng)求領(lǐng)導(dǎo)者副本把最新生產(chǎn)的消息發(fā)給它,進(jìn)而與領(lǐng)導(dǎo)者副本保持同步
  • MySQL的從庫(kù)是可以處理讀請(qǐng)求的
  • Master-Slave => Leader-Follower
  1. 副本機(jī)制可以保證數(shù)據(jù)的持久化或者消息不丟失,但沒有解決伸縮性(Scalability)的問題
  • 如果領(lǐng)導(dǎo)者副本積累了太多的數(shù)據(jù)以至于單臺(tái)Broker機(jī)器無法容納,該如何處理?
  • 可以把數(shù)據(jù)分割成多份,然后保存在不同的Broker上,這種機(jī)制就是分區(qū)(Partitioning)
  • MongoDB、Elasticsearch – Sharding
  • HBase – Region

分區(qū)

  1. Kafka中的分區(qū)機(jī)制是將每個(gè)主題劃分成多個(gè)分區(qū)(Partition),每個(gè)分區(qū)是一組有序的消息日志

  2. 生產(chǎn)者生產(chǎn)的每條消息只會(huì)被發(fā)送到一個(gè)分區(qū)中,Kafka的分區(qū)編號(hào)是從0開始的

  3. 副本是在分區(qū)這個(gè)層級(jí)定義的,每個(gè)分區(qū)下可以配置N個(gè)副本,只能有1個(gè)領(lǐng)導(dǎo)者副本和N-1個(gè)追隨者副本

  4. 生產(chǎn)者向分區(qū)(分區(qū)的領(lǐng)導(dǎo)者副本)寫入消息,每條消息在分區(qū)中的位置由位移(Offset)來表征,而分區(qū)位移總是從0開始

  5. 三層消息架構(gòu)
  • 第一層是主題層,每個(gè)主題可以配置M個(gè)分區(qū),而每個(gè)分區(qū)又可以配置N個(gè)副本
  • 第二層是分區(qū)
  • 每個(gè)分區(qū)的N個(gè)副本中只能有1個(gè)領(lǐng)導(dǎo)者副本,對(duì)外提供服務(wù)
  • 其他N-1個(gè)副本是追隨者副本,只能提供數(shù)據(jù)冗余
  • 第三層是消息層,分區(qū)中包含若干條消息,每條消息的位移從0開始,依次遞增
  • 最后,客戶端程序只能與分區(qū)的領(lǐng)導(dǎo)者副本進(jìn)行交互

持久化

  1. Kafka使用消息日志(Log)來保存數(shù)據(jù),一個(gè)日志是磁盤上一個(gè)只能追加寫(Append-Only)消息的物理文件
  • 只能追加寫入,避免了緩慢的隨機(jī)IO操作,改為性能較好的順序IO操作,這是實(shí)現(xiàn)Kafka高吞吐量的一個(gè)重要手段
  1. Kafka需要定期刪除消息以回收磁盤空間,可以通過日志片段(Log Segment)機(jī)制來實(shí)現(xiàn)
  • 在Kafka底層,一個(gè)日志又被細(xì)分成多個(gè)日志段,消息被追加到當(dāng)前最新的日志段
  • 當(dāng)寫滿一個(gè)日志段后,Kafka會(huì)自動(dòng)切分出一個(gè)新的日志段,并將老的日志段封存起來
  • Kafka在后臺(tái)有定時(shí)任務(wù)定期地檢查這些老的日志段是否能夠被刪除,從而實(shí)現(xiàn)回收磁盤空間的目的

消費(fèi)者

  1. 點(diǎn)對(duì)點(diǎn)模型(Peer to Peer,P2P):同一條消息只能被下游的一個(gè)消費(fèi)者消費(fèi),其他消費(fèi)者不能染指

  2. Kafka通過消費(fèi)者組(Consumer Group)來實(shí)現(xiàn)P2P模型
  • 消費(fèi)者組:多個(gè)消費(fèi)者實(shí)例共同組成一個(gè)組來消費(fèi)一組主題
  • 這組主題中的每個(gè)分區(qū)都只會(huì)被組內(nèi)的一個(gè)消費(fèi)者實(shí)例消費(fèi),其他消費(fèi)者實(shí)例不能消費(fèi)它
  • 消費(fèi)者對(duì)分區(qū)有所有權(quán)
  1. 引入消費(fèi)者組的目的:提高消費(fèi)者端的吞吐量(TPS)

  2. 消費(fèi)者實(shí)例(Consumer Instance):即可以是運(yùn)行消費(fèi)者應(yīng)用的進(jìn),也可以是一個(gè)線程

  3. 重平衡(Rebalance)
  • 若組內(nèi)的某個(gè)實(shí)例掛了,Kafka能夠自動(dòng)檢測(cè)到,然后把這個(gè)掛掉的實(shí)例之前負(fù)責(zé)的分區(qū)轉(zhuǎn)移給組內(nèi)其他存活的消費(fèi)者
  • 重平衡引發(fā)的消費(fèi)者問題很多,目前很多重平衡的Bug社區(qū)都無力解決
  1. 消費(fèi)者位移(Consumer Offset):記錄消費(fèi)者當(dāng)前消費(fèi)到了分區(qū)的哪個(gè)位置,隨時(shí)變化
  • 分區(qū)位移:表征的是消息在分區(qū)內(nèi)的位置,一旦消息被成功寫入到一個(gè)分區(qū)上,消息的分區(qū)位移就固定

小結(jié)

Java程序員面試必備——kafka的專業(yè)術(shù)語

  1. 消息(Record):消息是Kafka處理的主要對(duì)象

  2. 主題(Topic):主題是承載消息的邏輯容器,實(shí)際使用中多用來區(qū)分具體的業(yè)務(wù)

  3. 分區(qū)(Partition):一個(gè)有序不變的消息序列,每個(gè)主題下有多個(gè)分區(qū)

  4. 消息位移(Offset):也叫分區(qū)位移,表示一條消息在分區(qū)中的位置,是一個(gè)單調(diào)遞增且不變的值

  5. 副本(Replica)
  • Kafka中同一條消息能夠被拷貝到多個(gè)地方以提供數(shù)據(jù)冗余
  • 副本分為領(lǐng)導(dǎo)者副本和追隨者副本,副本在分區(qū)的層級(jí)下,每個(gè)分區(qū)可配置多個(gè)副本實(shí)現(xiàn)高可用
  1. 生產(chǎn)者(Producer):向主題發(fā)布消息的應(yīng)用程序

  2. 消費(fèi)者(Consumer):從主題訂閱消息的應(yīng)用程序

  3. 消費(fèi)者位移(Consumer Offset):表征消費(fèi)者的消費(fèi)進(jìn)度,每個(gè)消費(fèi)者都有自己的消費(fèi)者位移

  4. 消費(fèi)者組(Consumer Group):多個(gè)消費(fèi)者實(shí)例共同組成一個(gè)組,同時(shí)消費(fèi)多個(gè)分區(qū)以實(shí)現(xiàn)高吞吐

  5. 重平衡(Rebalance)
  • 消費(fèi)者組內(nèi)某個(gè)消費(fèi)者實(shí)例掛掉后,其他消費(fèi)者實(shí)例自動(dòng)重新分配訂閱分區(qū)的過程
  • 重平衡是Kafka消費(fèi)者端實(shí)現(xiàn)高可用的重要手段

寫在最后

  • 第一:看完點(diǎn)贊,感謝您的認(rèn)可;
  • ...
  • 第二:隨手轉(zhuǎn)發(fā),分享知識(shí),讓更多人學(xué)習(xí)到;
  • ...
  • 第三:記得點(diǎn)關(guān)注,每天更新的?。?!
  • ...

Java程序員面試必備——kafka的專業(yè)術(shù)語

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

新聞名稱:Java程序員面試必備——kafka的專業(yè)術(shù)語-創(chuàng)新互聯(lián)
URL鏈接:http://muchs.cn/article34/cosipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站導(dǎo)航網(wǎng)站制作、網(wǎng)站內(nèi)鏈、小程序開發(fā)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化