智聯(lián)招聘基于Apache Pulsar打造企業(yè)級(jí)事件中心

Apache Pulsar于2018年9月正式成為Apache頂級(jí)項(xiàng)目趁俊,ApachePulsar是一個(gè)企業(yè)級(jí)的發(fā)布訂閱(pub-sub)消息系統(tǒng)域仇,最初由Yahoo開發(fā),并于2016年底開源怔软。Pulsar在Yahoo的生產(chǎn)環(huán)境運(yùn)行了三年多垦细,助力Yahoo的主要應(yīng)用,如Yahoo Mail挡逼、Yahoo Finance括改、Yahoo Sports、Flickr挚瘟、Gemini廣告平臺(tái)和Yahoo分布式鍵值存儲(chǔ)系統(tǒng)Sherpa叹谁。自孵化之日起,其在開源社區(qū)就備受關(guān)注乘盖,社區(qū)的開發(fā)者一起合力往Pulsar里面貢獻(xiàn)了大量的企業(yè)級(jí)特性。這些貢獻(xiàn)將Pulsar從最初的一個(gè)消息系統(tǒng)演化成集消息憔涉、存儲(chǔ)和函數(shù)式輕量化計(jì)算的流數(shù)據(jù)平臺(tái)订框。 Apache Pulsar,相對(duì)其他傳統(tǒng)消息中間件系統(tǒng)兜叨,有著根本性的不同穿扳。這些不同可以囊括為以下幾點(diǎn):

在消息模型和 API 層面上,Pulsar 基于日志這個(gè)存儲(chǔ)抽象国旷,統(tǒng)一了消息隊(duì)列(Queue)和流處理(Streaming)這兩種經(jīng)典的消息中間件應(yīng)用場(chǎng)景矛物。用戶只需要使用一套系統(tǒng),通過不同的訂閱(Subscription)模式跪但,即可支持不同的應(yīng)用場(chǎng)景履羞,從根本上打通了應(yīng)用和服務(wù)之間的數(shù)據(jù)孤島,從而實(shí)現(xiàn)真正意義上的數(shù)據(jù)”中臺(tái)“。

圖1:Apache Pulsar對(duì)訂閱模式的抽象

在架構(gòu)層面上忆首,Pulsar 使用了最前沿的將計(jì)算和存儲(chǔ)相互分離的思路爱榔,將傳統(tǒng)的消息中繼(Broker)和消息存儲(chǔ)(Storage)分開,從而將原有的消息中繼(Broker)變成一層無(wú)狀態(tài)化的服務(wù)層糙及。將 Broker 變成無(wú)狀態(tài)化之后详幽,Broker 和存儲(chǔ)可以相互獨(dú)立擴(kuò)展,同時(shí) Broker 的失效恢復(fù)可以在極短的時(shí)間內(nèi)完成浸锨,從而大大提高了服務(wù)的可用性唇聘。而且這種分層架構(gòu)也讓 Pulsar 可以很容易部署在 Kubernetes 這樣的容器編排環(huán)境里面,最高效地使用云原生的基礎(chǔ)架構(gòu)柱搜。

圖2:Apache Pulsar分層架構(gòu)

在存儲(chǔ)層面上迟郎,Pulsar 使用 Apache Bookkeeper 作為其日志存儲(chǔ)系統(tǒng),將存儲(chǔ)粒度從傳統(tǒng)的分區(qū)粒度冯凹,拉低到了分片(Segment)粒度谎亩。一旦存儲(chǔ)粒度被細(xì)分之后,分區(qū)不再是物理綁定的了宇姚。分區(qū)更多的是邏輯層面上的概念匈庭,一個(gè)分區(qū)可以被切分成細(xì)粒度的分片,均勻打散到整個(gè)集群中浑劳;從而極大程度上最大化了數(shù)據(jù)放置的可能性阱持,也降低了進(jìn)行集群擴(kuò)容、故障恢復(fù)等操作帶來(lái)的復(fù)雜性魔熏。Tiered Storage特性可以將歷史數(shù)據(jù)存儲(chǔ)在更廉價(jià)的存儲(chǔ)設(shè)備上(阿里云OSS, AWS S3等)衷咽,保證了熱數(shù)據(jù)的性能的前提下大大降低了企業(yè)存儲(chǔ)歷史數(shù)據(jù)的成本。

