智聯招聘基於Apache Pulsar打造企業級事件中心

航通社發表於2019-03-04

Apache Pulsar於2018年9月正式成為Apache頂級專案,ApachePulsar是一個企業級的釋出訂閱(pub-sub)訊息系統,最初由Yahoo開發,並於2016年底開源。Pulsar在Yahoo的生產環境執行了三年多,助力Yahoo的主要應用,如Yahoo Mail、Yahoo Finance、Yahoo Sports、Flickr、Gemini廣告平臺和Yahoo分散式鍵值儲存系統Sherpa。自孵化之日起,其在開源社群就備受關注,社群的開發者一起合力往Pulsar裡面貢獻了大量的企業級特性。這些貢獻將Pulsar從最初的一個訊息系統演化成集訊息、儲存和函式式輕量化計算的流資料平臺。 Apache Pulsar,相對其他傳統訊息中介軟體系統,有著根本性的不同。這些不同可以囊括為以下幾點:

在訊息模型和 API 層面上,Pulsar 基於日誌這個儲存抽象,統一了訊息佇列(Queue)和流處理(Streaming)這兩種經典的訊息中介軟體應用場景。使用者只需要使用一套系統,通過不同的訂閱(Subscription)模式,即可支援不同的應用場景,從根本上打通了應用和服務之間的資料孤島,從而實現真正意義上的資料”中臺“。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖1:Apache Pulsar對訂閱模式的抽象

在架構層面上,Pulsar 使用了最前沿的將計算和儲存相互分離的思路,將傳統的訊息中繼(Broker)和訊息儲存(Storage)分開,從而將原有的訊息中繼(Broker)變成一層無狀態化的服務層。將 Broker 變成無狀態化之後,Broker 和儲存可以相互獨立擴充套件,同時 Broker 的失效恢復可以在極短的時間內完成,從而大大提高了服務的可用性。而且這種分層架構也讓 Pulsar 可以很容易部署在 Kubernetes 這樣的容器編排環境裡面,最高效地使用雲原生的基礎架構。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖2:Apache Pulsar分層架構

在儲存層面上,Pulsar 使用 Apache Bookkeeper 作為其日誌儲存系統,將儲存粒度從傳統的分割槽粒度,拉低到了分片(Segment)粒度。一旦儲存粒度被細分之後,分割槽不再是物理繫結的了。分割槽更多的是邏輯層面上的概念,一個分割槽可以被切分成細粒度的分片,均勻打散到整個叢集中;從而極大程度上最大化了資料放置的可能性,也降低了進行叢集擴容、故障恢復等操作帶來的複雜性。Tiered Storage特性可以將歷史資料儲存在更廉價的儲存裝置上(阿里雲OSS, AWS S3等),保證了熱資料的效能的前提下大大降低了企業儲存歷史資料的成本。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖3:Apache Pulsar 基於Segment的分片儲存

智聯招聘基於Apache Pulsar打造企業級事件中心

圖4:Apache Pulsar Tiered Storage的歷史資料搬遷

智聯招聘在2018年初就計劃打造自己的平臺級事件中心,實現事件的統一管理及儲存。在這之前智聯招聘使用RabbitMQ + Kafka等產品來支撐智聯招聘訊息系統以流式處理、批處理的支援,RabbitMQ主要支援線上業務的訊息投遞,Kafka主要應用在流式處理、批處理、日誌處理等場景。在應用的過程中我們遇到了一些痛點:

  1. 兩種產品帶來的高維護成本

  2. 兩套系統資料的一致性問題

  3. 資料儲存分散且透明度不足

打造平臺級的事件中心已經迫在眉睫,在經過大量的技術調研工作之後, Apache Pulsar的分層抽象、儲存設計以及多租戶、多訂閱模式等特性吸引了我們。在經過充分的學習以及和Apache Pulsar團隊核心人員溝通之後,最終技術選型也很圓滿的告一段落,Apache Pulsar成為了我們打造平臺級事件中心的首選。

多租戶的特性為平臺級事件中心提供了更好的事件管理方案,我們可以利用多租戶特性做使用者的資源隔離、許可權控制等。可以通過維護一套平臺級的服務來為智聯招聘的全業務線服務,這大大的降低了運維的成本。接入方可以在事件平臺申請自己的名稱空間,這些都是對使用者透明的,使用者不用在為維護工作擔憂。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖5:Apache Pulsar 多租戶Topic 管理

Queue模式和Streaming模式的統一可以很好的支援線上業務工作佇列需求以及流式處理、批處理的需求,事件的傳送方只需要生產一份資料就可以供多個業務方、多種工作方式使用,不用在為資料的一致性擔憂,顯著的降低了系統的開銷以及資料的核對工作。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖6:Apache Pulsar Queue模式與Streaming模式的統一

Retention機制可以很好的匹配事件回溯的需求,我們可以根據不同事件的重要程度或者在時間上的價值來評估Retention的策略,可以同時限制時間以及大小的策略在實際的應用場景也是非常的方便。

智聯招聘基於Apache Pulsar打造企業級事件中心

圖7:Apache Pulsar 對訊息保留以及訊息過期的處理機制

Apache Pulsar自帶的企業級特性跨機房複製也是可以非常好的為事件中心提供資料容災能力的保證,我們可以通過這個特性將重要的事件儲存在多個機房來提供資料的容災能力。

TieredStorage特性為事件的冷資料儲存提供了很好的支援,我們可以將那些需要長期儲存的資料Offload至二級儲存,比如阿里雲的OSS,AWS S3等產品上。這可以大大降低冷資料的儲存成本而不會影響熱資料的效能,熱資料我們都會使用雙SSD來做Bookkeeper的Journal和Leger的儲存,更好的保證了事件的寫入和讀取效能。

在這些特性之上,智聯招聘通過對事件定義的嚴格控制以及配合Pulsar的Shema特性,可以做到在整個平臺級的事件中心事件對使用者透明性。使用者可以在事件中心上查詢平臺上已經有的事件以及事件是如何定義的,平臺也對事件的變更做出了明確的要求。這對資料產品也是非常有意義的。

平臺級的事件中心可以為線上業務、流式計算、批處理甚至人工智慧方向提供很好的基礎能力支援,也是智聯招聘2018年平臺級的重要專案之一。在2018年8月份專案已經正式落地,逐步已經有業務方開始接入,截止目前事件中心每日提供5億次事件投遞服務,預計11月低接入量提升至20億日均事件投遞量。

智聯招聘也在持續的為Apache Pulsar貢獻新的特性比如Dead Letter Topic,Client Interceptors等很好的特性也會隨著2.2.0版本的釋出來服務Pulsar的使用者。我們也在計劃貢獻Delay Messages等更多好的特性為社群服務,同時感謝streamlio在此過程中貢獻的支援。

相關文章