簡(jiǎn)介
這個(gè)專題講什么呢?SpringBoot整合Kafka乾吻,不會(huì)過多的涉及Kafka的設(shè)計(jì)髓梅、源碼等,主要還是在于講述SpringBoot是如何整合Kafka的绎签,以及一些簡(jiǎn)單的實(shí)現(xiàn)枯饿,文章所有的表述皆是基于本人的理解,如有不恰之處辜御,請(qǐng)?jiān)谖恼碌撞吭u(píng)論鸭你。
Kafka認(rèn)識(shí)一下
Kafka異軍突起,是近來非城苋ǎ火熱的一款消息中間件袱巨。消息中間件的作用非常多,常用作系統(tǒng)業(yè)務(wù)的解耦碳抄。例如最常聽到的秒殺業(yè)務(wù)愉老,我們也能使用消息中間件對(duì)業(yè)務(wù)進(jìn)行解耦,用戶發(fā)起秒殺請(qǐng)求后剖效,系統(tǒng)首先會(huì)將該請(qǐng)求轉(zhuǎn)發(fā)到中間件中嫉入,然后返回一個(gè)等待的結(jié)果(用戶界面顯示正在搶購(gòu)焰盗,請(qǐng)耐心等待),而我們系統(tǒng)會(huì)有監(jiān)聽器去接收這些秒殺請(qǐng)求進(jìn)行對(duì)應(yīng)的業(yè)務(wù)處理咒林,最重要的是熬拒,整個(gè)系統(tǒng)的擴(kuò)展顯得非常簡(jiǎn)單,我們只需要部署Kafka的集群垫竞,以及后臺(tái)的負(fù)載均衡就能快速提高系統(tǒng)的訪問并發(fā)量澎粟。
Kafka的最大的特點(diǎn)就是高吞吐量以及可水平擴(kuò)展,正因這兩點(diǎn)Kafka非常適合處理數(shù)據(jù)量龐大的業(yè)務(wù)欢瞪,例如使用Kafka做日志分析活烙、數(shù)據(jù)計(jì)算。新版本Kafka也推出了Stream API遣鼓,可以更好的支持?jǐn)?shù)據(jù)流處理啸盏。基于這些特性我們可以實(shí)現(xiàn)非常多的系統(tǒng)功能骑祟。
Kafka安裝
這里就不造輪子了回懦,本文章已聯(lián)合百度提供Kafka安裝教程,謝謝合作
點(diǎn)對(duì)點(diǎn)次企、發(fā)布訂閱
點(diǎn)對(duì)點(diǎn)消息系統(tǒng)
以下模型為點(diǎn)對(duì)點(diǎn)消息系統(tǒng)的模型粉怕,簡(jiǎn)單來說就是生產(chǎn)者(Producer)發(fā)送消息到隊(duì)列,消費(fèi)者(Consumer)從隊(duì)列中取出消息抒巢。這種模型的特點(diǎn)就是一條消息只會(huì)被一個(gè)消費(fèi)者接收,一但有消費(fèi)者消費(fèi)了這條消息秉犹,其他消費(fèi)者就沒辦法重復(fù)消費(fèi)了蛉谜。
發(fā)布-訂閱消息系統(tǒng)
發(fā)布訂閱的模型也比較好理解,首先消費(fèi)者需要訂閱這個(gè)隊(duì)列崇堵,生產(chǎn)者只要發(fā)送一條消息到隊(duì)列中型诚,所有已訂閱該隊(duì)列的的消費(fèi)者都能接收到該消息,未訂閱的用戶則無法接收鸳劳。就像我們的微信關(guān)注微信公眾號(hào)一樣狰贯,只有關(guān)注了的用戶才會(huì)收到公眾號(hào)推送的消息。
Kafka幾個(gè)主要的概念
Broker
Broker為節(jié)點(diǎn)的意思赏廓,我們啟動(dòng)的單個(gè)Kafka實(shí)例則為一個(gè)Broker涵紊,多個(gè)Broker可以組成Kafka集群
Topic
Topic為主題的意思,也就是相當(dāng)于消息系統(tǒng)中的隊(duì)列(queue)幔摸,一個(gè)Topic中存在多個(gè)Partition
Partition
Partition為分區(qū)的意思摸柄,是構(gòu)成Kafka存儲(chǔ)結(jié)構(gòu)的最小單位
Partition offset
offset為消息偏移量,以Partition為單位既忆,即使在同一個(gè)Topic中驱负,不同Partition的offset也是重新開始計(jì)算(也就是會(huì)重復(fù))
Group
Group為消費(fèi)者組的意思嗦玖,一個(gè)Group里面包含多個(gè)消費(fèi)者
Message
Message為消息的意思,是隊(duì)列中消息的承載體跃脊,也就是通信的基本單位宇挫,Producer可以向Topic中發(fā)送Message
這里就需要說說為什么這樣設(shè)計(jì)了:
首先Topic中有分區(qū)的概念,每個(gè)分區(qū)保存各自的數(shù)據(jù)酪术,而我們的Group這對(duì)應(yīng)著Topic器瘪,也就是這個(gè)Topic中的數(shù)據(jù)都是由該Group去消費(fèi),也就是允許多個(gè)消費(fèi)者同時(shí)消費(fèi)拼缝,這樣能大大提高Kafka的吞吐量娱局。不過這樣的設(shè)計(jì)也會(huì)帶來不少的不便,比如特定場(chǎng)景下你需要去維護(hù)多個(gè)Partition之間的關(guān)系咧七。這里就不多講了衰齐。
握個(gè)手,say個(gè)goodbye
Kafka的簡(jiǎn)單認(rèn)識(shí)就到這里继阻,接下來進(jìn)入Ctrl+C和Ctrl+V的環(huán)節(jié)耻涛。