圖3:Apache Pulsar 基于Segment的分片存儲(chǔ)

圖4:Apache Pulsar Tiered Storage的歷史數(shù)據(jù)搬遷

智聯(lián)招聘在2018年初就計(jì)劃打造自己的平臺(tái)級(jí)事件中心蒜绽,實(shí)現(xiàn)事件的統(tǒng)一管理及存儲(chǔ)镶骗。在這之前智聯(lián)招聘使用RabbitMQ + Kafka等產(chǎn)品來(lái)支撐智聯(lián)招聘消息系統(tǒng)以流式處理、批處理的支持躲雅,RabbitMQ主要支持在線業(yè)務(wù)的消息投遞鼎姊,Kafka主要應(yīng)用在流式處理、批處理相赁、日志處理等場(chǎng)景相寇。在應(yīng)用的過程中我們遇到了一些痛點(diǎn):

兩種產(chǎn)品帶來(lái)的高維護(hù)成本

兩套系統(tǒng)數(shù)據(jù)的一致性問題

數(shù)據(jù)存儲(chǔ)分散且透明度不足

打造平臺(tái)級(jí)的事件中心已經(jīng)迫在眉睫,在經(jīng)過大量的技術(shù)調(diào)研工作之后, Apache Pulsar的分層抽象钮科、存儲(chǔ)設(shè)計(jì)以及多租戶唤衫、多訂閱模式等特性吸引了我們。在經(jīng)過充分的學(xué)習(xí)以及和Apache Pulsar團(tuán)隊(duì)核心人員溝通之后绵脯,最終技術(shù)選型也很圓滿的告一段落佳励,Apache Pulsar成為了我們打造平臺(tái)級(jí)事件中心的首選休里。

多租戶的特性為平臺(tái)級(jí)事件中心提供了更好的事件管理方案,我們可以利用多租戶特性做用戶的資源隔離植兰、權(quán)限控制等份帐。可以通過維護(hù)一套平臺(tái)級(jí)的服務(wù)來(lái)為智聯(lián)招聘的全業(yè)務(wù)線服務(wù)楣导,這大大的降低了運(yùn)維的成本废境。接入方可以在事件平臺(tái)申請(qǐng)自己的命名空間,這些都是對(duì)用戶透明的筒繁,用戶不用在為維護(hù)工作擔(dān)憂噩凹。

圖5:Apache Pulsar 多租戶Topic 管理

Queue模式和Streaming模式的統(tǒng)一可以很好的支持在線業(yè)務(wù)工作隊(duì)列需求以及流式處理、批處理的需求毡咏,事件的發(fā)送方只需要生產(chǎn)一份數(shù)據(jù)就可以供多個(gè)業(yè)務(wù)方驮宴、多種工作方式使用,不用在為數(shù)據(jù)的一致性擔(dān)憂呕缭,顯著的降低了系統(tǒng)的開銷以及數(shù)據(jù)的核對(duì)工作堵泽。

圖6:Apache Pulsar Queue模式與Streaming模式的統(tǒng)一

Retention機(jī)制可以很好的匹配事件回溯的需求,我們可以根據(jù)不同事件的重要程度或者在時(shí)間上的價(jià)值來(lái)評(píng)估Retention的策略恢总,可以同時(shí)限制時(shí)間以及大小的策略在實(shí)際的應(yīng)用場(chǎng)景也是非常的方便迎罗。

圖7:Apache Pulsar 對(duì)消息保留以及消息過期的處理機(jī)制

