Apache Kafka 一 簡介

1. Apache Kafka是什麼?

Apache Kafka是Linkedin公司捐獻給Apache軟件基金會ASF(Apache Software Foundation)的一款開源分佈式消息系統。
它具有如下特點:

  • 快速
    可支持每秒幾十萬次讀寫,也可同時支持上千個客戶端。
  • 可伸縮
    可以由多臺機器組成Message Broker,集羣可以彈性透明地伸縮而不造成宕機。
  • 可持久
    消息可以持久化到磁盤,每個消息可保存多個副本。每個broker可處理TB級的消息而無性能損失。
  • 分佈式設計
    多個機器協同剛工作,有很強容錯性;其中一個機器宕機不影響集羣整體工作。

2.內部設計背景

Kafka socket服務器沒有使用netty來實現,是因爲其開發者不想對任何哪怕是一個字節的性能做妥協;
他們想要使得Kafka具有頂級的性能,不想任何已有的可重用框架或代碼給他們帶來包袱。

Kafka實現語言既有Java也有Scala,其內核使用Java編寫,部分模塊用Scala.但是它的API文檔是Java doc. Kafka正在把它的API從Scala轉到Java是因爲Scala版本不具備二進制兼容性,爲了引入Scala2.1,需要把2.0,1.9,etc,都引入進來。

Kafka設計理念: Kafka是以producer(生產者)爲中心,將連續事件流按片劃分到持久的消息代理(message broker),具有片內按序交付的特徵;既可支持消息消費者對消息的離線批處理,也可支持消息消費者對消息的低延時在線處理。它的消息模型是主題(topic)模型,生產者向主題發送消息,消費者向主題訂閱消息。

3.適用場景

1.大吞吐量,每秒消息讀寫在10萬次(100k+/sec)以上。
2.既有快速實時消息處理,也需要離線的批量消息處理。
3.按序交付。(其他的Messaging system, 比如RabbitMQ和AMQP不具有如此特點)
4.消息持久化。(這也是它能支持離線批量處理的基石)

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