雅虎發布了其發布-訂閱消息平臺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以外的其他客戶端語言。
查看英文原文:Yahoo! Open Sources Pulsar, a Pub/Sub Messaging Platform