Spring-Kafka(一)—— Kafka,你好

簡(jiǎn)介

這個(gè)專(zhuān)題講什么呢?SpringBoot整合Kafka,不會(huì)過(guò)多的涉及Kafka的設(shè)計(jì)、源碼等,主要還是在于講述SpringBoot是如何整合Kafka的,以及一些簡(jiǎn)單的實(shí)現(xiàn),文章所有的表述皆是基于本人的理解,如有不恰之處,請(qǐng)?jiān)谖恼碌撞吭u(píng)論。

Kafka認(rèn)識(shí)一下

Kafka異軍突起,是近來(lái)非?;馃岬囊豢钕⒅虚g件。消息中間件的作用非常多,常用作系統(tǒng)業(yè)務(wù)的解耦。例如最常聽(tīng)到的秒殺業(yè)務(wù),我們也能使用消息中間件對(duì)業(yè)務(wù)進(jìn)行解耦,用戶(hù)發(fā)起秒殺請(qǐng)求后,系統(tǒng)首先會(huì)將該請(qǐng)求轉(zhuǎn)發(fā)到中間件中,然后返回一個(gè)等待的結(jié)果(用戶(hù)界面顯示正在搶購(gòu),請(qǐng)耐心等待),而我們系統(tǒng)會(huì)有監(jiān)聽(tīng)器去接收這些秒殺請(qǐng)求進(jìn)行對(duì)應(yīng)的業(yè)務(wù)處理,最重要的是,整個(gè)系統(tǒng)的擴(kuò)展顯得非常簡(jiǎn)單,我們只需要部署Kafka的集群,以及后臺(tái)的負(fù)載均衡就能快速提高系統(tǒng)的訪(fǎng)問(wèn)并發(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)單來(lái)說(shuō)就是生產(chǎn)者(Producer)發(fā)送消息到隊(duì)列,消費(fèi)者(Consumer)從隊(duì)列中取出消息。這種模型的特點(diǎn)就是一條消息只會(huì)被一個(gè)消費(fèi)者接收,一但有消費(fèi)者消費(fèi)了這條消息,其他消費(fèi)者就沒(méi)辦法重復(fù)消費(fèi)了。

點(diǎn)對(duì)點(diǎn)
發(fā)布-訂閱消息系統(tǒng)

發(fā)布訂閱的模型也比較好理解,首先消費(fèi)者需要訂閱這個(gè)隊(duì)列,生產(chǎn)者只要發(fā)送一條消息到隊(duì)列中,所有已訂閱該隊(duì)列的的消費(fèi)者都能接收到該消息,未訂閱的用戶(hù)則無(wú)法接收。就像我們的微信關(guān)注微信公眾號(hào)一樣,只有關(guān)注了的用戶(hù)才會(huì)收到公眾號(hào)推送的消息。


發(fā)布訂閱

Kafka幾個(gè)主要的概念

Kafka結(jié)構(gòu)
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也是重新開(kāi)始計(jì)算(也就是會(huì)重復(fù))

Group

Group為消費(fèi)者組的意思,一個(gè)Group里面包含多個(gè)消費(fèi)者

Message

Message為消息的意思,是隊(duì)列中消息的承載體,也就是通信的基本單位,Producer可以向Topic中發(fā)送Message

這里就需要說(shuō)說(shuō)為什么這樣設(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的吞吐量。不過(guò)這樣的設(shè)計(jì)也會(huì)帶來(lái)不少的不便,比如特定場(chǎng)景下你需要去維護(hù)多個(gè)Partition之間的關(guān)系。這里就不多講了。

握個(gè)手,say個(gè)goodbye

Kafka的簡(jiǎn)單認(rèn)識(shí)就到這里,接下來(lái)進(jìn)入Ctrl+C和Ctrl+V的環(huán)節(jié)。


更多文章請(qǐng)關(guān)注該 Spring-Kafka史上最強(qiáng)入門(mén)教程 專(zhuān)題

博主常駐地~ http://blog.seasedge.cn/archives/8.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,915評(píng)論 13 425
  • Kafka簡(jiǎn)介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O(1)的方...
    Alukar閱讀 3,155評(píng)論 0 43
  • 本文轉(zhuǎn)載自http://dataunion.org/?p=9307 背景介紹Kafka簡(jiǎn)介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,592評(píng)論 0 34
  • 背景介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O...
    高廣超閱讀 13,062評(píng)論 8 167
  • 昨夜,又一次夢(mèng)見(jiàn)那棵古槐。 這樣的夢(mèng)已經(jīng)不止一次兩次了。 從我記事起,那棵槐樹(shù)就已經(jīng)很粗很粗了。粗得有幾個(gè)人才能合...
    平凡的林大蕾閱讀 407評(píng)論 4 4

友情鏈接更多精彩內(nèi)容