




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年拉薩貨運(yùn)從業(yè)資格證考試試題及答案解析
- 保障性合同范本
- 區(qū)域總經(jīng)理合同范本
- 醫(yī)療就業(yè)合同范本
- 包食堂合同范本
- 促銷(xiāo)活動(dòng)場(chǎng)地出租合同范本
- 農(nóng)村電商合同范本
- 利用合同范本
- 前廳接待勞務(wù)合同范本
- 5人合作合同范本
- 領(lǐng)導(dǎo)力培訓(xùn)領(lǐng)導(dǎo)力提升培訓(xùn)領(lǐng)導(dǎo)力培訓(xùn)
- 制藥工程 專(zhuān)業(yè)英語(yǔ) Unit 1(課堂PPT)
- 2022春蘇教版五年級(jí)下冊(cè)科學(xué)全冊(cè)單元課件全套
- 小學(xué)期末班級(jí)頒獎(jiǎng)典禮動(dòng)態(tài)PPT模板
- 液堿生產(chǎn)工序及生產(chǎn)流程敘述
- 圖解調(diào)音臺(tái)使用說(shuō)明(共14頁(yè))
- 人民軍隊(duì)性質(zhì)宗旨和優(yōu)良傳統(tǒng)教育課件教案
- 心理抗壓能力測(cè)試?yán)}
- 操作系統(tǒng)試題
- 電子秤校驗(yàn)記錄表
- (完整word)外研版八年級(jí)下冊(cè)英語(yǔ)課文電子版
評(píng)論
0/150
提交評(píng)論