中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Apache Pulsar分析

發布時間:2021-11-23 10:57:14 來源:億速云 閱讀:216 作者:柒染 欄目:大數據

如何進行Apache Pulsar分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Apache Pulsar(孵化器項目)是一個企業級的發布訂閱(pub-sub)消息系統,最初由Yahoo開發,并于2016年底開源,現在是Apache軟件基金會的一個孵化器項目。Pulsar在Yahoo的生產環境運行了三年多,助力Yahoo的主要應用,如Yahoo Mail、Yahoo Finance、Yahoo Sports、Flickr、Gemini廣告平臺和Yahoo分布式鍵值存儲系統Sherpa。

概念與術語

向Pulsar發送數據的應用程序叫作生產者(producer),而從Pulsar讀取數據的應用程序叫作消費者(consumer)。有時候消費者也被叫作訂閱者。主題(topic)是Pulsar的核心資源,一個主題可以被看成是一個通道,消費者向這個通道發送數據,消費者從這個通道拉取數據。

如何進行Apache Pulsar分析

圖1:生產者、消費者和主題

構建Pulsar的目的是為了支持多租戶(multi-tenant)應用場景。Pulsar的多租戶機制包含了兩種資源:資產(property)和命名空間(namespace)。資產代表系統里的租戶。假設有一個Pulsar集群用于支持多個應用程序(就像Yahoo那樣),集群里的每個資產可以代表一個組織的團隊、一個核心的功能或一個產品線。一個資產可以包含多個命名空間,一個命名空間可以包含任意個主題。

?如何進行Apache Pulsar分析

圖2:Pulsar各個組件間的關系

命名空間是Pulsar最基本的管理單元。在命名空間層面,我們可以設置權限、調整復制選項、管理跨集群的數據復制、控制消息的過期時間或執行其他關鍵任務。命名空間里的主題會繼承命名空間的配置,所以我們可以一次性對同一個命名空間內的所有主題進行配置。命名空間可以分為兩種:

- 本地(local)——本地命名空間只在集群內可見。

- 全局(global)——命名空間對多個集群可見,可以是同一個數據中心內的集群,也可以是跨地域數據中心的集群。該功能取決于是否啟用了集群復制功能。

雖然本地命名空間和全局命名空間的作用域不同,但它們都可以在不同的團隊或不同的組織內共享。如果應用程序獲得了命名空間的寫入權限,就可以往該命名空間內的所有主題寫入數據。如果寫入的主題不存在,就會創建該主題。

每個命名空間可以包含一到多個主題,每個主題可以有多個訂閱者,每個訂閱者可以接收所有發布到該主題的消息。為了給應用程序提供更大的靈活性,Pulsar提供了三種訂閱類型,它們可以共存在同一個主題上:

- 獨享(exclusive)訂閱——同時只能有一個消費者。

- 共享(shared)訂閱——可以由多個消費者訂閱,每個消費者接收其中的一部分消息。

- 失效備援(failover)訂閱——允許多個消費者連接到同一個主題上,但只有一個消費者能夠接收消息。只有在當前消費者發生失效時,其他消費者才開始接收消息。

圖3展示了這三種類型的訂閱。Pulsar的訂閱機制解耦了消息的生產者和消費者,在不增加復雜性和開發工作量的情況下為應用程序提供了更大的彈性。

??如何進行Apache Pulsar分析

圖3:不同類型的Pulsar訂閱

數據分區

寫入主題的數據可能只有幾個MB,也有可能是幾個TB。所以,在某些情況下主題的吞吐量很低,有時候又很高,完全取決于消費者的數量。那么碰到有些主題吞吐量很高而有些又很低的情況該怎么處理?為了解決這個問題,Pulsar將一個主題的數據分布到多臺機器上,也就是所謂的分區。

在處理海量數據時,為了保證高吞吐量,分區是一種很常見的手段。默認情況下,Pulsar的主題是不進行分區的,但通過命令行工具或API可以很容易地創建分區主題,并指定分區的數量。

