kafka編程基礎—消息中間件

消息中間件

Apache kafka是消息中間件的一種,我發現很多人不知道消息中間件是什麼,在開始學習之前,我這邊就先簡單的解釋一下什麼是消息中間件,只是粗略的講解,比較狹義的理解,然而目前像kafka這樣的消息中間件已經可以做更多的事情了。

舉例說明

舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能喫50個雞蛋,那要不了一會,消費者就喫不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,”雞蛋“又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裏,消費者去籃子裏拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裏,而這個籃子就是”kafka“。

雞蛋其實就是“數據流”,系統之間的交互都是通過“數據流”來傳輸的(就是tcp、https什麼的),也稱爲報文,也叫“消息”。

消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。各位現在知道kafka是幹什麼的了吧,它就是那個"籃子"。

kafka簡介

後面大家會看到一些關於kafka的名詞,比如topic、producer、consumer、broker,我這邊來簡單說明一下。

  1. producer:生產者,就是它來生產“雞蛋”的;
  2. consumer:消費者,生出的“雞蛋”它來消費;
  3. topic:你把它理解爲標籤,生產者每生產出來一個雞蛋就貼上一個標籤(topic),消費者可不是誰生產的“雞蛋”都喫的,這樣不同的生產者生產出來的“雞蛋”,消費者就可以選擇性的“喫”了;
  4. broker:就是籃子了。

我們一定要學會抽象的去思考,上面只是屬於業務的角度,如果從技術角度,topic標籤實際就是隊列,生產者把所有“雞蛋(消息)”都放到對應的隊列裏了,消費者到指定的隊列裏取。

好了,相信到這裏應該已經有自己的一個對於消息隊列的初步認識了。

學習kafka需要學什麼

很多人用過kafka,但是沒人瞭解原理,我們已定要特別注重原理,學習kafka我們一定要弄清楚下面這些內容:

  1. kafka節點之間如何複製備份的?
  2. kafka消息是否會丟失?爲什麼?
  3. kafka最合理的配置是什麼?
  4. kafka的leader選舉機制是什麼?
  5. kafka對硬件的配置有什麼要求?
  6. kafka的消息保證有幾種方式?
  7. kafka爲什麼會丟消息?

上面這些問題,都會在我接下來的探索裏面找到答案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章