Pulsar 聯(lián)合 TiDB 推出大數(shù)據(jù)場(chǎng)景數(shù)據(jù)應(yīng)用分析解決方案

image

方案概述

大數(shù)據(jù)時(shí)代,各類應(yīng)用對(duì)消息解決方案的要求不僅僅是數(shù)據(jù)的流動(dòng),而是要在持續(xù)增長(zhǎng)的服務(wù)和應(yīng)用中傳輸海量數(shù)據(jù),進(jìn)行智能的處理和分析,幫助業(yè)務(wù)做出更加精準(zhǔn)的決策。

Pulsar 與 TiDB 聯(lián)合解決方案提供實(shí)時(shí)、高吞吐、穩(wěn)定的數(shù)據(jù)輸出,滿足用戶在大數(shù)據(jù)場(chǎng)景中對(duì)各類數(shù)據(jù)的應(yīng)用與分析需求,廣泛適用于日志收集、監(jiān)控?cái)?shù)據(jù)聚合、流式數(shù)據(jù)處理、在線和離線分析等場(chǎng)景。

Apache Pulsar簡(jiǎn)介與優(yōu)勢(shì)

Apache Pulsar(以下簡(jiǎn)稱:Pulsar)是云原生的分布式消息流系統(tǒng),采用計(jì)算和存儲(chǔ)分層的架構(gòu)和以 Segment 為中心的分片存儲(chǔ),具有更好的性能、可擴(kuò)展性和靈活性,是一款可以無(wú)限擴(kuò)展的分布式消息隊(duì)列。目前,StreamNative 公司提供基于 Pulsar 平臺(tái)的下一代流數(shù)據(jù)整體解決方案。

Pulsar 起初作為消息整合平臺(tái)在 Yahoo 內(nèi)部開發(fā)和部署,為 Yahoo Finance、Yahoo Mail 和 Flickr 等雅虎內(nèi)部關(guān)鍵應(yīng)用連接數(shù)據(jù)。目前,Pulsar 在雅虎全球的 10 多個(gè)數(shù)據(jù)中心提供服務(wù),具備全網(wǎng)格復(fù)制能力,支持 140 萬(wàn)個(gè)主題,處理超過(guò) 1000 億條消息,整體消息的發(fā)布延遲小于 5 毫秒。2016 年 Yahoo 把 Pulsar 開源并捐給 Apache 軟件基金會(huì)(ASF),2018 年 Pulsar 畢業(yè)成為 Apache 軟件基金會(huì)的頂級(jí)項(xiàng)目。

與大多數(shù)消息傳遞系統(tǒng)的單片架構(gòu)不同,Pulsar 采用分層分片式的架構(gòu),服務(wù)層和存儲(chǔ)層都能夠獨(dú)立擴(kuò)展,以提供更好的性能、可擴(kuò)展性和靈活性,這種設(shè)計(jì)對(duì)容器非常友好,使得 Pulsar 成為流原生平臺(tái)的理想選擇。

Apache Pulsar 系統(tǒng)架構(gòu)

Pulsar 的企業(yè)特性包括消息的持久化存儲(chǔ)、多租戶、多機(jī)房互聯(lián)互備、加密和安全性等。Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 組件來(lái)兼容 Kafka 的應(yīng)用程序。KoP 在 Pulsar Broker 中解析 Kafka 協(xié)議,用戶不用改動(dòng)客戶端的任何 Kafka 代碼就能直接使用 Pulsar。

TiDB 與 TiCDC 簡(jiǎn)介

TiDB 是 PingCAP 公司自主設(shè)計(jì)、研發(fā)的開源分布式關(guān)系型數(shù)據(jù)庫(kù),是一款同時(shí)支持在線事務(wù)處理與在線分析處理 (HTAP)的融合型分布式數(shù)據(jù)庫(kù)產(chǎn)品,具備水平擴(kuò)容或者縮容、金融級(jí)高可用、實(shí)時(shí) HTAP、云原生的分布式數(shù)據(jù)庫(kù)、兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)等重要特性。在 4.0 之前,TiDB 提供 TiDB Binlog 實(shí)現(xiàn)向下游平臺(tái)的近實(shí)時(shí)復(fù)制,在 TiDB 4.0 中,引入 TiCDC 作為 TiDB 變更數(shù)據(jù)的捕獲框架。

