天天看點

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

自從Linkin開源Kafka之後,它似乎成了可以叫嚣所有傳統消息中間件産品的行業新寵。事實上他也确實成為了大規模消息、微服務解耦以及可靠輕量流處理的業界标準解決方案。

我們知道在傳統企業的資料彙聚層,往往會涉及到四到五種産品或者是開源的架構并且支援高可用和橫向擴充。

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

上述架構首先會帶來技術棧的多樣化,包括有:

內建化平台(ETL/ESB)加上額外的“可選”元件;

  • 消息系統(消息隊列,點到點RPC調用);
  • 記憶體緩存或資料網格;
  • 資料庫;
  • 流資料引擎;
  • API網關

對于企業而言,技術的多樣性從來不是好事,這意味着需要招募不同技術特長的人員,缺乏端到端的擴充性,要為每個場景設定中繼(例如大型企業内部會有幾百組MQ叢集),每個元件需要分别維護和配置管理且版本依賴性強。

我們看到近些年很多中間件公司都出現了衰敗的現象,像IBM,Oracle。主要是因為IT生态圈出現了重要轉變,伴随着企業數字化轉型的五大趨勢,系統間事務處理進入了大規模、快速度和高效率的時代

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

在這樣的大趨勢下,傳統的緊耦合、有限規模、元件複雜的傳統技術棧開始出現嚴重的性能瓶頸。架構師們意識到需要轉變互動思路,可能一個簡單的、可擴充的、松耦合的基于事件的平台才能解決實時性大資料并發處理的難題。

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

廣義上說事件可以是一期市場活動,一張發票,一筆交易或一次客戶體驗等等,基于事件的平台以事件為核心建立系統間的互動。在這個平台上,資料庫和資料倉庫的接口功能被弱化,甚至其本身不再是通過CRUD來編輯資料,而是作為事件的持久化存儲(資料倉庫)以及面向應用對事件進行優化展示(資料庫)。

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

而流處理/實時處理平台是事件驅動互動的基石。它向企業提供了全局化的資料/事件連結(不同業務隻需明确是資料生産者還是消費者即可)、即時資料通路、單一系統統管全域資料以及持續索引/查詢能力。

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

Apache Kafka就是這樣一個實時事件處理平台,可以将各類應用的事務流按照主題分類并分發給對應的訂閱者/消費者。它的吞吐量也是受到廣泛驗證的,比如其創始公司領英的每日消息處理量超過4,500,000,000,000條,Netflix日均處理量在6PB以上。

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較

而且,Kafka平台幾乎不涉及其他技術棧,它的消息系統、持久化存儲和緩存用的都是自身的核心,實時和批處理工作在用戶端完成,資料內建靠自身的連接配接器,流處理有自身的流式引擎KSQL,請求/響應機制通過REST代理完成。

市場上的同類産品早先有ActiveMQ和RabbitMQ,在領英将Kafka開源後,市場幾乎被壟斷。直到阿裡基于Kafka研制出了新的Apache頂級項目RocketMQ,并且經過雙十一的高壓打磨後,Kafka才真正有了市場競争對手,

【熱點】Kafka與傳統中間件(MQ,ETL,ESB)的比較