Kafka簡介(01)- 消息隊列入門

在Java的學(xué)習(xí)路線中,消息隊列是必不可少的一部分。我們從ssm或者springboot的架構(gòu)的搭建,功能實現(xiàn),產(chǎn)品完善,會經(jīng)歷技術(shù)基礎(chǔ),廣度,產(chǎn)品需求等等的多重考驗,如果“有幸”軟件的使用人數(shù)不是很多,那么我們對技術(shù)的需求也許后面不會太高,只需要對產(chǎn)品精益求精即可(如果產(chǎn)品能應(yīng)用成功,或者重構(gòu)成功)。

但是如果產(chǎn)品有更高的需求,并發(fā)量增高,開始服務(wù)化,對高可用,高性能,可伸縮,可擴展等方面有了巨大的需求,那我們不僅要對框架技術(shù),對公司內(nèi)使用的整體技術(shù)架構(gòu),自動化開發(fā)測試架構(gòu)都要進行調(diào)整,以適應(yīng)較高的需求。比較經(jīng)典的是互聯(lián)網(wǎng)公司的產(chǎn)品,很多一部分都具備這個特點,互聯(lián)網(wǎng)一句經(jīng)典的話是:天下武功,唯“快”不破!充分看出對性能的注重。

并發(fā)量增大,最開始的需求可能就是讀需求,為了適應(yīng),數(shù)據(jù)方面我們會經(jīng)歷雙庫讀寫分離,增加緩存等階段,經(jīng)過實踐,緩存和讀寫分離等技術(shù)架構(gòu)的確能有效的增加訪問量,抵抗住壓力,緩存技術(shù)不是本教程的重點,因此不會細討論。

讀壓力后,可能下一個就是寫壓力,緩解寫壓力最經(jīng)典的技術(shù)就是消息隊列!在傳統(tǒng)行業(yè),相信大家多少都接觸過JMS,作為J2EE規(guī)范的一部分,經(jīng)典的容器中間件(Jboss,Webblogic等)都有JMS的實現(xiàn)(如果沒用過可以簡單學(xué)一下,作為Java原生的消息隊列,學(xué)習(xí)成本還是比較低的),在JMS中,有Queue和Topic兩種Subject,包含了Send/Receive和Publish/Subscribe兩種收發(fā)模式,但是,在互聯(lián)網(wǎng)公司,JMS的應(yīng)用并不廣泛,一方面是商業(yè)的AppServer都是收費的,而互聯(lián)網(wǎng)產(chǎn)品大多是免費的,因此使用的產(chǎn)品也多是免費的,另一個原因是這些AppServer大多實現(xiàn)性能較差,例如有評測顯示,ActiveMQ比JbossMQ速度要高十倍,某些場景下ZeroMQ的速度要高出一個數(shù)量級。

此外,一些開源的MQ的實現(xiàn)針對互聯(lián)網(wǎng)行業(yè),除了提供Queue和Topic的支持,還有partition,group,broker等更為復(fù)雜的消息模型(例如Kafka),Kafka的設(shè)計具有使用簡單,功能豐富,高性能等優(yōu)點,天生具有持久,分片,復(fù)制等功能,使用時對開發(fā)者和運維人員的體驗都很好,是非常優(yōu)秀的開源消息隊列產(chǎn)品。

學(xué)習(xí)Kafka分為兩種,一種是單純結(jié)合框架學(xué)習(xí)安裝和使用,比如學(xué)習(xí)安裝(參見此處)成功后,結(jié)合springboot框架,學(xué)習(xí)如何整合kafka(參見此處),對于開發(fā)者來說,這樣學(xué)習(xí)可以快速上手,后面遇到問題(如消息丟失,重復(fù)讀取等)會查一查解決方案,其它一切問題都交給運維人員解決,這樣學(xué)習(xí)可以做到知其然,但是不會知其所以然。

作為kafka的學(xué)習(xí)者和開發(fā)者,未來的架構(gòu)師和技術(shù)專家,我們應(yīng)該對了解kafka有更加深切的需求和欲望,精通kafka不僅會在運維和開發(fā)上得心應(yīng)手,在面試的時候也能夠加很大的分,相信各位面試經(jīng)驗豐富的都有深切的體會!



學(xué)習(xí)內(nèi)容

第一部分,我們將學(xué)習(xí)Kafka各種概念的介紹;

第二部分,我們將學(xué)習(xí)kafka的安裝,和配置的介紹;

第三部分,學(xué)習(xí)向kafka寫入數(shù)據(jù);

第四部分,學(xué)習(xí)從kafka中讀取數(shù)據(jù);

第五部分,深入kafka內(nèi)部,學(xué)習(xí)成員關(guān)系,控制器,請求,存儲等;

第六部分,學(xué)習(xí)數(shù)據(jù)傳遞的可靠性;

第七部分,學(xué)習(xí)構(gòu)建數(shù)據(jù)管道;

第八部分,學(xué)習(xí)跨集群數(shù)據(jù)方案;

第九部分,學(xué)習(xí)kafka的管理;

第十部分,學(xué)習(xí)kafka的監(jiān)控;

最后,學(xué)習(xí)流式處理。



以上內(nèi)容根據(jù)各種教程,書籍進行總結(jié)整理,可以大概看到kafka的知識點,這也是我的習(xí)慣,對一門技術(shù)的所有知識點進行概覽,可以減少學(xué)習(xí)的心理難度。


JMS作為Java基礎(chǔ),這里不會介紹,但強烈建議都學(xué)一學(xué),這是入門消息隊列技術(shù)的基礎(chǔ)。

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

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

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