Java開發大型網際網路-如何透徹理解kafaka訊息系統設計與實現?語言密碼2018-04-17 14:57:06

訊息佇列的目的為了“解耦”。訊息佇列實現了生產者與消費者之間的解耦,從而降低了系統的複雜性。作為生產者,它關心的 是自己的生產工作,它不應該關心自己生產的東西(如生產的東西到底被誰消費,如何消費)。訊息佇列作為中間倉庫,負責與 消費者打交道。

訊息佇列提供了非同步處理機制,允許使用者把一個訊息放入佇列,但並不立即處理它。想向佇列中放入多少訊息就放多少,然後在需要的時候再去處理它們。

訊息佇列降低了程序間的耦合度,所以即使一個處理訊息的程序掛掉,加入佇列中的訊息仍然可以在系統恢復後被處理。

kafka 應用場景:日誌收集;訊息系統;解耦生產者和消費者、快取訊息;使用者活動跟蹤;運營指標;流式處理:比如spark steaming。

Kafka是分散式的釋出—訂閱訊息系統。Kafka是一個高吞吐量的、永續性的、分散式釋出訂閱訊息系統。它主要用於處理活躍的 資料(登入、瀏覽、點選、分享、喜歡等使用者行為產生的資料)。

傳送訊息到Kafka,把訊息丟到執行緒池中,而不要使用Kafka提供的send方法直接方法,否則出現異常,對系統本身 以及對 介面 響應時間 都有影響,線上程池中,實現send功能,並且要捕獲異常。

無論是請求外部系統的介面,還是提供給外部系統的介面,都要捕獲異常,不要因為外部系統介面的問題,導致自身系統業務邏 輯出錯

訂閱Kafka訊息的Consumer程式碼,也要捕獲異常,防止因為其它的異常,導致系統業務不能正常使用。