TiCDC(TiDB Change Data Capture)是用來(lái)識(shí)別、捕捉和輸出 TiDB/TiKV 集群上數(shù)據(jù)變更的工具系統(tǒng)。它既可以作為 TiDB 增量數(shù)據(jù)同步的工具,將 TiDB 集群的增量數(shù)據(jù)同步至下游數(shù)據(jù)庫(kù),也提供開放數(shù)據(jù)協(xié)議,支持把數(shù)據(jù)發(fā)布到第三方系統(tǒng)。TiCDC 是 TiDB Binlog 的升級(jí)方案 ,提供低延遲、高可用的數(shù)據(jù)訂閱和同步服務(wù),支持超大規(guī)模集群的水平擴(kuò)展。

在 TiDB 生態(tài)鏈上,TiCDC 作為 TiDB 的數(shù)據(jù)出口有著非常重要的地位,其作用包括:構(gòu)建 TiDB 主從和災(zāi)備系統(tǒng),鏈接 TiDB 和其它異構(gòu)數(shù)據(jù)庫(kù),通過(guò)開放數(shù)據(jù)協(xié)議(Open Protocol )與第三方數(shù)據(jù)生態(tài)系統(tǒng)進(jìn)行對(duì)接。

TiCDC Open Protocol 是一種行級(jí)別的數(shù)據(jù)變更通知協(xié)議,為監(jiān)控、緩存、全文索引、分析引擎、異構(gòu)數(shù)據(jù)庫(kù)的主從復(fù)制等提供數(shù)據(jù)源。TiCDC 遵循開放數(shù)據(jù)協(xié)議,向 MQ (Message Queue) 等第三方數(shù)據(jù)媒介復(fù)制 TiDB 的數(shù)據(jù)變更。

Pulsar 與 TiDB聯(lián)合解決方案

在 TiDB v4.0.4 版本中,TiCDC 開放數(shù)據(jù)協(xié)議(Open Protocol )可以與 Pulsar 實(shí)現(xiàn)無(wú)縫對(duì)接,提供實(shí)時(shí)、高吞吐、穩(wěn)定的數(shù)據(jù)輸出,滿足用戶在大數(shù)據(jù)場(chǎng)景中對(duì)各類數(shù)據(jù)的應(yīng)用與分析需求,廣泛適用于日志收集、監(jiān)控?cái)?shù)據(jù)聚合、流式數(shù)據(jù)處理、在線和離線分析等場(chǎng)景。

Pulsar 與 TiDB 聯(lián)合解決方案 架構(gòu)圖

借助 Pulsar 所具有的 GEO-Replication 功能,Pulsar 與 TiDB 聯(lián)合解決方案可以為 TiCDC 的消費(fèi)者帶來(lái)地理位置無(wú)關(guān)的變更事件訂閱能力。同時(shí),Pulsar 集群的快速節(jié)點(diǎn)擴(kuò)容、故障的快速恢復(fù)能力可以為 TiCDC 事件的消費(fèi)方提供更優(yōu)的數(shù)據(jù)實(shí)時(shí)性保障。

需求探索

>>> 伴魚少兒英語(yǔ)

伴魚少兒英語(yǔ)是目前飛速成長(zhǎng)的互聯(lián)網(wǎng)在線英語(yǔ)教育品牌之一,致力于打造更創(chuàng)新、更酷、讓學(xué)英語(yǔ)更有效的新一代互聯(lián)網(wǎng)產(chǎn)品。

伴魚少兒英語(yǔ)原先采用的 Kafka 集群會(huì)遇到 Consumer Rebalance 問(wèn)題,在剔除掉無(wú)法消費(fèi)或者過(guò)慢的消費(fèi)者的時(shí)候,會(huì)對(duì)其他消費(fèi)者造成因消息過(guò)慢觸發(fā)心跳超時(shí)等問(wèn)題,Pulsar 在運(yùn)維層面更方便和安全一些。