Apache Pulsar自帶的企業(yè)級(jí)特性跨機(jī)房復(fù)制也是可以非常好的為事件中心提供數(shù)據(jù)容災(zāi)能力的保證,我們可以通過這個(gè)特性將重要的事件保存在多個(gè)機(jī)房來(lái)提供數(shù)據(jù)的容災(zāi)能力片仿。

TieredStorage特性為事件的冷數(shù)據(jù)存儲(chǔ)提供了很好的支持纹安,我們可以將那些需要長(zhǎng)期保存的數(shù)據(jù)Offload至二級(jí)存儲(chǔ),比如阿里云的OSS砂豌,AWS S3等產(chǎn)品上厢岂。這可以大大降低冷數(shù)據(jù)的存儲(chǔ)成本而不會(huì)影響熱數(shù)據(jù)的性能,熱數(shù)據(jù)我們都會(huì)使用雙SSD來(lái)做Bookkeeper的Journal和Leger的存儲(chǔ)阳距,更好的保證了事件的寫入和讀取性能塔粒。

在這些特性之上,智聯(lián)招聘通過對(duì)事件定義的嚴(yán)格控制以及配合Pulsar的Shema特性筐摘,可以做到在整個(gè)平臺(tái)級(jí)的事件中心事件對(duì)用戶透明性窗怒。用戶可以在事件中心上查找平臺(tái)上已經(jīng)有的事件以及事件是如何定義的,平臺(tái)也對(duì)事件的變更做出了明確的要求蓄拣。這對(duì)數(shù)據(jù)產(chǎn)品也是非常有意義的。

平臺(tái)級(jí)的事件中心可以為在線業(yè)務(wù)努隙、流式計(jì)算球恤、批處理甚至人工智能方向提供很好的基礎(chǔ)能力支持,也是智聯(lián)招聘2018年平臺(tái)級(jí)的重要項(xiàng)目之一荸镊。在2018年8月份項(xiàng)目已經(jīng)正式落地咽斧,逐步已經(jīng)有業(yè)務(wù)方開始接入堪置,截止目前事件中心每日提供5億次事件投遞服務(wù),預(yù)計(jì)11月低接入量提升至20億日均事件投遞量张惹。

智聯(lián)招聘也在持續(xù)的為Apache Pulsar貢獻(xiàn)新的特性比如Dead Letter Topic舀锨,Client Interceptors等很好的特性也會(huì)隨著2.2.0版本的發(fā)布來(lái)服務(wù)Pulsar的用戶。我們也在計(jì)劃貢獻(xiàn)Delay Messages等更多好的特性為社區(qū)服務(wù)宛逗,同時(shí)感謝streamlio在此過程中貢獻(xiàn)的支持坎匿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雷激,隨后出現(xiàn)的幾起案子替蔬,更是在濱河造成了極大的恐慌,老刑警劉巖屎暇,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件承桥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡根悼,警方通過查閱死者的電腦和手機(jī)凶异,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挤巡,“玉大人剩彬,你說(shuō)我怎么就攤上這事⌒兀” “怎么了襟衰?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粪摘。 經(jīng)常有香客問我瀑晒,道長(zhǎng),這世上最難降的妖魔是什么徘意? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任苔悦,我火速辦了婚禮,結(jié)果婚禮上椎咧,老公的妹妹穿的比我還像新娘玖详。我一直安慰自己,他們只是感情好勤讽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布蟋座。 她就那樣靜靜地躺著,像睡著了一般脚牍。 火紅的嫁衣襯著肌膚如雪向臀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天诸狭,我揣著相機(jī)與錄音券膀,去河邊找鬼君纫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芹彬,可吹牛的內(nèi)容都是我干的蓄髓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舒帮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼会喝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起会前,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤好乐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后瓦宜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔚万,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年临庇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了反璃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡假夺,死狀恐怖淮蜈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情已卷,我是刑警寧澤梧田,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站侧蘸,受9級(jí)特大地震影響裁眯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜讳癌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一穿稳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晌坤,春花似錦逢艘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至商乎,卻和暖如春搔课,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工爬泥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崩瓤。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓袍啡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親却桶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子境输,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容