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