柚子快報(bào)邀請(qǐng)碼778899分享:分布式 Kafka復(fù)習(xí)
柚子快報(bào)邀請(qǐng)碼778899分享:分布式 Kafka復(fù)習(xí)
消息中間件的作用:
異步處理:
與并行相比,雖然減少了時(shí)間,但是還是得等待其他線程執(zhí)行完,但是消息中間件對(duì)于簡(jiǎn)單的業(yè)務(wù)處理,還要引入一個(gè)中間件也比較復(fù)雜
如果我投遞了簡(jiǎn)歷之后需要發(fā)送成功郵件以及短信,就可以交給消息中間件
就像數(shù)據(jù)庫(kù)、redis數(shù)據(jù)一致性,需要用到延遲雙刪,也可以異步處理
應(yīng)用解耦:
比如用戶下單之后,需要去庫(kù)存系統(tǒng)縮減庫(kù)存,這時(shí)候呢如果通過(guò)feign遠(yuǎn)程調(diào)用,這樣耦合度就比較高,通過(guò)消息中間件去確保最終一致性
流量削峰:
像12306在搶票的時(shí)候,并發(fā)量極高,就將這些請(qǐng)求放在消息隊(duì)列中一個(gè)個(gè)的去處理
日志處理:
將日志放在消息隊(duì)列中,解決大日志傳輸?shù)膯?wèn)題。
流處理
Kafka的優(yōu)點(diǎn):
天然支持分布式
持久化數(shù)據(jù)(默認(rèn)保存七天)
流式處理動(dòng)態(tài)的數(shù)據(jù)
高性能、高可用、高伸縮性(集群目標(biāo))
基本概念:
消息和批次:
消息:由字節(jié)數(shù)組(byteBuffer)組成
為了提高效率,會(huì)將消息以批次(生產(chǎn)者源碼里的緩沖池)的形式寫(xiě)入
序列化和反序列化(JSON或者XML)
主題和分區(qū):
topic:以主題的形式進(jìn)行分類(lèi)(類(lèi)似于數(shù)據(jù)庫(kù)中的表),一個(gè)主題可以跨越多個(gè)服務(wù)器,高性能之一,多臺(tái)服務(wù)器磁盤(pán)讀寫(xiě)比單臺(tái)更高
partition:一個(gè)topic對(duì)應(yīng)多個(gè)分區(qū),消息順序追加,提高吞吐量,負(fù)載均衡,增強(qiáng)擴(kuò)展性
生產(chǎn)者:
消息默認(rèn)情況下均衡分布在所有分區(qū)上,如果需要指定分區(qū),可以自己寫(xiě)分區(qū)器或者根據(jù)key
直接指定分區(qū):
消費(fèi)者:
消費(fèi)者訂閱主題,可以訂閱不同的主題,可以負(fù)責(zé)不同分區(qū),但是一個(gè)分區(qū)只能對(duì)應(yīng)一個(gè)消費(fèi)者,按照消息順序讀寫(xiě)
分區(qū)的偏移量都會(huì)保存在kafka上consumer_offset這個(gè)主題上
Broker和集群:
主要工作接收消息,設(shè)置偏移量,磁盤(pán)保存
拉模式,響應(yīng)請(qǐng)求
Brocker會(huì)組成一個(gè)集群,每個(gè)集群中會(huì)選出一個(gè)集群控制器(?Kafka使用 Zookeeper的臨時(shí)節(jié)點(diǎn)來(lái)選舉控制器,并在節(jié)點(diǎn)加入集群或退出集群時(shí)通知控制器)。包括進(jìn)行分區(qū),監(jiān)控brocker
集群內(nèi)布通過(guò)管道技術(shù)進(jìn)行高效的復(fù)制
消息持久化:要么時(shí)間7天要么大小1G
常見(jiàn)配置:
brocker id 集群不能重復(fù)
listeners:監(jiān)聽(tīng)列表
zookeeper connect:集群的地址
num partitions:分區(qū)數(shù)量
日志時(shí)間
分區(qū)大小
日志片段大小
能接收的最大字節(jié)數(shù)
硬件對(duì)于性能的影響:
磁盤(pán)吞吐量影響生產(chǎn)者,寫(xiě)的快性能就好
柚子快報(bào)邀請(qǐng)碼778899分享:分布式 Kafka復(fù)習(xí)
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。