kafka詳解 - kafka基本原理

1.什么是kafka

Kafka 是一個分布式,基于zookeeper協(xié)調(diào)的分布式——訂閱消息傳遞系統(tǒng)和一個強大的隊列系統(tǒng)。

組成:( Kafka 體系架構(gòu)包括若干 Producer、若干 Broker、若干 Consumer,以及一個 ZooKeeper集群)

kafka是一個 支持一對一,一對多的發(fā)布和訂閱消息系統(tǒng)

什么是消息系統(tǒng): 一個負責接受消息和發(fā)送消息到兩個不同第三方程序的系統(tǒng)

2.Kafka 特性

  • 高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作。

  • 可擴展性:kafka集群支持熱擴展,Kafka消息傳遞系統(tǒng)輕松縮放,無需停機。

  • 持久性、可靠性:消息被持久化到本地磁盤,并且支持數(shù)據(jù)備份防止數(shù)據(jù)丟失

  • 容錯性:允許集群中節(jié)點失?。ㄈ舾北緮?shù)量為n,則允許n-1個節(jié)點失?。?/p>

  • 高并發(fā):支持數(shù)千個客戶端同時讀寫

3.Kafka 三大主體

1.Producer: 生產(chǎn)者,也就是發(fā)送消息的一方。生產(chǎn)者負責創(chuàng)建消息 , 然后將其投遞到

2.Consumer:消費者,也就是接收消息的 一方。消費者連接到 Kafka 上并接收消息,進
而進行相應的業(yè)務邏輯處理 。

3.Broker:服務代理節(jié)點。對于 Kafka 而言, Broker 可以簡單地看作一個獨立的 Kafka 服務節(jié)點或 Kafka服務實例。大多數(shù)情況下也可以將 Broker看作一臺 Kafka服務器,前提是這 臺服務器上只部署了一個 Kafka 實例。一個或多個 Broker 組成了 一個 Kafka 集群。

4.三大角色

  • 消息系統(tǒng): Kafka 和傳統(tǒng)的消息系統(tǒng)(也稱作消息中間件〉都具備系統(tǒng)解稿、冗余存 儲、流量削峰、緩沖、異步通信、擴展性、 可恢復性等功能。與此同時, Kafka 還提 供了大多數(shù)消息系統(tǒng)難以實現(xiàn)的消息 順序性保障及回溯消費 的功能 。

  • 存儲系統(tǒng): Kafka 把消息持久化到磁盤,相比于其他基于內(nèi)存存儲的系統(tǒng)而言,有效 地降低了數(shù)據(jù)丟失的風險 。 也正是得益于 Kafka 的消息持久化功能和多副本機制,我 們可以把 Kafka 作為長期的數(shù)據(jù)存儲系統(tǒng)來使用,只需要把對應的數(shù)據(jù)保留策略設(shè)置 為“永久”或啟用主題的日志壓縮功能即可 。

  • 流式處理平臺: Kafka 不僅為每個流行的流式處理框架提供了可靠 的數(shù)據(jù)來源,還 提 供了一個完整的流式處理類庫,比如窗口、連接、變換和聚合等各類操作 。

5.Kafka 名詞

  • 主題(Topic) :
    Kafka中的消 息以主題為單位進行歸類,生產(chǎn)者負責將消息發(fā)送到特定的主題(發(fā)送到 Kafka 集群中的每一 條消息都要指定一個主題),而消費者負責訂閱主題并進行消費。

  • 分區(qū)(Partition) :
    一個主題(Topic) 有多個分區(qū),一個分區(qū)可以看坐一個存儲的信息文件,信息最終事分配存儲到具體的分區(qū),
    每條消息都有會一個偏移量
    kafka 中的分區(qū)可以分布在不同的服務器 (broker)上,也 就是說,一個主題可以橫跨多個 broker,以 此來提供比單個 broker 更強大的性能 。
    (多個分區(qū)的好處:解決I/O的性能瓶頸,類型數(shù)據(jù)庫的分表處理,可以對分區(qū)的數(shù)量進行增加進行水平擴展)

  • offset :
    offset是消息在分區(qū)中的唯一標識, Kafka通過它來保 證消息在分區(qū)內(nèi)的順序性,不過 offset并不跨越分區(qū),也就是說, Kafka保證的是分區(qū)有序而不 是主題有序。

  • broker:
    服務代理節(jié)點。對于 Kafka 而言, Broker 可以簡單地看作一個獨立的 Kafka 服務節(jié)點或 Kafka服務實例。大多數(shù)情況下也可以將 Broker看作一臺 Kafka服務器,前提是這 臺服務器上只部署了一個 Kafka 實例。一個或多個 Broker 組成了 一個 Kafka 集群 。一般而言, 我們更習慣使用首字母小寫的 broker 來表示服務代理節(jié)點 。
    Replica
    為分區(qū)引入了多副本 (Replica) 機制, 通過增加副本數(shù)量可以提升容災能力。同一 分區(qū)的不同副本中保存的是相同的消息(在同一時刻,副本之間并非完全一樣),自1J本之間是 “一主多從”的關(guān)系,其中 leader副本負責處理讀寫請求, follower副本只負責與 leader副本的 消息同步。副本處于不同的 broker 中 ,當 leader 副本出現(xiàn)故障時,從 follower 副本中重新選舉 新的 leader副本對外提供服務。 Kafka通過多副本機制實現(xiàn)了故障的自動轉(zhuǎn)移,當 Kafka集群中某個 broker 失效時仍然能保證服務可用.

6. Kafka的使用場景:

  • 日志收集
  • 消息系統(tǒng)
  • 用戶活動跟蹤
  • 運營指標
  • 流式處理
  • 事件源
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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