天天看點

白話描述Kafka

簡單說明什麼是kafka

Apache kafka是消息中間件的一種,也許很多人不知道消息中間件是什麼,在開始學習之前,我這邊就先簡單的解釋一下什麼是消息中間件,隻是粗略的講解,目前kafka已經可以做

更多

的事情。

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

雞蛋其實就是“資料流”,系統之間的互動都是通過“資料流”來傳輸的(就是tcp、http什麼的),也稱為封包,也叫“消息”。

消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。

各位現在知道kafka是幹什麼的了吧,它就是那個"籃子"。

kafka名詞解釋

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

  • producer

    :生産者,就是它來生産“雞蛋”的。
  • consumer

    :消費者,生出的“雞蛋”它來消費。
  • topic

    :你把它了解為标簽,生産者每生産出來一個雞蛋就貼上一個标簽(topic),消費者可不是誰生産的“雞蛋”都吃的,這樣不同的生産者生産出來的“雞蛋”,消費者就可以選擇性的“吃”了。
  • broker

    :就是籃子了。

大家一定要學會抽象的去思考,上面隻是屬于業務的角度,如果從技術角度,topic标簽實際就是隊列,生産者把所有“雞蛋(消息)”都放到對應的隊列裡了,消費者到指定的隊列裡取。

參考:http://orchome.com/kafka/index