在創建好分區主題之后,Pulsar可以自動對數據進行分區,不會影響到生產者和消費者。也就是說,一個應用程序向一個主題寫入數據,對主題分區之后,不需要修改應用程序的代碼。分區只是一個運維操作,應用程序不需要關心分區是如何進行的。

主題的分區操作由一個叫作broker的進程來處理,Pulsar集群里的每個節點都會運行自己的broker。

如何進行Apache Pulsar分析

圖4:將一個主題分到多個broker上

主題分區不會影響到應用程序,除此之外,Pulsar還提供了幾種消息路由策略,幫助我們更好地跨分區、跨消費者分布數據。

- 單個分區——生產者隨機挑選一個分區,并將數據寫入該分區。該策略與非分區主題提供的保證是一樣的,不過如果有多個生產者向同一個主題寫入數據,該策略就會很有用。

- 輪詢(round robin)分區——生產者通過輪詢的方式將數據平均地分布到各個分區上。比如,第一個消息寫入第一個分區,第二個消息寫入第二個分區,并以此類推。

- 哈希(hash)分區——每個消息會帶上一個鍵,要寫入哪個分區取決于它所帶的鍵。這種分區方式可以保證次序。

- 自定義分區——生產者使用自定義函數生成分區對應的數值,然后根據這個數值將消息寫入對應的分區。

持久性

Pulsar broker在收到消息并進行確認之后,就必須確保消息在任何情況下都不會丟失。與其他消息系統不同的是,Pulsar使用Apache BookKeeper來保證持久性。BookKeeper提供了低延遲的持久化存儲。Pulsar在收到消息之后,將消息發送給多個BookKeeper節點(具體由復制系數來定),節點將數據寫入預寫式日志(write ahead log),同時在內存里也保存一份。節點在對消息進行確認之前,強制將日志寫入到持久化的存儲上,因此即使出現電力故障,數據也不會丟失。因為Pulsar broker將數據發給了多個節點,所以只會在大多數節點(quorum)確認寫入成功之后它才會將確認消息發給生產者。Pulsar就是通過這種方式來保證即使在出現了硬件故障、網絡故障或其他故障的情況下仍然能夠保證數據不丟失。在后續的文章中,我們將深入探討這方面的細節。

生產環境實踐

Pulsar目前在助力Yahoo的主要應用,如Yahoo Mail、Yahoo Finance、Yahoo Sports、Gemini廣告平臺和Yahoo分布式鍵值存儲系統Sherpa。很多場景都要求很強的持久性保證,比如零數據丟失,同時又要求很高的性能。Pulsar從2015年開始部署到生產環境,現在在Yahoo的生產環境里大規模地運行。

- Pulsar被部署在10多個數據中心里,具備了全網格復制能力

- 每天處理超過1000億個消息

- 支持著140萬個主題

- 整體的消息發布延遲小于5毫秒

在這篇文章里,我們簡單介紹了Apache Pulsar的一些概念,并解釋了Pulsar是如何通過在發送確認消息前提交數據來保證持久性的,以及通過分區來提高吞吐量,等等。我們將深入探討Pulsar的整體架構和特性細節,我們也將提供一些指南教大家如何更好地使用Pulsar。

關于如何進行Apache Pulsar分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达州市| 高雄市| 滨海县| 拉萨市| 宜君县| 通江县| 永安市| 新巴尔虎左旗| 苍南县| 安平县| 牟定县| 文安县| 灌云县| 长顺县| 台东市| 佳木斯市| 社旗县| 云南省| 天全县| 石嘴山市| 乌兰县| 杂多县| 观塘区| 新兴县| 石阡县| 泸州市| 东平县| 河北区| 阿合奇县| 克拉玛依市| 金塔县| 松溪县| 湟中县| 湘潭市| 三亚市| 卢氏县| 武夷山市| 大邑县| 文安县| 新沂市| 启东市|