雅虎開源釋出/訂閱訊息平臺Pulsar

晚來風急發表於2017-07-03

雅虎釋出了其釋出-訂閱訊息平臺Pulsar,這個平臺在他們內部已經用在了多項服務的生產環境之中。

按照雅虎的說法,Pulsar是一個低延遲的釋出/訂閱訊息系統,它可以進行水平擴充套件,跨多個主機和資料中心。雅虎從2015年第二季度開始,就一直在郵件、財經、Gemini Ads、Sherpa(雅虎的分散式key-value服務——譯註)以及體育相關的功能中使用Pulsar。通過將其開源,他們希望Pulsar能夠與其他開源專案進行整合,從而促使它得到廣泛的應用。雅虎已經將Pulsar部署到了十個以上的資料中心中,在超過140萬主題(topic)的情況下,達到了每天1000億條訊息,而平均的釋出延遲時間在5毫秒以內。Pulsar能夠保證訊息的正常投遞,並會為訊息提供兩個持久化副本、針對訊息讀者的自動化遊標管理以及跨資料中心的複製。

我們可以搭建Pulsar來提供訊息即服務(messaging-as-a-service)功能,使其執行在一個叢集或多個叢集上,並且能夠通過API對其進行管理:新增/移除使用者、新增計算和儲存容量、核算和監控等等。客戶端(包括生產者和消費者)都會作為租戶(tenant),它們能夠通過一個Java庫來訪問這些功能。這個庫會負責服務發現、訊息投遞以及其他相關的任務。

Pulsar採用了主題的理念,將其作為訊息生產者和消費者之間的媒介。生產者會採用同步或非同步的方式將訊息傳送到主題上。訊息可以進行批量處理或壓縮(LZ4和ZLIB)。客戶端通過訂閱的方式來消費訊息,處理過程可以進行排除(exclusive)、共享(round-robin)或故障恢復。

為了保證訊息的投遞,Pulsar會通過Apache BookKeeper ledger(指的是獨立的log——譯註)將訊息持久化到穩定的儲存中。讀取和寫入會指向不同的物理磁碟,從而儘可能降低釋出帶來的延遲。雅虎確認如果採用SSD作為bookie(指的是Bookkeeper的主機——譯註) journal裝置的話,Pulsar“在保證兩個副本和完全有序的情況下,能夠保證第99個百分位(99 percentile)達到5毫秒”。

雅虎將來計劃支援非持久化的訊息,從而減少訊息broker之間主題遷移的時間,目標是從現在的10秒降低到1秒以下,將訊息釋出的第99.9個百分位達到5毫秒以下(目前是第99個百分位),並且還要支援除了Java以外的其他客戶端語言。

本文轉自d1net(轉載)


相關文章