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

image

方案概述

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

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

Apache Pulsar簡介與優(yōu)勢

Apache Pulsar(以下簡稱:Pulsar)是云原生的分布式消息流系統(tǒng)帝嗡,采用計(jì)算和存儲(chǔ)分層的架構(gòu)和以 Segment 為中心的分片存儲(chǔ),具有更好的性能璃氢、可擴(kuò)展性和靈活性哟玷,是一款可以無限擴(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 萬個(gè)主題,處理超過 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) 組件來兼容 Kafka 的應(yīng)用程序带膜。KoP 在 Pulsar Broker 中解析 Kafka 協(xié)議,用戶不用改動(dòng)客戶端的任何 Kafka 代碼就能直接使用 Pulsar鸳谜。

TiDB 與 TiCDC 簡介

TiDB 是 PingCAP 公司自主設(shè)計(jì)膝藕、研發(fā)的開源分布式關(guān)系型數(shù)據(jù)庫,是一款同時(shí)支持在線事務(wù)處理與在線分析處理 (HTAP)的融合型分布式數(shù)據(jù)庫產(chǎn)品咐扭,具備水平擴(kuò)容或者縮容芭挽、金融級(jí)高可用滑废、實(shí)時(shí) HTAP、云原生的分布式數(shù)據(jù)庫袜爪、兼容 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)是用來識(shí)別昙篙、捕捉和輸出 TiDB/TiKV 集群上數(shù)據(jù)變更的工具系統(tǒng)腊状。它既可以作為 TiDB 增量數(shù)據(jù)同步的工具,將 TiDB 集群的增量數(shù)據(jù)同步至下游數(shù)據(jù)庫苔可,也提供開放數(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ù)庫,通過開放數(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ù)庫的主從復(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)無縫對(duì)接泛释,提供實(shí)時(shí)、高吞吐温算、穩(wěn)定的數(shù)據(jù)輸出怜校,滿足用戶在大數(shù)據(jù)場景中對(duì)各類數(shù)據(jù)的應(yīng)用與分析需求,廣泛適用于日志收集注竿、監(jiān)控?cái)?shù)據(jù)聚合茄茁、流式數(shù)據(jù)處理魂贬、在線和離線分析等場景。

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

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

需求探索

>>> 伴魚少兒英語

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

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

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

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

>>>石基信息

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

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

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

最佳實(shí)踐

>>>知乎

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

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

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

鑒于以上遇到的問題,考慮到 Pulsar 對(duì)原生跨地域復(fù)制(GEO-Replication)的支持同知乎未來基礎(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 上遇到的問題霹娄。

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í)踐來看传藏,Pulsar 與 TiDB 聯(lián)合解決方案的應(yīng)用取得了理想效果腻暮。知乎將推動(dòng)各項(xiàng)業(yè)務(wù)從 Kafka 向 Pulsar 進(jìn)行全面的遷移,未來也將應(yīng)用 Pulsar 到跨集群同步 TiDB 數(shù)據(jù)的場景下毯侦。

相關(guān)資源

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

StreamNative 是一家圍繞 Apache 頂級(jí)項(xiàng)目 Apache Pulsar 打造下一代流數(shù)據(jù)平臺(tái)的開源基礎(chǔ)軟件公司腿短,秉承開源是基礎(chǔ)軟件的未來這一理念,專注于開源生態(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)系作者
  • 序言:七十年代末卸奉,一起剝皮案震驚了整個(gè)濱河市钝诚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榄棵,老刑警劉巖凝颇,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疹鳄,居然都是意外死亡拧略,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門瘪弓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垫蛆,“玉大人,你說我怎么就攤上這事≡氯欤” “怎么了弛随?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宁赤。 經(jīng)常有香客問我舀透,道長,這世上最難降的妖魔是什么决左? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任愕够,我火速辦了婚禮,結(jié)果婚禮上佛猛,老公的妹妹穿的比我還像新娘惑芭。我一直安慰自己,他們只是感情好继找,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布遂跟。 她就那樣靜靜地躺著,像睡著了一般婴渡。 火紅的嫁衣襯著肌膚如雪幻锁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天边臼,我揣著相機(jī)與錄音哄尔,去河邊找鬼。 笑死柠并,一個(gè)胖子當(dāng)著我的面吹牛岭接,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播臼予,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼鸣戴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粘拾?” 一聲冷哼從身側(cè)響起窄锅,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎半哟,沒想到半個(gè)月后酬滤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體签餐,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寓涨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氯檐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒良。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冠摄,靈堂內(nèi)的尸體忽然破棺而出糯崎,到底是詐尸還是另有隱情几缭,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布沃呢,位于F島的核電站年栓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏薄霜。R本人自食惡果不足惜某抓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惰瓜。 院中可真熱鬧否副,春花似錦、人聲如沸崎坊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈揍。三九已至曲尸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間打月,已是汗流浹背队腐。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奏篙,地道東北人柴淘。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像秘通,于是被迫代替她去往敵國和親为严。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348