1. 程式人生 > 其它 >支援超大檔案HTTP斷點續傳思路

支援超大檔案HTTP斷點續傳思路

1、Kafka 定義

Kafka傳統定義:Kafka是一個分散式的基於釋出/訂閱模式的訊息佇列(MessageQueue),主要應用於大資料實時處理領域; 釋出/訂閱:訊息的釋出者不會將訊息直接傳送給特定的訂閱者,而是將釋出的訊息分為不同的類別,訂閱者只接收感興趣的訊息; Kafka最新定義:Kafka是一個開源的分散式事件流平臺(EventStreamingPlatform),被數千家公司用於高效能資料管道、流分析、資料整合和關鍵任務應用。

2、訊息佇列

目前企業中比較常見的訊息佇列產品主要有Kafka、ActiveMQ、RabbitMQ、RocketMQ等。在大資料場景主要採用Kafka作為訊息佇列。在JavaEE開發中主要採用ActiveMQ、RabbitMQ、RocketMQ。

2.1、傳統訊息佇列應用場景

傳統的訊息佇列的主要應用場景包括:快取/消峰、解耦和非同步通訊。

緩衝/消峰:有助於控制和優化資料流經過系統的速度,解決生產訊息和消費訊息的處理速度不一致的情況。

 

 解耦:允許你獨立的擴充套件或修改兩邊的處理過程,只要確保它們遵守同樣的介面約束。

 

 非同步通訊:允許使用者把一個訊息放入佇列,但並不立即處理它,然後在需要的時候再去處理它們。

 

 

2.2、傳統訊息佇列的兩種模式

點對點模式:消費者主動拉取資料,訊息收到後清除訊息

 

 釋出/訂閱模式

  1. 可以有多個topic主題(瀏覽、點贊、收藏、評論等)
  2. 消費者消費資料之後,不刪除資料
  3. 每個消費者相互獨立,都可以消費到資料

 3、kafka 基礎架構

 

 

  1. Producer:訊息生產者,就是向Kafka broker發訊息的客戶端。
  2. Consumer:訊息消費者,向Kafka broker取訊息的客戶端。
  3. Consumer Group(CG):消費者組,由多個consumer組成。消費者組內每個消費者負責消費不同分割槽的資料,一個分割槽只能由一個組內消費者消費;消費者組之間互不影響。所有的消費者都屬於某個消費者組,即消費者組是邏輯上的一個訂閱者。
  4. Broker:一臺Kafka伺服器就是一個broker。一個叢集由多個broker組成。一個broker可以容納多個topic。
  5. Topic:可以理解為一個佇列,生產者和消費者面向的都是一個topic。
  6. Partition:為了實現擴充套件性,一個非常大的topic可以分佈到多個broker(即伺服器)上,一個topic可以分為多個partition,每個partition是一個有序的佇列。
  7. Replica:副本。一個topic的每個分割槽都有若干個副本,一個Leader和若干個Follower。
  8. Leader:每個分割槽多個副本的“主”,生產者傳送資料的物件,以及消費者消費資料的物件都是Leader。
  9. Follower:每個分割槽多個副本中的“從”,實時從Leader中同步資料,保持和Leader資料的同步。Leader發生故障時,某個Follower會成為新的Leader。