国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kafka源碼解析之SocketServer,kafka消息隊列面試題

這篇具有很好參考價值的文章主要介紹了Kafka源碼解析之SocketServer,kafka消息隊列面試題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

=======================================================================

Kafka處理請求不區(qū)分優(yōu)先級,但這種絕對公平的策略有時會發(fā)生問題。

比如:創(chuàng)建一個單分區(qū)雙副本的主題,當(dāng)時集群中的Broker A機(jī)器保存了分區(qū)的Leader副本,Broker B保存了Follower副本。突然業(yè)務(wù)激增,Broker A瞬間積壓大量未處理PRODUCE請求。運維“不湊巧”執(zhí)行了次Preferred Leader選舉,將Broker B顯式地調(diào)整成了Leader。

若Producer把a(bǔ)cks設(shè)為all,那在LeaderAndIsr請求(負(fù)責(zé)調(diào)整副本角色,比如Follower和Leader角色轉(zhuǎn)換)之前積壓的那些PRODUCE請求就無法正常完成,因為這些請求要一直等待ISR中所有Follower副本同步完成。

但此時,Broker B成為了Leader,它上面的副本停止了拉取消息,這就可能出現(xiàn)一種結(jié)果:這些未完成的PRODUCE請求會一直保存在Broker A上的Purgatory緩存中。Leader/Follower的角色轉(zhuǎn)換,導(dǎo)致無法完成副本間同步,所以這些請求無法被成功處理,最終Broker A拋出超時異常,返回給Producer程序。

Purgatory緩存是Broker端暫存延時請求的地方。

這就是因為對請求不區(qū)分優(yōu)先級。

1 基本概念

=====================================================================

1.1 Data plane & Control plane


Data plane和Control plane的字面意思是數(shù)據(jù)面和控制面,各自對應(yīng)數(shù)據(jù)類請求和控制類請求。

Kafka請求類型分為:

  • 數(shù)據(jù)類請求

Data plane負(fù)責(zé)處理數(shù)據(jù)類請求

  • 控制類請求

Control plane負(fù)責(zé)處理控制類請求

Controller與Broker交互的請求類型有如下種類:

  • LeaderAndIsrRequest

  • StopReplicaRequest

  • UpdateMetadataRequest

都屬控制類請求,通常應(yīng)該被賦予高優(yōu)先級,比如PRODUCE和FETCH請求。

SocketServer負(fù)責(zé)對這兩大類請求區(qū)分處理。

1.2 監(jiān)聽器(Listener)


區(qū)分?jǐn)?shù)據(jù)類請求和控制類請求不同處理方式的主要途徑。即創(chuàng)建多組監(jiān)聽器分別執(zhí)行數(shù)據(jù)類和控制類請求的處理。

  • Kafka Broker端如下參數(shù)用以配置監(jiān)聽器

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

監(jiān)聽器定義為

EndPoint類


Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

屬性

  • host

Broker主機(jī)名。

  • port

Broker端口號。

  • listenerName

監(jiān)聽器名稱。目前預(yù)定義的名稱包括

  • PLAINTEXT

  • SSL

  • SASL_PLAINTEXT

  • SASL_SSL

Kafka允許自定義其他監(jiān)聽器名稱,比如CONTROLLER、INTERNAL。

  • securityProtocol:監(jiān)聽器使用的安全協(xié)議。Kafka支持4種安全協(xié)議

  • PLAINTEXT

  • SSL

  • SASL_PLAINTEXT

  • SASL_SSL

Broker端參數(shù)

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

比如若Broker端參數(shù)配置如下:

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

配置3個監(jiān)聽器,分別是CONTROLLER、INTERNAL和EXTERNAL,使用的安全協(xié)議分別是PLAINTEXT、PLAINTEXT和SSL。

那SocketServer如何實現(xiàn)Data plane與Control plane分離的呢?

SocketServer

===========================================================================

屬性


  • 實現(xiàn)請求優(yōu)先級相關(guān)的字段

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

對于Data plane,線程池的說法沒有問題,因為Processor線程確實有很多,而Acceptor也可能多個,因為SocketServer會為每個EndPoint(每套監(jiān)聽器)創(chuàng)建一個對應(yīng)的Acceptor線程。

但Control plane不同。

Control plane那組屬性變量都是以O(shè)pt結(jié)尾的,即Option類型,完全可以不使用Control plane,即你可讓Kafka不區(qū)分請求類型,2.2.0之前設(shè)計就是這樣。

但一旦開啟Control plane設(shè)置,其Processor線程和Acceptor線程都是1個。

它對應(yīng)的RequestChannel里面的請求隊列長度被硬編碼成20,即控制類請求的數(shù)量應(yīng)該遠(yuǎn)小于數(shù)據(jù)類請求,因而不需要為它創(chuàng)建線程池和較深的請求隊列。

創(chuàng)建Data plane所需資源

