1. 程式人生 > >【圖文詳細 】Kafka訊息佇列——Kafka的優點

【圖文詳細 】Kafka訊息佇列——Kafka的優點

2、Kafka的優點

1、解耦:在專案啟動之初來預測將來專案會碰到什麼需求,是極其困難的。訊息系統在處理過程中間 插入了一個隱含的、基於資料的介面層,兩邊的處理過程都要實現這一介面。這允許你獨立 的擴充套件或修改兩邊的處理過程,只要確保它們遵守同樣的介面約束。 

2、冗餘:有些情況下,處理資料的過程會失敗。除非資料被持久化,否則將造成丟失。訊息佇列把數 據進行持久化直到它們已經被完全處理,通過這一方式規避了資料丟失風險。許多訊息佇列 所採用的”插入-獲取-刪除”正規化中,在把一個訊息從佇列中刪除之前,需要你的處理系統 明確的指出該訊息已經被處理完畢,從而確保你的資料被安全的儲存直到你使用完畢。 

 

3、擴充套件性:因為訊息佇列解耦了你的處理過程,所以增大訊息入隊和處理的頻率是很容易的,只要另外 增加處理過程即可。不需要改變程式碼、不需要調節引數。擴充套件就像調大電力按鈕一樣簡單。

4、靈活性&巔峰處理能力:在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量並不常見;如果 為以能處理這類峰值訪問為標準來投入資源隨時待命無疑是巨大的浪費。使用訊息佇列能夠 使關鍵元件頂住突發的訪問壓力,而不會因為突發的超負荷的請求而完全崩潰。

 

5、可恢復性:系統的一部分元件失效時,不會影響到整個系統。訊息佇列降低了程序間的耦合度,所以即 使一個處理訊息的程序掛掉,加入佇列中的訊息仍然可以在系統恢復後被處理。 

6、順序保證:在大多使用場景下,資料處理的順序都很重要。大部分訊息佇列本來就是排序的,並且能保 證資料會按照特定的順序來處理。Kafka 保證一個 Partition 內的訊息的有序性。

 

7、快取:在任何重要的系統中,都會有需要不同的處理時間的元素。例如,載入一張圖片比應用過濾 器花費更少的時間。訊息佇列通過一個快取層來幫助任務最高效率的執行。寫入佇列的處理會盡可能的快速。該緩衝有助於控制和優化資料流經過系統的速度。 
 8、非同步通訊:很多時候,使用者不想也不需要立即處理訊息。訊息佇列提供了非同步處理機制,允許使用者把一 個訊息放入佇列,但並不立即處理它。想向佇列中放入多少訊息就放多少,然後在需要的時 候再去處理它們。