第一章:Kafka介紹

        歡迎來到Kafka的世界
前端

        當今世界,應用程序(商業、社會、或者其餘類型)不斷的產生實時數據,這些數據須要經過簡單的方式快速可靠的傳送給各類接收者。大多數時候,這些信息的生產者與消費者彼此獨立不能互相訪問。有時候這一點致使須要重建信息的生產者或者消費者,用以在他們之間創建一個集成點。所以,須要一種機制,能把信息的生產者與消費者無縫的集成起來,以免在應用程序另外一端任何形式的重寫。web

        在當前大數據時代,第一個重大的挑戰是收集這些海量數據,第二挑戰是分析這些數據,這些分析一般包括如下等類型的數據。數據庫

    • 用戶行爲數據服務器

    • 應用程序性能跟蹤網絡

    • 實時日誌數據分佈式

    • 事件消息oop

  消息發佈是一種在消息傳遞的幫助下鏈接各類應用程序的機制,經過一個消息代理,好比kafka,將大量實時數據快速路由到多個消費者,Kafka提供了一種生產者與消費者之間的無縫集成機制,既不須要阻塞生產者產生消息,也不須要讓生產者知道誰是消費者性能

        Apache Kafka是一個開源的分佈式消息發佈訂閱系統,主要的設計特色以下:
大數據

    • 持久化消息:要獲取大數據的真正意義,任何類型的數據都不能丟失。Apache Kafka被設計成,存儲大量消息數據,甚至TB級時,性能還是常數時間O(1)spa

    • 高吞吐量:

    • 分佈式:Apache Kafka在Kafka服務器上支持消息分區,而且向一組消費者發送消息時可以保證消息語義的順序。

    • 多個客戶端支持Apache Kafka系統能夠很是簡單的與其餘不一樣平臺整合,好比Java, .NET, PHP, Ruby, 和 Python。

    • 實時:由生產者線程產生的消息應該馬上被消費者線程看見,這對於基於事件驅動的系統,例如復瑣事件處理系統(CEP),是相當重要的特性。

        Kafka提供了一個實時的發佈-訂閱解決方案,克服了數據量在以數量級增加的狀況下實時數據的使用,Kafka一樣支持在Hadoop系統中數據的平行加載。

        下圖展現了一個基於Kafka消息系統的典型數據統計分析系統解決方案:

        

        在生產端有各類不一樣的生產者,好比如下:

    • 前端web應用程序生成的日誌

    • 生產者商代理生成web分析日誌

    • 生產者適配器生產的轉換日誌

    • 生產者服務生產的調用跟蹤日誌

    在消費端有各類不一樣的消費者,好比如下:

    • 離線消費者,在hadoop或者傳統的數據倉庫中使用或存儲消息

    • 近似實時消費者,在NoSQL數據庫中,好比:HBase或Cassandra,使用或存儲消息以供實時分析

    • 實時消費者,在內存數據庫過濾消息並觸發後續組件相關事件

    Kafka的必要性

    大量數據由具備基於網絡呈現與活動的公司生產,數據是這些基於互聯網的系統的新材料之一,一般包括用戶活動事件,對應有登錄、頁面瀏覽、點擊、社交網絡活動(例如:喜歡、分享和評論)和操做及系統指標。

相關文章
相關標籤/搜索