kafka核心原理總結

雲端計算-魏軍發表於2017-08-07
新霸哥發現在新的技術發展時代,訊息中介軟體也越來越受重視,很多的企業在招聘的過程中著重強調能夠熟練使用訊息中介軟體,所有做為一個軟體開發愛好者,新霸哥在此提醒廣大的軟體開發朋友有時間多學習。


  訊息中介軟體利用高效可靠的訊息傳遞機制進行平臺無關的資料交流。關於訊息中介軟體的一下介紹就介紹到這裡了,感興趣的可以繼續瞭解,下面新霸哥將和大家介紹一下kafka的一下相關知識。


  kafka已經被很多的中小公司使用,訊息傳送接受,有用過的朋友可能就很清楚了,kafka是一個支援分割槽的、分散式、多副本的,是一個基於zookeeper協調的分散式訊息系統,我們看中的就是其中的一個最大的特性就是可以實時的處理大量資料以滿足各種需求場景。


  kafka核心特性


  高效性設計是其優於其他訊息中介軟體的一個主要特性,還有一個重要特性就是訊息可靠性,能夠對訊息集合壓縮,還有備份機制。能夠支援上千個客戶端同時讀寫,kafka叢集支援熱擴充套件。


  kafka核心元件


  (1)replication(副本)、partition(分割槽)


  一個topic能有非常多個副本,如果伺服器配置足夠好,可以配很多個,副本的個數決定了有多少個broker存放寫入的資料;簡單的來說副本是以partition為單位的,


  存放副本也可以這樣簡單的理解,備份若干個partition、但是隻能有一個partition被選為Leader用於讀寫。在這裡新霸哥提醒剛入門的朋友partition(分割槽)


  數量設定最好大於consumer數量,其實,這樣設計的思想就是保證每個消費者都有一個partition。


  (2)producer(生產者)


  kafka中的producer能直接傳送訊息到Leader的 partition,可以看出producer能決定將訊息推送到哪些partition。


  也能使用批處理(Batch)推送訊息,提高效率。在這裡新霸哥給大家一個重要的提示那就是這裡有一個重要的引數acks(0、-1、1)


  (3)consumer(消費者)


  kafka中的同一個group的consumer不可以同時消費同一個partition,對於同一個group的consumer,


  kafka就可以認為是一個佇列訊息服務,各個consumer均衡的消費相應partition中的資料,有些時候會遇到當消費者數大於分割槽數時,


  一般會出現leader consumer和follower consumer,leader consumer處理所有的讀寫請求,


  特殊情況下leader consumer掛掉時,follower consumer會成為新的leader consumer。


  kafka的一些核心原理技術就先介紹到這裡了,更多的關於Kakfa的設計思想的一些相關的技術,新霸哥後面會繼續放出。

相關文章