<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Apache Pulsar 在騰訊云上的最佳實(shí)踐

          共 16753字,需瀏覽 34分鐘

           ·

          2023-11-07 09:25


          導(dǎo)語

          由 StreamNative 主辦的 Pulsar Meetup Beijing 2023 在2023年10月14日完美落幕,本次活動(dòng)大咖云集,來自騰訊、滴滴、華為、智聯(lián)招聘、RisingWave 和 StreamNative 的行業(yè)專家們一起,深入探討 Pulsar 在生產(chǎn)環(huán)境中的最佳應(yīng)用實(shí)踐,共享 Pulsar 社區(qū)的最新發(fā)展和動(dòng)態(tài)。


          本次 Meetup,騰訊云高級(jí)工程師林宇強(qiáng)為大家?guī)砹俗h題為《Apache Pulsar 在騰訊云上的最佳實(shí)踐》的精彩演講,接下來的篇幅將從系統(tǒng)架構(gòu)、設(shè)計(jì)思路、尋址服務(wù)、跨集群遷移、跨地域容災(zāi)幾個(gè)方面詳細(xì)為大家介紹 Apache Pulsar 在騰訊云上的最佳實(shí)踐。


          Pulsar 系統(tǒng)架構(gòu)



          上圖是一個(gè)很常見的 Pulsar 部署架構(gòu),ZK 采用了騰訊云 TSE ZK;對(duì)接內(nèi)部的配置中心、CICD 平臺(tái)可以實(shí)現(xiàn)標(biāo)準(zhǔn)化部署,其余的 Bookie 和 Broker 和開源自建的部署模式差別不大。


          這里需要介紹下騰訊云自研部分的診斷三件套:Metrics,Trace,日志采集。


          Metrics:Broker 自研采集→上報(bào) Monitor 集群 Topic →Pulsar Sink 聚合預(yù)處理→騰訊云監(jiān)控。這里值得說明的是我們?cè)?Broker 和云監(jiān)控之間加了一層 Pulsar Broker 集群(Monitor 集群)作為緩沖,并使用 Pulsar 自帶的 Sink 來進(jìn)行 Metrics 數(shù)據(jù)的預(yù)處理,因?yàn)樵摫O(jiān)控鏈路是地域級(jí)別,比如廣州地區(qū)只部署一套,而對(duì)外提供業(yè)務(wù)服務(wù)的 Broker 集群數(shù)則規(guī)模較多,總的 Topic 數(shù)規(guī)模大,故而需要中間增加一層來緩解對(duì)云監(jiān)控的壓力,這是量變引發(fā)質(zhì)變的結(jié)果。


          Trace:Broker 自研采集→Trace 日志→Filebeat 上報(bào)→APM,這也是演進(jìn)的結(jié)果。原先的架構(gòu)是 Skywalking 采集→內(nèi)存排隊(duì)上報(bào)→APM,這種架構(gòu)看似簡(jiǎn)單,但是當(dāng) Broker 的流量規(guī)模到達(dá)一定程度時(shí),Trace 產(chǎn)生的速度高于上報(bào)的速度,導(dǎo)致內(nèi)存不斷增長進(jìn)而 OOM,因此 Trace 最終也是回歸原始,放棄 Skywalking,利用磁盤承受住短時(shí)的洪峰。當(dāng)然,也有一部分業(yè)務(wù)持續(xù)高流量,造成上報(bào)永遠(yuǎn)追不上 Trace 日志的產(chǎn)生,這種情況下也只有兩種做法:對(duì)于對(duì)消息軌跡不強(qiáng)求的業(yè)務(wù),關(guān)閉 Trace 上報(bào);對(duì)于流量大并且對(duì)軌跡仍然有要求的,只能通過升配的方式,調(diào)大 Filebeat 的可用核心數(shù)硬抗。


          CLS日志采集:Metrics 和 Trace 由于和 Broker 自身的邏輯有強(qiáng)耦合,我們只能針對(duì) Broker 進(jìn)行定制化開發(fā)。但是日志采集是個(gè)普適性功能,因此我們直接采用騰訊云 CLS 來實(shí)現(xiàn)我們的目的:日志采集匯總,根據(jù)環(huán)境、地區(qū)、集群分類,關(guān)鍵字監(jiān)控,日志長時(shí)間存檔,關(guān)鍵字告警等。


          Lookup Service:Lookup Service 是個(gè)地域級(jí)別的模塊,每個(gè)地區(qū)只部署一套,用于同一個(gè)地區(qū)所有 Broker 集群的路由、尋址功能,這個(gè)模塊后續(xù)會(huì)重點(diǎn)介紹。


          設(shè)計(jì)背景及思路


          介紹完 Pulsar 系統(tǒng)架構(gòu),接下來介紹一下我們?cè)隍v訊云場(chǎng)景下所面臨的問題及解決思路。


          • 完全容器化:包括 ZK、BK、Broker 以及其他周邊設(shè)施,全部部署在容器平臺(tái)上。

          • 多環(huán)境、多地區(qū):這是云服務(wù)提供商相比常規(guī)的業(yè)務(wù)。我們不僅有測(cè)試、預(yù)發(fā)、線上環(huán)境,線上環(huán)境還有多個(gè)地區(qū),比如北京、上海、廣州、新加坡、香港等,每個(gè)地區(qū)分別有多個(gè)集群。

          • 多可用區(qū)(同城多機(jī)房):云自身自帶同城多機(jī)房,因此可以很方便做同城多活的容災(zāi)。

          • 集群數(shù)量多、Topic 規(guī)模大:集群數(shù)量多、Topic 多,這對(duì)應(yīng)的我們要設(shè)計(jì)標(biāo)準(zhǔn)化部署流程,前面講到的監(jiān)控鏈路也是在這個(gè)背景下的產(chǎn)物。

          • 產(chǎn)品形態(tài)多種多樣:產(chǎn)品形態(tài)對(duì)應(yīng)的是部署架構(gòu)上的差別,租戶、Broker、Bookie 之間的部署關(guān)系。

          • 虛擬網(wǎng)絡(luò),接入方式多樣:這是云服務(wù)提供商必然要面對(duì)的多網(wǎng)絡(luò)平面的問題。

          • 支持集群熱遷移:在客戶端 url 不變的前提下,將租戶從集群1遷移到集群2,這也是云服務(wù)提供商所需的產(chǎn)品能力,比如將一個(gè)集群從標(biāo)準(zhǔn)版升級(jí)到專業(yè)版,那么就對(duì)應(yīng)租戶和底層物理資源分配上的遷移。


          容器化


          雖然 Pulsar Broker 可以稱作為云原生消息隊(duì)列,但是實(shí)際上,Broker在運(yùn)行時(shí)是有狀態(tài)的,比如:Topic 和 Broker 之間的歸屬關(guān)系。


          因此我們?cè)谶M(jìn)行容器化的時(shí)候,整體的思路就是讓 Pod 和 VM 盡可能劃上等號(hào),于是我們做了以下設(shè)計(jì):


          • 固定 IP:IP 不會(huì)隨著 Pod 的銷毀重建而隨機(jī)變化。

          • Pod 與 Node 網(wǎng)絡(luò)拉平:針對(duì)騰訊云的場(chǎng)景,Client 一定不是運(yùn)行在 Broker 部署的容器集群上,如果不拉平的話,Lookup 時(shí)就得考慮容器網(wǎng)絡(luò)(Overlay)和基礎(chǔ)網(wǎng)絡(luò)(Underlay)之間的映射關(guān)系,會(huì)讓 Lookup 變得很復(fù)雜。

          • 云盤:Pod 中掛的數(shù)據(jù)盤為云盤,真正的計(jì)算存儲(chǔ)分離。

          • 與 CVM 共存:每個(gè) Pod 獨(dú)占一臺(tái) CVM,兩者 CPU 和內(nèi)存參數(shù)對(duì)等,這樣能最大程度保證 Pulsar 運(yùn)行時(shí)的物理隔離性,當(dāng)然,這也是騰訊云 EKS(TKE Serverless)天然提供的能力。另外,在容器化遷移過程中,同一個(gè)集群必然存在 Pod 節(jié)點(diǎn)和 CVM 節(jié)點(diǎn)同時(shí)存在,因此也需要考慮這二者之間的相容性。

          • 優(yōu)雅停機(jī):Pod 銷毀時(shí),需要確保觸發(fā) Pulsar 的 Shutdown 邏輯,否則對(duì) Client 來說就會(huì)變得強(qiáng)烈感知,這也是容器場(chǎng)景和 CVM 場(chǎng)景在 CICD 流程上的差異導(dǎo)致需要注意的地方。

          • Liveness probe 調(diào)優(yōu):Liveness probe 也有一個(gè)有意思的點(diǎn),由于 k8s 自身的各種健康檢查機(jī)制其實(shí)都是依賴于一個(gè)超時(shí)時(shí)間,如果 Broker 啟動(dòng)階段不能在約定超時(shí)時(shí)間內(nèi)返回正確的結(jié)果,k8s 容易誤判為失敗,造成 Broker 無限重啟。舉個(gè)例子:假設(shè)某個(gè) Broker 集群有幾萬個(gè) Topic,那么其 Broker 啟動(dòng)時(shí)間可能需要耗時(shí)90s以上,如果 Liveness 設(shè)置超時(shí)時(shí)間低于該值,就需要特別注意。當(dāng)然,這也是我們集群規(guī)模多導(dǎo)致,我們的不同集群可能是不同的業(yè)務(wù)場(chǎng)景在使用,因此很多類似的參數(shù)都需要針對(duì)性調(diào)優(yōu)。

          • Helm 編排:Pulsar 的部署步驟其實(shí)比較繁雜,Bookie 部署、Bookie 初始化、Broker 部署、Broker 初始化,以及所需的 Secret、ConfigMap、網(wǎng)絡(luò)模塊等,要講這么多模塊有序的編排起來,Helm 當(dāng)然是最好的選擇。


          Topic 規(guī)模大


          Topic 數(shù)多會(huì)引發(fā)以下問題:


          • ZK 元數(shù)據(jù)過多,負(fù)載高

          • 啟動(dòng)變慢,K8s 就緒誤判

          • Broker 重啟爆炸半徑大

          • Lookup 性能變差

          • 監(jiān)控采集聚合引發(fā)質(zhì)變


          產(chǎn)品形態(tài)多樣



          騰訊云 Pulsar 目前提供兩種產(chǎn)品形態(tài),對(duì)應(yīng)底層就是部署架構(gòu)的多樣性,當(dāng)然,這會(huì)對(duì)應(yīng)最終每個(gè)實(shí)例的售賣價(jià)格和騰訊云本身的成本。


          • 共享版:Bookie 和 Broker 都是共享的,本質(zhì)和一個(gè)公司自建一個(gè)集群給公司內(nèi)所有業(yè)務(wù)團(tuán)隊(duì)共用是一個(gè)模型,共享版下的一個(gè)實(shí)例對(duì)應(yīng) Pulsar 的一個(gè)租戶。

          • 專業(yè)版:Bookie 和 Broker 都是獨(dú)占的,且該集群只有一個(gè)租戶,該租戶獨(dú)占完整的所有物理資源。


          接入方式


          騰訊云 Pulsar 提供了多種網(wǎng)絡(luò)接入方式,網(wǎng)絡(luò)接入即 Broker 和 Client 之間的網(wǎng)絡(luò)連通關(guān)系。


          • 內(nèi)網(wǎng)接入



          內(nèi)網(wǎng)接入在本質(zhì)上和常規(guī)的公司內(nèi)自建使用類似,Broker 和 Client 都處在同一個(gè)內(nèi)網(wǎng)之中,且二者之間是完全互通的,Client 連接的 IP 也都是 Broker 的節(jié)點(diǎn)原始 IP,無任何網(wǎng)絡(luò)轉(zhuǎn)換。


          • VPC 接入



          VPC 即虛擬私有網(wǎng)絡(luò),每個(gè)用戶可以創(chuàng)建多個(gè)VPC,每個(gè)VPC下又可以創(chuàng)建多個(gè)子網(wǎng)。想了解更多可查看:https://cloud.tencent.com/document/product/215/20046。


          兩個(gè) VPC 之間通常是無法互通的,比如圖上的10.0.0.0/8和192.168.0.0/16,除非使用云聯(lián)網(wǎng)、對(duì)等連接等 VPC 之間的互通產(chǎn)品,但是這個(gè)不在我們的討論范圍。


          如圖所示,Broker 部署在10.0.0.0/8,而 Client 在192.168.0.0/16,那么這時(shí)候,Client 想要訪問 Broker 就變得不可能。


          在云網(wǎng)絡(luò)場(chǎng)景,VPC 提供了云虛擬網(wǎng)關(guān)(僅內(nèi)部組件)來支持兩個(gè) VPC 之間的互通,我們便稱之為跨網(wǎng)絡(luò)平面互通。


          當(dāng)然,其本質(zhì)就是做網(wǎng)絡(luò)映射,比如:


          • Broker1:在10.0.0.0/8的 IP 是10.2.0.1,我們通過云虛擬網(wǎng)關(guān)創(chuàng)建 Broker1 在192.168.0.0/16的 IP 為192.168.1.1,那么當(dāng) Client 在10.0.0.0/8中就需要用10.2.0.1訪問Broker1,當(dāng) Client 在192.168.0.0/16中就要用192.168.1.1來訪問 Broker1。

          • 由于 Pulsar Client 的連接協(xié)議是先 Lookup 后直連的方式(這個(gè)可以參照后面的 Lookup 尋址時(shí)序圖),就對(duì) Broker 的 Lookup 接口提高了要求,Broker 就需要自動(dòng)化地判定:

            1、當(dāng) Client 來自于10.0.0.0/8網(wǎng)絡(luò),返回10.2.0.1

            2、當(dāng) Client 來自于192.168.0.0/16網(wǎng)絡(luò),返回192.168.1.1


          這也就是 Pulsar 這個(gè)服務(wù)在云服務(wù)場(chǎng)景所要面對(duì)的問題。


          • 公網(wǎng)接入



          前面介紹了 VPC 接入,其實(shí)公網(wǎng)接入和 VPC 接入也是類似的。


          唯一的差別是:


          • VPC 接入:Broker 和 Client 處在兩個(gè)不同的內(nèi)網(wǎng)網(wǎng)絡(luò)平面。

          • 公網(wǎng)接入:Broker 部署在內(nèi)網(wǎng),而 Client 來自于公網(wǎng),可以直接把公網(wǎng)看作一個(gè)特殊的 VPC 就很好理解了。


          尋址服務(wù)


          下面我們來介紹下騰訊云的尋址服務(wù)的思路來源,也是尋址服務(wù)的價(jià)值所在。


          RocketMQ 架構(gòu)參考



          我們看下 RocketMQ 的服務(wù),其架構(gòu)分為 NameServer 和 Broker。


          • NameServer 保存了集群的元數(shù)據(jù):Topic 和 Broker 之間的歸屬關(guān)系,這樣就可以動(dòng)態(tài)地配置 Topic 和 Broker 之間的從屬關(guān)系,也可以將 Topic 在不同的 Broker 集群之間調(diào)度。

          • RocketMQ 同 Pulsar 一樣,也有類似 Lookup 的尋址流程,只不過 RocketMQ Client 尋址的請(qǐng)求對(duì)象是 NameServer,而 Pulsar Client 尋址的請(qǐng)求對(duì)象是 Broker,從這方面看來,架構(gòu)上可以理解為 Pulsar Broker 相當(dāng)于是 RocketMQ NameServer 和 RocketMQ Broker 結(jié)合到了一起。


          優(yōu)缺點(diǎn):


          Pulsar 這樣做部署架構(gòu)簡(jiǎn)單,不會(huì)額外多出一個(gè) NameServer 服務(wù),但是同樣也失去了 Topic 在物理集群之間的調(diào)度能力。


          RocketMQ 雖然多出了一個(gè)模塊,但是其提供的集群調(diào)度能力,是一種非常重要的運(yùn)維能力。


          這種調(diào)度能力,恰恰是云服務(wù)所需要的,有了這種調(diào)度能力,我們的云服務(wù)才能對(duì)集群有可運(yùn)維性和靈活的資源調(diào)度方式。


          多網(wǎng)絡(luò) Lookup



          如前面所說,在云服務(wù)場(chǎng)景,針對(duì) Pulsar Broker,我們需要提供的內(nèi)網(wǎng)、VPC、公網(wǎng)三種網(wǎng)絡(luò)接入場(chǎng)景,和 Pulsar Broker 本身提供的 Lookup 能力的矛盾。使用尋址模塊,便有以下好處:


          • 將多網(wǎng)絡(luò)接入這種云服務(wù)場(chǎng)景收斂在尋址服務(wù)內(nèi)核中,而 Broker 仍然只提供最純粹的內(nèi)網(wǎng)服務(wù),更好地保持 Broker 的原始能力以及與開源的銜接。

          • 動(dòng)態(tài)地增減接入點(diǎn)(即不同的網(wǎng)絡(luò)接入方式的概念名稱),對(duì)于一個(gè) Pulsar 集群來說增加、減少一個(gè)內(nèi)網(wǎng)、VPC、公網(wǎng)接入點(diǎn)時(shí),不需要對(duì) Broker 做任何變動(dòng)。

          • 實(shí)現(xiàn)擴(kuò)縮容的自動(dòng)化和無感知化,Broker 的擴(kuò)縮容,等同的也需要對(duì)該集群的所有接入點(diǎn)中的網(wǎng)絡(luò)映射進(jìn)行擴(kuò)縮容變更,由于尋址模塊的存在,這部分全部收斂在該模塊,Broker 的擴(kuò)縮容不需要對(duì)存量節(jié)點(diǎn)做任何變動(dòng)。


          Lookup 時(shí)序



          前面介紹了很多尋址模塊和尋址流程,這里來重點(diǎn)介紹下 Pulsar-Client 的尋址時(shí)序,來補(bǔ)充下對(duì)前面的介紹,以及科普下 Pulsar Client 的機(jī)制:


          • 第一步:獲取 Topic 分區(qū)數(shù):Client→CLB→Broker,一對(duì)多指的是該請(qǐng)求落到 CLB 后面的任意一臺(tái) Broker 都能對(duì)等返回正確結(jié)果。

          • 第二步:?jiǎn)畏謪^(qū) Topic Lookup:針對(duì)單個(gè)分區(qū)進(jìn)行 Lookup,詢問該 Topic 當(dāng)前的 Owner Broker 地址,同樣是一對(duì)多,不同 Broker 之間提供對(duì)等服務(wù)。

          • 第三步:基于第二步返回的該 Topic 分區(qū)的 Owner Broker 地址,進(jìn)行直連,隨后進(jìn)行消息收發(fā)。一對(duì)一,特指此時(shí)的直連必須精準(zhǔn)連接 Broker 集群中的某臺(tái) Broker,比如 Broker-2,連接別的 Broker 則會(huì)連接失敗。


          這就是 Pulsar-Client 初始化一個(gè) Producer/Consumer 的步驟。


          我們的尋址模塊切入點(diǎn)在哪呢?


          就是第一和第二步,如圖所示,在這兩個(gè)步驟中間加入一層代理層,這樣就可以在尋址返回結(jié)果上針對(duì)多網(wǎng)絡(luò)接入、Topic 和物理集群從屬關(guān)系調(diào)度上做一些篡改,以達(dá)到我們的目的。


          集群間調(diào)度



          上圖是我們加入尋址模塊后,Pulsar 架構(gòu)上的改變,整個(gè)架構(gòu)就變得和 RocketMQ 有點(diǎn)類似,有一個(gè)中央元數(shù)據(jù)服務(wù)用來管理 Topic 資源和物理計(jì)算資源之間的關(guān)系。


          跨集群遷移


          前面鋪墊了這么多,介紹了尋址模塊以及架構(gòu)上的優(yōu)化,接下來介紹下在此之上我們所做的產(chǎn)品化能力——跨集群遷移。


          跨集群遷移特指一個(gè)租戶從物理集群1遷移到物理集群2,兩個(gè)集群同時(shí)提供服務(wù),在線熱切換,Client 輕微感知。


          如圖所示,整個(gè)流程也很簡(jiǎn)單,尋址服務(wù)保存了租戶和物理集群的路由關(guān)系,路由關(guān)系一變更,即集群遷移變更。



          基于 Pulsar Lookup 尋址的協(xié)議,路由關(guān)系的切換粒度可以做到租戶粒度、Namespace 粒度、Topic 粒度、分區(qū)粒度。


          切換的方式:路由切換+Topic unload


          機(jī)制上來說,這個(gè)切換流程很簡(jiǎn)單,難點(diǎn)在前置準(zhǔn)備工作上:


          • 元數(shù)據(jù)遷移:租戶、Namespace、Policies、Topic、訂閱、Token 等。

          • 消息雙向同步:切換過程中兩個(gè)集群同時(shí)提供服務(wù),為了提供可回滾能力,發(fā)送的消息需要在兩個(gè)集群之間雙向同步,保證兩個(gè)集群都有完整的所有消息。

          • 進(jìn)度同步:每個(gè) Topic 的訂閱消費(fèi)進(jìn)度不同,需要定時(shí)同步,盡量較少切換過程中的重復(fù)消費(fèi)。


          消息同步


          消息同步比較簡(jiǎn)單,我們采用了 Pulsar 自帶的 GEO-Replicator 功能,這里不再贅述。



          進(jìn)度同步


          這里簡(jiǎn)單介紹下進(jìn)度同步的機(jī)制。


          1. 消息遷移:在消息同步階段(GEO-Replicator)會(huì)在消息頭部攜帶消息的源集群里的消息 IP。

          2. 定時(shí)同步:定時(shí)將源集群的消費(fèi)進(jìn)度同步到目標(biāo)集群,基于 Compact topic 同步和持久化。

          3. 進(jìn)度緩存:目標(biāo)集群讀取 Compact topic 中的消費(fèi)進(jìn)度信息,將消費(fèi)進(jìn)度加載到內(nèi)存。

          4. 投遞過濾:在 Pulsar 的投遞流程 Dispatcher 處理過程中,過濾掉本要投遞,但是已經(jīng)在源集群進(jìn)度中投遞過的。


          跨地區(qū)容災(zāi)


          地區(qū)容災(zāi),也是我們基于尋址服務(wù)的架構(gòu)改進(jìn)后,所開發(fā)出的產(chǎn)品化能力。


          本質(zhì)和跨集群遷移類似,但是由于跨地區(qū)的網(wǎng)絡(luò)時(shí)延問題,在側(cè)重點(diǎn)上有所不同:



          如圖所示,假設(shè)我們的 Pulsar 實(shí)例在廣州地區(qū),Client 也在廣州地區(qū),但是由于不可抗力,導(dǎo)致廣州地區(qū)的 Pulsar 實(shí)例全部宕機(jī),并且短時(shí)間內(nèi)無法迅速恢復(fù),我們可以暫時(shí)將 Client 的流量切到上海地區(qū)的容災(zāi)實(shí)例,來保證 Client 在線業(yè)務(wù)的迅速恢復(fù)。


          • 同一時(shí)間只有一個(gè)集群提供服務(wù)。

          • 短時(shí)間、臨時(shí)性切換:由于跨地區(qū)時(shí)延的不可控(特別是國外地區(qū)),容災(zāi)機(jī)制一定是臨時(shí)的,待廣州地區(qū)恢復(fù)后,理應(yīng)盡快將流量回切。

          • 元數(shù)據(jù)定時(shí)同步:因?yàn)槲覀儫o法預(yù)測(cè)廣州集群何時(shí)宕機(jī),且該場(chǎng)景的使用頻度較低,這是一種權(quán)衡的結(jié)果。

          • 消息、進(jìn)度不同步:面對(duì)的是廣州集群全部宕機(jī),此時(shí)廣州集群磁盤中的數(shù)據(jù)暫時(shí)無法讀取,另一個(gè)原因就是跨地區(qū)時(shí)延大,做實(shí)時(shí)消息同步的性價(jià)比太低。

          • 切換:基于域名解析切換,因?yàn)閺V州和上海的尋址服務(wù)互相獨(dú)立隔離,這個(gè)時(shí)候如果廣州集群有堆積,那部分只能繼續(xù)堆積著,等廣州地區(qū)恢復(fù)了才有機(jī)會(huì)重新消費(fèi)。

          • 回切:由于上海集群只是用來緊急容災(zāi),在廣州集群恢復(fù)后,必定要重新切回廣州,回切的過程中比較重要的就是上海集群上堆積的消息,需要回寫到廣州,這個(gè)過程中不可避免會(huì)出現(xiàn)一部分重復(fù)消費(fèi)和消費(fèi)順序錯(cuò)亂(同一分區(qū)內(nèi))。


          該方案是面對(duì)地區(qū)級(jí)別災(zāi)難場(chǎng)景下的容災(zāi),因?yàn)槊總€(gè)地區(qū)本身已經(jīng)是多可用區(qū)部署(同城多機(jī)房),因此整個(gè)地區(qū)不可用的概率較低,因此跨地區(qū)容災(zāi)的整個(gè)產(chǎn)品設(shè)計(jì)側(cè)重主要用于應(yīng)急,而不是為了像跨集群遷移一樣的熱切換,需要做到非常嚴(yán)格的雙向同步。


          總結(jié)


          我們先從騰訊云 Pulsar 的整體架構(gòu)講起,介紹了在騰訊云的場(chǎng)景下所需要面對(duì)的問題,引出了尋址模塊(Lookup Service),并介紹了尋址模塊的引入對(duì)于 Pulsar 的部署架構(gòu)上的優(yōu)化。隨后介紹了 Lookup Service 解決的兩個(gè)核心問題:多網(wǎng)絡(luò) Lookup 和集群間調(diào)度,并保證對(duì)客戶端接入的無感知和對(duì)架構(gòu)的低侵入性。由于尋址模塊的存在,我們便能基于它做進(jìn)一步的產(chǎn)品化能力,跨集群遷移和跨地區(qū)容災(zāi),從而能夠在不同級(jí)別的災(zāi)難場(chǎng)景下都能提供相應(yīng)的修復(fù)措施和運(yùn)維能力。


          未來,我們還會(huì)繼續(xù)在容災(zāi)能力、Pulsar 周邊生態(tài)對(duì)接、存儲(chǔ)優(yōu)化等方面繼續(xù)努力,以提供成本更低、穩(wěn)定性更高的 Pulsar 產(chǎn)品。


          往期

          推薦


          《KMS 在騰訊云的微服務(wù)實(shí)踐助力其降本50%

          《騰訊云消息隊(duì)列產(chǎn)品9月產(chǎn)品動(dòng)態(tài),CKafka 專業(yè)版分區(qū)上限提升

          《騰訊云微服務(wù)產(chǎn)品9月產(chǎn)品動(dòng)態(tài),TSE 云原生 API 網(wǎng)關(guān)日志體驗(yàn)全面升級(jí)

          《Apache Pulsar 技術(shù)系列 - PulsarClient 實(shí)現(xiàn)解析

          《小鵝通基于 TSE 云原生 API 網(wǎng)關(guān)的落地實(shí)踐



          掃描下方二維碼關(guān)注本公眾號(hào),

          了解更多微服務(wù)、消息隊(duì)列的相關(guān)信息!

          解鎖超多鵝廠周邊!

          戳原文,查看更多彈性微服務(wù) TSE
          的信息!

          點(diǎn)個(gè)在看你最好看

          瀏覽 793
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美操逼的网站亚洲 | AAA片视频| 豆花无码短视频在线观看网址 | 中文字幕永久 | 亚洲综合二区 |