===============================================================================

  • 負(fù)責(zé)為Data plane創(chuàng)建所需資源

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

  • 執(zhí)行流程

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但對于培訓(xùn)機(jī)構(gòu)動則幾千的學(xué)費,著實壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負(fù)擔(dān)。
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開發(fā)知識點,真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新

如果你覺得這些內(nèi)容對你有幫助,可以添加V獲?。簐ip1024b (備注Java)
Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

最后

既已說到spring cloud alibaba,那對于整個微服務(wù)架構(gòu),如果想要進(jìn)一步地向上提升自己,到底應(yīng)該掌握哪些核心技能呢?

就個人而言,對于整個微服務(wù)架構(gòu),像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等這些都是最最核心的知識,架構(gòu)師必經(jīng)之路!下圖,是自繪的微服務(wù)架構(gòu)路線體系大綱,如果有還不知道自己該掌握些啥技術(shù)的朋友,可根據(jù)小編手繪的大綱進(jìn)行一個參考。

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

如果覺得圖片不夠清晰,也可來找小編分享原件的xmind文檔!

且除此份微服務(wù)體系大綱外,我也有整理與其每個專題核心知識點對應(yīng)的最強(qiáng)學(xué)習(xí)筆記:

  • 出神入化——SpringCloudAlibaba.pdf

  • SpringCloud微服務(wù)架構(gòu)筆記(一).pdf

  • SpringCloud微服務(wù)架構(gòu)筆記(二).pdf

  • SpringCloud微服務(wù)架構(gòu)筆記(三).pdf

  • SpringCloud微服務(wù)架構(gòu)筆記(四).pdf

  • Dubbo框架RPC實現(xiàn)原理.pdf

  • Dubbo最新全面深度解讀.pdf

  • Spring Boot學(xué)習(xí)教程.pdf

  • SpringBoo核心寶典.pdf

  • 第一本Docker書-完整版.pdf

  • 使用SpringCloud和Docker實戰(zhàn)微服務(wù).pdf

  • K8S(kubernetes)學(xué)習(xí)指南.pdf

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

另外,如果不知道從何下手開始學(xué)習(xí)呢,小編這邊也有對每個微服務(wù)的核心知識點手繪了其對應(yīng)的知識架構(gòu)體系大綱,不過全是導(dǎo)出的xmind文件,全部的源文件也都在此!

Kafka源碼解析之SocketServer,kafka消息隊列面試題,2024年程序員學(xué)習(xí),kafka,分布式

寶典.pdf

  • 第一本Docker書-完整版.pdf

  • 使用SpringCloud和Docker實戰(zhàn)微服務(wù).pdf

  • K8S(kubernetes)學(xué)習(xí)指南.pdf

[外鏈圖片轉(zhuǎn)存中…(img-CP9XbQli-1712095401168)]

另外,如果不知道從何下手開始學(xué)習(xí)呢,小編這邊也有對每個微服務(wù)的核心知識點手繪了其對應(yīng)的知識架構(gòu)體系大綱,不過全是導(dǎo)出的xmind文件,全部的源文件也都在此!

[外鏈圖片轉(zhuǎn)存中…(img-bYCraRMs-1712095401169)]文章來源地址http://www.zghlxwxcb.cn/news/detail-844720.html

