方案概述
大數據時代,各類應用對消息解決方案的要求不僅僅是數據的流動,而是要在持續增長的服務和應用中傳輸海量數據,進行智能的處理和分析,幫助業務做出更加精準的決策。
Pulsar 與 TiDB 聯合解決方案提供實時、高吞吐、穩定的數據輸出,滿足用戶在大數據場景中對各類數據的應用與分析需求,廣泛適用于日志收集、監控數據聚合、流式數據處理、在線和離線分析等場景。
Apache Pulsar簡介與優勢
Apache Pulsar(以下簡稱:Pulsar)是云原生的分布式消息流系統,采用計算和存儲分層的架構和以 Segment 為中心的分片存儲,具有更好的性能、可擴展性和靈活性,是一款可以無限擴展的分布式消息隊列。目前,StreamNative 公司提供基于 Pulsar 平臺的下一代流數據整體解決方案。
Pulsar 起初作為消息整合平臺在 Yahoo 內部開發和部署,為 Yahoo Finance、Yahoo Mail 和 Flickr 等雅虎內部關鍵應用連接數據。目前,Pulsar 在雅虎全球的 10 多個數據中心提供服務,具備全網格復制能力,支持 140 萬個主題,處理超過 1000 億條消息,整體消息的發布延遲小于 5 毫秒。2016 年 Yahoo 把 Pulsar 開源并捐給 Apache 軟件基金會(ASF),2018 年 Pulsar 畢業成為 Apache 軟件基金會的頂級項目。
與大多數消息傳遞系統的單片架構不同,Pulsar 采用分層分片式的架構,服務層和存儲層都能夠獨立擴展,以提供更好的性能、可擴展性和靈活性,這種設計對容器非常友好,使得 Pulsar 成為流原生平臺的理想選擇。
Pulsar 的企業特性包括消息的持久化存儲、多租戶、多機房互聯互備、加密和安全性等。Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 組件來兼容 Kafka 的應用程序。KoP 在 Pulsar Broker 中解析 Kafka 協議,用戶不用改動客戶端的任何 Kafka 代碼就能直接使用 Pulsar。
TiDB 與 TiCDC 簡介
TiDB 是 PingCAP 公司自主設計、研發的開源分布式關系型數據庫,是一款同時支持在線事務處理與在線分析處理 (HTAP)的融合型分布式數據庫產品,具備水平擴容或者縮容、金融級高可用、實時 HTAP、云原生的分布式數據庫、兼容 MySQL 5.7 協議和 MySQL 生態等重要特性。在 4.0 之前,TiDB 提供 TiDB Binlog 實現向下游平臺的近實時復制,在 TiDB 4.0 中,引入 TiCDC 作為 TiDB 變更數據的捕獲框架。
TiCDC(TiDB Change Data Capture)是用來識別、捕捉和輸出 TiDB/TiKV 集群上數據變更的工具系統。它既可以作為 TiDB 增量數據同步的工具,將 TiDB 集群的增量數據同步至下游數據庫,也提供開放數據協議,支持把數據發布到第三方系統。TiCDC 是 TiDB Binlog 的升級方案 ,提供低延遲、高可用的數據訂閱和同步服務,支持超大規模集群的水平擴展。
在 TiDB 生態鏈上,TiCDC 作為 TiDB 的數據出口有著非常重要的地位,其作用包括:構建 TiDB 主從和災備系統,鏈接 TiDB 和其它異構數據庫,通過開放數據協議(Open Protocol )與第三方數據生態系統進行對接。
TiCDC Open Protocol 是一種行級別的數據變更通知協議,為監控、緩存、全文索引、分析引擎、異構數據庫的主從復制等提供數據源。TiCDC 遵循開放數據協議,向 MQ (Message Queue) 等第三方數據媒介復制 TiDB 的數據變更。
Pulsar 與 TiDB聯合解決方案
在 TiDB v4.0.4 版本中,TiCDC 開放數據協議(Open Protocol )可以與 Pulsar 實現無縫對接,提供實時、高吞吐、穩定的數據輸出,滿足用戶在大數據場景中對各類數據的應用與分析需求,廣泛適用于日志收集、監控數據聚合、流式數據處理、在線和離線分析等場景。
借助 Pulsar 所具有的 GEO-Replication 功能,Pulsar 與 TiDB 聯合解決方案可以為 TiCDC 的消費者帶來地理位置無關的變更事件訂閱能力。同時,Pulsar 集群的快速節點擴容、故障的快速恢復能力可以為 TiCDC 事件的消費方提供更優的數據實時性保障。
需求探索
>>> 伴魚少兒英語
伴魚少兒英語是目前飛速成長的互聯網在線英語教育品牌之一,致力于打造更創新、更酷、讓學英語更有效的新一代互聯網產品。
伴魚少兒英語原先采用的 Kafka 集群會遇到 Consumer Rebalance 問題,在剔除掉無法消費或者過慢的消費者的時候,會對其他消費者造成因消息過慢觸發心跳超時等問題,Pulsar 在運維層面更方便和安全一些。
Pulsar 是原生支持跨數據中心的流數據同步方案,可以提供跨地域的復制功能,滿足國內和海外數據中心機房雙活的需求。此外,Pulsar 具備延遲隊列的功能,隨著大量 Topic 的創建,依然可以提供出色的性能和延遲保障,消息分散的落盤策略不會造成 IO 對磁盤的競爭。
基于上述原因,伴魚少兒英語采用了 TiDB 與 Pulsar 聯合解決方案以滿足核心業務的需求。
>>>石基信息
石基信息是一家以提供酒店業信息系統整體解決方案為主要業務的高科技公司,主要從事酒店信息管理系統軟件的開發與銷售、系統集成、技術支持與服務業務。
在特定業務場景下,例如匯總全球所有酒店餐飲集團下單店的收入中心,以及每個收入中心的不同消費類別實時的明細數據,則需要創建幾十上百萬的 Topic,Pulsar 可以支持百萬級別 Topic 數量的擴展,同時還能一直保持良好的性能。
此外,原先的 Kafka 集群在節點擴展的時候,會觸發 Consumer Rebalance,造成消費者處理時間過長或者心跳超時等問題,給業務帶來一定的影響。石基信息規劃采用 Pulsar + TiDB + Flink 方案,構建面向未來的實時數倉解決方案,在滿足應用層對分布式關系型數據庫需求的同時,提升實時的數據分析和服務效率。
最佳實踐
>>>知乎
知乎是中文互聯網綜合性內容平臺,以“讓每個人高效獲得可信賴的解答”為品牌使命和北極星。知乎在首頁個性化內容推薦、已讀服務等場景中使用 TiDB 作為核心數據庫,通過 TiCDC Open Protocol 輸出日志到 Kafka,進行海量的消息處理。隨著業務量級的增長,在使用的過程中遇到了諸多因 Kafka 架構和歷史版本實現上的限制而引發的問題。
單 Partition 數據量巨大的 Kafka 集群不論是擴容還是故障恢復都需要很長的時間,業務無法容忍長時間的不可用,所以只能選擇犧牲數據、重建集群的方式來加快恢復速度。Kafka Topic 過重的資源消耗導致在單一集群上支撐數千乃至數萬的 Topic 相對困難。
早期版本 Kafka 不論是讀取還是寫入都需要發生在 Partition 當前活躍的 Leader 上,讀寫流量都很高的集群會對 Broker 產生非常大的壓力。Kafka 的一些問題在新版本中得到了解決,但是因為協議版本差別太大,無法直接通過升級服務端的方式進行滾動升級。
鑒于以上遇到的問題,考慮到 Pulsar 對原生跨地域復制(GEO-Replication)的支持同知乎未來基礎設施云原生化的方向更加契合,知乎開始在一些業務中使用 Pulsar 替換 Kafka 。
知乎對 TiCDC 的核心模塊進行了一系列開發工作(https://github.com/pingcap/ticdc/pull/751),把 TiCDC Sink 與 Pulsar 進行對接,實現 TiCDC 的數據同步到 Pulsar。Pulsar 與 TiDB 聯合解決方案已經在知乎的 CMDB 項目中得以應用,解決了現階段在 Kafka 上遇到的問題。
Pulsar 對跨地域復制(GEO-Replication)的支持為生產者和消費者提供了地理位置透明的連接,生產者在任意數據中心生產的內容可以供任意一個數據中心的供消費者使用。分層存儲(Tiered Storage)為大量歷史數據的保存、審計、流量回放、低頻明細歷史事件分析等需求提供更低成本的實現方式。從消費模式看從數據多個副本并發讀取消息的能力,極大地提升了數據讀取的擴展性。此外,延遲消息分發(Delayed Message Delivery)便于實現許多特定的業務邏輯,可用于替代一些相對陳舊的歷史技術方案。
目前,知乎對于 Pulsar 的應用處于早期階段,實際上線的業務數量占比較小,從前期業務的實踐來看,Pulsar 與 TiDB 聯合解決方案的應用取得了理想效果。知乎將推動各項業務從 Kafka 向 Pulsar 進行全面的遷移,未來也將應用 Pulsar 到跨集群同步 TiDB 數據的場景下。
相關資源
TiCDC 實操指南
https://docs.pingcap.com/zh/tidb/stable/manage-ticdcApache Pulsar 官方文檔
http://pulsar.apache.org/docs/en/standalone/-
Pulsar 與 Kafka 的對比:
PingCAP 成立于 2015 年,是一家開源的新型分布式數據庫公司,秉承開源是基礎軟件的未來這一理念,PingCAP 持續擴大社區影響力,致力于前沿技術領域的創新實現。其研發的分布式關系型數據庫 TiDB 項目,具備「分布式強一致性事務、在線彈性水平擴展、故障自恢復的高可用、跨數據中心多活」等核心特性,是大數據時代理想的數據庫集群和云數據庫解決方案。目前已經國內外近 1000 家用戶將 TiDB 用于線上生產環境。
StreamNative 是一家圍繞 Apache 頂級項目 Apache Pulsar 打造下一代流數據平臺的開源基礎軟件公司,秉承開源是基礎軟件的未來這一理念,專注于開源生態和社區的構建,致力于前沿技術領域的創新,創始團隊成員均是 Apache Pulsar 和 Apache BookKeeper 的核心 PMC 成員。