1. 程式人生 > >(1)Kafka簡介

(1)Kafka簡介

1、訊息系統分類

2、訊息系統適用場景

  • 解耦 ——各位系統之間通過訊息系統這個統一的介面交換資料,無須瞭解彼此的存在
  • 冗餘 ——部分訊息系統具有訊息持久化能力,可規避訊息處理前丟失的風險
  • 擴充套件 ——訊息系統是統一的資料介面,各系統可獨立擴充套件
  • 峰值處理能力 ——訊息系統可頂住峰值流量,業務系統可根據處理能力從訊息系統中獲取並處理對應量的請求
  • 可恢復性 ——系統中部分元件失效並不會影響整個系統,它恢復後仍然可從訊息系統中獲取並處理資料
  • 非同步通訊 ——在不需要立即處理請求的場景下,可以將請求放入訊息系統,合適的時候再處理

3、常用訊息系統對比

  • RabbitMQ ——Erlang編寫,支援多協議 AMQP,XMPP,SMTP,STOMP。支援負載均衡、資料持久化。同時支援Peer-to-Peer和釋出/訂閱模式。
  • Redis ——基於Key-Value對的NoSQL資料庫,同時支援MQ功能,可做輕量級佇列服務使用。就入隊操作而言,Redis對短訊息(小於10KB)的效能比RabbitMQ好,長訊息的效能比RabbitMQ差。
  • ZeroMQ ——輕量級,不需要單獨的訊息伺服器或中介軟體,應用程式本身扮演該角色,Peer-to-Peer。它實質上是一個庫,需要開發人員自己組合多種技術,使用複雜度高。
  • ActiveMQ ——JMS實現,Peer-to-Peer,支援持久化、XA事務。
  • Kafka/Jafka 高效能跨語言的分散式釋出/訂閱訊息系統,資料持久化,全分散式,同時支援線上和離線處理。
  • MetaQ/RocketMQ ——純Java實現,釋出/訂閱訊息系統,支援本地事務和XA分散式事務。

4、Kafka設計目標

  • 高吞吐率 在廉價的商用機器上單機可支援每秒100萬條訊息的讀寫
  • 訊息持久化 所有訊息均被持久化到磁碟,無訊息丟失,支援訊息重放
  • 完全分散式 Producer,Broker,Consumer均支援水平擴充套件
  • 同時適應線上流處理和離線批處理

5、Kafka架構簡介

6、如何安裝和使用Kafka叢集

  • 安裝Docker

  • 建立CentOS容器

  • 安裝JDK 1.7+

  • 安裝Zookeeper

  • 啟動Kafka broker