2023學(xué)年完整公開(kāi)課版Kafka設(shè)計(jì)思想_第1頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka設(shè)計(jì)思想_第2頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka設(shè)計(jì)思想_第3頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka設(shè)計(jì)思想_第4頁(yè)
2023學(xué)年完整公開(kāi)課版Kafka設(shè)計(jì)思想_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Kafka設(shè)計(jì)思想2知識(shí)目標(biāo)Kafka設(shè)計(jì)思想01能力目標(biāo)了解kafka設(shè)計(jì)思想02學(xué)習(xí)目標(biāo)3目錄01分區(qū)02消費(fèi)者03生產(chǎn)者分區(qū)-靈活性(負(fù)載均衡控制、靈活消費(fèi))4Kafka允許Partition在集群內(nèi)的Broker之間任意移動(dòng),以此來(lái)均衡可能存在的數(shù)據(jù)傾斜問(wèn)題。Partition支持自定義的分區(qū)算法,例如可以將同一個(gè)Key的所有消息都路由到同一個(gè)Partition上去。同時(shí)Leader也可以在In-Sync的Replica中遷移。由于針對(duì)某一個(gè)Partition的所有讀寫(xiě)請(qǐng)求都是只由Leader來(lái)處理,所以Kafka會(huì)盡量把Leader均勻的分散到集群的各個(gè)節(jié)點(diǎn)上,以免造成網(wǎng)絡(luò)流量過(guò)于集中。分區(qū)有偏移量的概念。消費(fèi)者通過(guò)控制偏移量,可以靈活的消費(fèi)消息。分區(qū)-并發(fā)性5任意Partition在某一個(gè)時(shí)刻只能被一個(gè)ConsumerGroup內(nèi)的一個(gè)Consumer消費(fèi)(反過(guò)來(lái)一個(gè)Consumer則可以同時(shí)消費(fèi)多個(gè)Partition),Kafka非常簡(jiǎn)潔的Offset機(jī)制最小化了Broker和Consumer之間的交互,這使Kafka并不會(huì)像同類(lèi)其他消息隊(duì)列一樣,隨著下游Consumer數(shù)目的增加而成比例的降低性能。此外,如果多個(gè)Consumer恰巧都是消費(fèi)時(shí)間序上很相近的數(shù)據(jù),可以達(dá)到很高的PageCache命中率,因而Kafka可以非常高效的支持高并發(fā)讀操作,實(shí)踐中基本可以達(dá)到單機(jī)網(wǎng)卡上限。6分區(qū)-高可用和分區(qū)有序消費(fèi)高可用:分區(qū)有序消費(fèi):分區(qū)采用leader-follower的組織架構(gòu)來(lái)保證高可用kafka中每個(gè)分區(qū)都是一個(gè)順序、不可變的消息隊(duì)列。提供一個(gè)分區(qū)內(nèi)順序消費(fèi)的語(yǔ)義分區(qū)-high-levelapivslow-levelapi7ConsumerAPI分為Highlevel和Lowlevel兩種。前一種重度依賴Zookeeper,所以性能差一些且不自由,但是超省心。第二種不依賴Zookeeper服務(wù),無(wú)論從自由度和性能上都有更好的表現(xiàn),但是所有的異常(Leader遷移、Offset越界、Broker宕機(jī)等)和Offset的維護(hù)都需要自行處理??偨Y(jié):highlevelapi:zookeeper自動(dòng)管理offset,自動(dòng)獲取lastoffset,包括leader遷移、broker宕機(jī)都自動(dòng)化管理lowlevelapi:手動(dòng)管理offset、leader遷移、broker宕機(jī)的事情在kafka0.9.x以后,雖然仍然支持使用這兩種API,但是建議還是使用新的newconsumer(消除了這兩類(lèi)API使用的區(qū)別,一套API可以自由選擇按照l(shuí)owlevel來(lái)使用還是highlevel來(lái)使用)來(lái)代替這兩種consumerapi。分區(qū)-為什么kafka是pull模型8消費(fèi)者應(yīng)該從broker中pull數(shù)據(jù)還是broker應(yīng)該向消費(fèi)者push數(shù)據(jù),在這方面,kafka遵循比較傳統(tǒng)的設(shè)計(jì),大多數(shù)消息系統(tǒng),生產(chǎn)者推消息到broker,消費(fèi)者從broker拉取消息,一些logging-centric的系統(tǒng),比如Scribe和ApacheFlume,采用非常不同的push模式。事實(shí)上,push模式和pull模式各有優(yōu)劣。push模式很難適應(yīng)消費(fèi)速率不同的消費(fèi)者,因?yàn)橄l(fā)送速率是由broker決定的。push模式的目標(biāo)是盡可能以最快速度傳遞消息,但是這樣很容易造成consumer來(lái)不及處理消息,典型的表現(xiàn)就是拒絕服務(wù)以及網(wǎng)絡(luò)擁塞。而pull模式則可以根據(jù)consumer的消費(fèi)能力以適當(dāng)?shù)乃俾氏M(fèi)消息?;趐ull模式的另一個(gè)優(yōu)點(diǎn)是,它有助于積極的批處理的數(shù)據(jù)發(fā)送到消費(fèi)者?;趐ush模式必須選擇要么立即發(fā)送請(qǐng)求或者積累更多的數(shù)據(jù),稍后發(fā)送它,無(wú)論消費(fèi)者是否能立刻處理它,如果是低延遲,這將導(dǎo)致短時(shí)間只發(fā)送一條消息,不用緩存,這是實(shí)在是一種浪費(fèi),基于pull的設(shè)計(jì)解決這個(gè)問(wèn)題,消費(fèi)者總是pull在日志的當(dāng)前位置之后pull所有可用的消息(或配置一些大size),所以消費(fèi)者可設(shè)置消費(fèi)多大的量,也不會(huì)引入不必要的等待時(shí)間。生產(chǎn)者-生產(chǎn)者上的優(yōu)化方法9數(shù)據(jù)重排序、MessageSet等手段來(lái)使得消息批量順序?qū)懭霐?shù)據(jù)壓縮異步發(fā)送負(fù)載均衡生產(chǎn)者-信息丟失問(wèn)題10Kafka采用MessageSet也導(dǎo)致在可用性上一定程度的妥協(xié)。每次發(fā)送數(shù)據(jù)時(shí),Producer都是send()之后就認(rèn)為已經(jīng)發(fā)送出去了,但其實(shí)大多數(shù)情況下消息還在內(nèi)存的MessageSet當(dāng)中,尚未發(fā)送到網(wǎng)絡(luò),這時(shí)候如果Producer掛掉,那就會(huì)出現(xiàn)丟數(shù)據(jù)的情況。生產(chǎn)者-信息丟失問(wèn)題11解決辦法:采用網(wǎng)絡(luò)中的ack機(jī)制。當(dāng)然這種是可選的。通過(guò)配置acks的值來(lái)控制。acks=0:關(guān)閉ack,以全速發(fā)送acks=1:消息只需要被Leader接收并確認(rèn)即可,其他的Replica可以進(jìn)行異步拉取無(wú)需立即進(jìn)行確認(rèn),在保證可靠性的同時(shí)又不會(huì)把效率拉得很低acks=all:消

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論