Pulsar 是原生支持跨數(shù)據(jù)中心的流數(shù)據(jù)同步方案,可以提供跨地域的復(fù)制功能,滿足國(guó)內(nèi)和海外數(shù)據(jù)中心機(jī)房雙活的需求。此外,Pulsar 具備延遲隊(duì)列的功能,隨著大量 Topic 的創(chuàng)建,依然可以提供出色的性能和延遲保障,消息分散的落盤策略不會(huì)造成 IO 對(duì)磁盤的競(jìng)爭(zhēng)。

基于上述原因,伴魚少兒英語(yǔ)采用了 TiDB 與 Pulsar 聯(lián)合解決方案以滿足核心業(yè)務(wù)的需求。

>>>石基信息

石基信息是一家以提供酒店業(yè)信息系統(tǒng)整體解決方案為主要業(yè)務(wù)的高科技公司,主要從事酒店信息管理系統(tǒng)軟件的開發(fā)與銷售、系統(tǒng)集成、技術(shù)支持與服務(wù)業(yè)務(wù)。

在特定業(yè)務(wù)場(chǎng)景下,例如匯總?cè)蛩芯频瓴惋嫾瘓F(tuán)下單店的收入中心,以及每個(gè)收入中心的不同消費(fèi)類別實(shí)時(shí)的明細(xì)數(shù)據(jù),則需要?jiǎng)?chuàng)建幾十上百萬(wàn)的 Topic,Pulsar 可以支持百萬(wàn)級(jí)別 Topic 數(shù)量的擴(kuò)展,同時(shí)還能一直保持良好的性能。

此外,原先的 Kafka 集群在節(jié)點(diǎn)擴(kuò)展的時(shí)候,會(huì)觸發(fā) Consumer Rebalance,造成消費(fèi)者處理時(shí)間過(guò)長(zhǎng)或者心跳超時(shí)等問(wèn)題,給業(yè)務(wù)帶來(lái)一定的影響。石基信息規(guī)劃采用 Pulsar + TiDB + Flink 方案,構(gòu)建面向未來(lái)的實(shí)時(shí)數(shù)倉(cāng)解決方案,在滿足應(yīng)用層對(duì)分布式關(guān)系型數(shù)據(jù)庫(kù)需求的同時(shí),提升實(shí)時(shí)的數(shù)據(jù)分析和服務(wù)效率。

最佳實(shí)踐

>>>知乎

知乎是中文互聯(lián)網(wǎng)綜合性內(nèi)容平臺(tái),以“讓每個(gè)人高效獲得可信賴的解答”為品牌使命和北極星。知乎在首頁(yè)個(gè)性化內(nèi)容推薦、已讀服務(wù)等場(chǎng)景中使用 TiDB 作為核心數(shù)據(jù)庫(kù),通過(guò) TiCDC Open Protocol 輸出日志到 Kafka,進(jìn)行海量的消息處理。隨著業(yè)務(wù)量級(jí)的增長(zhǎng),在使用的過(guò)程中遇到了諸多因 Kafka 架構(gòu)和歷史版本實(shí)現(xiàn)上的限制而引發(fā)的問(wèn)題。

單 Partition 數(shù)據(jù)量巨大的 Kafka 集群不論是擴(kuò)容還是故障恢復(fù)都需要很長(zhǎng)的時(shí)間,業(yè)務(wù)無(wú)法容忍長(zhǎng)時(shí)間的不可用,所以只能選擇犧牲數(shù)據(jù)、重建集群的方式來(lái)加快恢復(fù)速度。Kafka Topic 過(guò)重的資源消耗導(dǎo)致在單一集群上支撐數(shù)千乃至數(shù)萬(wàn)的 Topic 相對(duì)困難。

早期版本 Kafka 不論是讀取還是寫入都需要發(fā)生在 Partition 當(dāng)前活躍的 Leader 上,讀寫流量都很高的集群會(huì)對(duì) Broker 產(chǎn)生非常大的壓力。Kafka 的一些問(wèn)題在新版本中得到了解決,但是因?yàn)閰f(xié)議版本差別太大,無(wú)法直接通過(guò)升級(jí)服務(wù)端的方式進(jìn)行滾動(dòng)升級(jí)。