到了這里,關(guān)于Kafka源碼解析之SocketServer,kafka消息隊列面試題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 32個Java面試必考點-09(上)消息隊列Kafka架構(gòu)與原理

    32個Java面試必考點-09(上)消息隊列Kafka架構(gòu)與原理

    本課時主要講解消息隊列與數(shù)據(jù)庫相關(guān)的知識,重點講解三部分知識點: 1.Kafka 的架構(gòu)與消息交互流程; 2.數(shù)據(jù)庫事務(wù)的 4 大特性和分類; 3.MySQL 相關(guān)的內(nèi)容,比如索引、MySQL 調(diào)優(yōu)等。 消息隊列與數(shù)據(jù)庫知識點 先來看看相關(guān)知識點匯總,如下圖。首先為了防止歧義進(jìn)行說明

    2024年02月20日
    瀏覽(25)
  • 【Kafka】消息隊列Kafka基礎(chǔ)

    【Kafka】消息隊列Kafka基礎(chǔ)

    ??消息隊列,經(jīng)??s寫為MQ。從字面上來理解,消息隊列是一種用來存儲消息的隊列。例如Java中的隊列: ??上述代碼,創(chuàng)建了一個隊列,先往隊列中添加了一個消息,然后又從隊列中取出了一個消息。這說明了隊列是可以用來存取消息的。我們可以簡單理解消息隊列就是

    2024年02月16日
    瀏覽(20)
  • 【Kafka】消息隊列Kafka進(jìn)階

    【Kafka】消息隊列Kafka進(jìn)階

    生產(chǎn)者分區(qū)寫入策略 生產(chǎn)者寫入消息到 topic,Kafka 將依據(jù)不同的策略將數(shù)據(jù)分配到不同的分區(qū)中。 輪詢分區(qū)策略 隨機(jī)分區(qū)策略 按key分區(qū)分配策略 自定義分區(qū)策略 輪詢策略 ??默認(rèn)的策略,也是使用最多的策略,可以最大限度保證所有消息平均分配到一個分區(qū)。如果在生產(chǎn)

    2024年02月15日
    瀏覽(18)
  • 分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的方式

    分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的方式

    不管是把Kafka作為消息隊列、消息總線還是數(shù)據(jù)存儲平臺,總是需要一個可以往Kafka寫入數(shù)據(jù)的生產(chǎn)者、一個可以從Kafka讀取數(shù)據(jù)的消費者,或者一個兼具兩種角色的應(yīng)用程序。 Kafka 生產(chǎn)者是指使用 Apache Kafka 消息系統(tǒng)的應(yīng)用程序,它們負(fù)責(zé)將消息發(fā)送到 Kafka 集群中的一個或多

    2024年02月13日
    瀏覽(29)
  • 分布式 - 消息隊列Kafka:Kafka 消費者消息消費與參數(shù)配置

    分布式 - 消息隊列Kafka:Kafka 消費者消息消費與參數(shù)配置

    01. 創(chuàng)建消費者 在讀取消息之前,需要先創(chuàng)建一個KafkaConsumer對象。創(chuàng)建KafkaConsumer對象與創(chuàng)建KafkaProducer對象非常相似——把想要傳給消費者的屬性放在Properties對象里。 為簡單起見,這里只提供4個必要的屬性:bootstrap.servers、key.deserializer 和 value.deserializer。 ① bootstrap.servers 指

    2024年02月12日
    瀏覽(27)
  • 分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的分區(qū)策略

    分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的分區(qū)策略

    01. Kafka 分區(qū)的作用 分區(qū)的作用就是提供負(fù)載均衡的能力,或者說對數(shù)據(jù)進(jìn)行分區(qū)的主要原因,就是為了實現(xiàn)系統(tǒng)的高伸縮性。不同的分區(qū)能夠被放置到不同節(jié)點的機(jī)器上,而數(shù)據(jù)的讀寫操作也都是針對分區(qū)這個粒度而進(jìn)行的,這樣每個節(jié)點的機(jī)器都能獨立地執(zhí)行各自分區(qū)的

    2024年02月13日
    瀏覽(32)
  • 消息隊列 Kafka

    消息隊列 Kafka

    Kafka 是一個分布式的基于發(fā)布/訂閱模式的消息隊列(MQ,Message Queue),主要應(yīng)用于大數(shù)據(jù)實時處理領(lǐng)域 在高并發(fā)環(huán)境下,同步請求來不及處理會發(fā)生堵塞,從而觸發(fā)too many connection錯誤,引發(fā)雪崩效應(yīng)。比如大量的請求并發(fā)訪問數(shù)據(jù)庫,導(dǎo)致行鎖表鎖,最后請求線程會堆積過

    2024年02月07日
    瀏覽(22)
  • 消息隊列之王——Kafka

    消息隊列之王——Kafka

    ? ? 在學(xué)習(xí)kafka之前,我們需要先學(xué)習(xí) Zookeeper ,那Zookeeper是什么呢? Zookeeper 是一個開源的分布式的,為分布式框架提供協(xié)調(diào)服務(wù)的Apache項目。 ????????Zookeeper從 設(shè)計模式 角度來理解:是一個基于觀察者模式設(shè)計的 分布式服務(wù)管理框架 ,它 負(fù)責(zé)存儲和管理 大家都關(guān)心

    2024年01月23日
    瀏覽(54)
  • 消息隊列——kafka基礎(chǔ)

    消息隊列——kafka基礎(chǔ)

    首先自然是要列出Kafka官網(wǎng)地址啦:https://kafka.apache.org/ 概述 定義 發(fā)布/訂閱模式 ? 原文鏈接:https://blog.csdn.net/tjvictor/article/details/5223309 ? 定義了一種 一對多 的依賴關(guān)系,讓 多個訂閱者對象同時監(jiān)聽某一個主題對象 。這個主題對象在自身狀態(tài)變化時,會通知所有訂閱者對

    2024年02月04日
    瀏覽(24)
  • 分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的3種方式

    分布式 - 消息隊列Kafka:Kafka生產(chǎn)者發(fā)送消息的3種方式

    不管是把Kafka作為消息隊列、消息總線還是數(shù)據(jù)存儲平臺,總是需要一個可以往Kafka寫入數(shù)據(jù)的生產(chǎn)者、一個可以從Kafka讀取數(shù)據(jù)的消費者,或者一個兼具兩種角色的應(yīng)用程序。 Kafka 生產(chǎn)者是指使用 Apache Kafka 消息系統(tǒng)的應(yīng)用程序,它們負(fù)責(zé)將消息發(fā)送到 Kafka 集群中的一個或多

    2024年02月13日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包