鑒于以上遇到的問(wèn)題,考慮到 Pulsar 對(duì)原生跨地域復(fù)制(GEO-Replication)的支持同知乎未來(lái)基礎(chǔ)設(shè)施云原生化的方向更加契合,知乎開始在一些業(yè)務(wù)中使用 Pulsar 替換 Kafka 。

知乎對(duì) TiCDC 的核心模塊進(jìn)行了一系列開發(fā)工作(https://github.com/pingcap/ticdc/pull/751),把 TiCDC Sink 與 Pulsar 進(jìn)行對(duì)接,實(shí)現(xiàn) TiCDC 的數(shù)據(jù)同步到 Pulsar。Pulsar 與 TiDB 聯(lián)合解決方案已經(jīng)在知乎的 CMDB 項(xiàng)目中得以應(yīng)用,解決了現(xiàn)階段在 Kafka 上遇到的問(wèn)題。

Pulsar 對(duì)跨地域復(fù)制(GEO-Replication)的支持為生產(chǎn)者和消費(fèi)者提供了地理位置透明的連接,生產(chǎn)者在任意數(shù)據(jù)中心生產(chǎn)的內(nèi)容可以供任意一個(gè)數(shù)據(jù)中心的供消費(fèi)者使用。分層存儲(chǔ)(Tiered Storage)為大量歷史數(shù)據(jù)的保存、審計(jì)、流量回放、低頻明細(xì)歷史事件分析等需求提供更低成本的實(shí)現(xiàn)方式。從消費(fèi)模式看從數(shù)據(jù)多個(gè)副本并發(fā)讀取消息的能力,極大地提升了數(shù)據(jù)讀取的擴(kuò)展性。此外,延遲消息分發(fā)(Delayed Message Delivery)便于實(shí)現(xiàn)許多特定的業(yè)務(wù)邏輯,可用于替代一些相對(duì)陳舊的歷史技術(shù)方案。

目前,知乎對(duì)于 Pulsar 的應(yīng)用處于早期階段,實(shí)際上線的業(yè)務(wù)數(shù)量占比較小,從前期業(yè)務(wù)的實(shí)踐來(lái)看,Pulsar 與 TiDB 聯(lián)合解決方案的應(yīng)用取得了理想效果。知乎將推動(dòng)各項(xiàng)業(yè)務(wù)從 Kafka 向 Pulsar 進(jìn)行全面的遷移,未來(lái)也將應(yīng)用 Pulsar 到跨集群同步 TiDB 數(shù)據(jù)的場(chǎng)景下。

相關(guān)資源

PingCAP 成立于 2015 年,是一家開源的新型分布式數(shù)據(jù)庫(kù)公司,秉承開源是基礎(chǔ)軟件的未來(lái)這一理念,PingCAP 持續(xù)擴(kuò)大社區(qū)影響力,致力于前沿技術(shù)領(lǐng)域的創(chuàng)新實(shí)現(xiàn)。其研發(fā)的分布式關(guān)系型數(shù)據(jù)庫(kù) TiDB 項(xiàng)目,具備「分布式強(qiáng)一致性事務(wù)、在線彈性水平擴(kuò)展、故障自恢復(fù)的高可用、跨數(shù)據(jù)中心多活」等核心特性,是大數(shù)據(jù)時(shí)代理想的數(shù)據(jù)庫(kù)集群和云數(shù)據(jù)庫(kù)解決方案。目前已經(jīng)國(guó)內(nèi)外近 1000 家用戶將 TiDB 用于線上生產(chǎn)環(huán)境。

StreamNative 是一家圍繞 Apache 頂級(jí)項(xiàng)目 Apache Pulsar 打造下一代流數(shù)據(jù)平臺(tái)的開源基礎(chǔ)軟件公司,秉承開源是基礎(chǔ)軟件的未來(lái)這一理念,專注于開源生態(tài)和社區(qū)的構(gòu)建,致力于前沿技術(shù)領(lǐng)域的創(chuàng)新,創(chuàng)始團(tuán)隊(duì)成員均是 Apache Pulsar 和 Apache BookKeeper 的核心 PMC 成員。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容