《云原生消息流系統 Apache Pulsar 在騰訊云的大規模生產實踐-冉小龍.pdf》由會員分享,可在線閱讀,更多相關《云原生消息流系統 Apache Pulsar 在騰訊云的大規模生產實踐-冉小龍.pdf(25頁珍藏版)》請在三個皮匠報告上搜索。
1、Apache Pulsar Apache Pulsar 在騰訊云的穩定性優化實踐在騰訊云的穩定性優化實踐冉小龍騰訊云中間件高級工程師關于我 目前任職騰訊云中間件團隊,曾工作于 Apache Pulsar 開源商業團隊 StreamNative Apache Pulsar Committer RocketMQ-on-Pulsar(RoP)維護者 Apache Pulsar Go client 與 Pulsar Go Functions 作者演講提綱Apache Pulsar 介紹Apache Pulsar 在騰訊云的穩定性實踐Apache Pulsar 未來穩定性規劃消息空洞的影響及規避措施從消
2、息生命周期看 TTL,Backlog 及 Retention 策略Admin API Block 的優化處理ZK-Node 泄漏Bookie Ledger 泄漏Apache Pulsar 架構與社區消息和流系統發展回顧計算存儲分離節點對等分層分片服務高可用擴展運維便捷Apache Pulsar:存算分離、云原生架構企業需求和數據規模企業需求和數據規模大集群/多租戶百萬 Topic低延時持久化跨地域復制Apache Pulsar 整體概覽解除存儲計算耦合解除存儲計算耦合運維痛點替換機器服務擴/縮容數據 rebalanceApache Pulsar:社區快速成長全球貢獻者 600+月度活躍貢獻者超
3、過 Kafka全球用戶快速成長Apache Pulsar 在騰訊云的穩定性實踐 單條消息 Ack(在線消息)-Ack Hole 如何理解 individuallyDeletedMessages?Broker 處理失???Client 沒有調用 Ack?精確計算 Backlog Size?Broker 主動補償?穩定性實踐 1:消息空洞的影響及規避措施 Producer Exception Producer Request Hold Consumer Backlog EvictionBroker 主動補償機制:Backlog 策略Broker 主動補償機制|Pulsar 計算 Backlog Si
4、ze 的方式Broker 主動補償機制 獲取 individuallyDeletedMessages 集合的第一個元素 啟動定時任務 Excutor Service 定期向 Client 推送 individuallyDeletedMessages穩定性實踐 2:再談 TTL,Backlog 及 Retention 策略TTL:表示消息在指定時間內沒有被用戶 Ack 時會在 Broker 主動 Ack 掉。Backlog:表示 Producer 發送的消息與 Consumer 接收消息之間的差距。Retention:表示的是當消息被 Ack 之后,繼續在 Bookie 側保留多久的時間,以 L
5、edger為最小操作單元。TTLTTL:根據設置的時間,定期檢查,不斷更新 cursor 的位置(見右圖),將消息過期掉RetentionRetention:檢查 Ledgers 的創建時間以及 Entry 的大小來決定是否要刪除某一個 Ledger 穩定性實踐 2:再談 TTL,Backlog 及 Retention 策略TTLTTL Retention:=Retention:TTL=Retention:消息的生命周期:TTL TimeTTL TTL 策略策略為什么要選擇為什么要選擇 Ledger Ledger 發生切換的發生切換的這個時機來觸發這個時機來觸發 Ledger Ledger 的
6、刪除操作?的刪除操作?穩定性實踐 2:再談 TTL,Backlog 及 Retention 策略穩定性實踐 3:Admin API Block 的優化處理異步調用同步Http Lookup ServicePulsar WEB 服務性能較差(CompletableFuture 的誤用)Metadata Store 線程池的抽象加入超時的處理避免 block穩定性實踐 4:zk-node 泄漏問題:正在使用的 Topic 不多,但 zk-node 數量卻很大,Pulsar 對 zk-node 的放大倍數較高。上圖拐點是 zk-node 臟數據清理的時點,可以看到 zk-node 數據泄漏的情況非常
7、嚴重,達到 5 倍之多。解決方案解決方案首先獲取 zk-node 下所有的 topic 列表通過 pulsar-admin check 集群中是否存在該 topic切記:清理 zk 數據之前,請先備份 zk 數據穩定性實踐 4:zk-node 泄漏穩定性實踐 5:Bookie Ledger 泄漏觸發 Ledger 刪除的唯一路徑:Retention 策略Bookie CLI?獲取 LedgerInfo 中創建 Ledger 的時間確認 Ledger 是否存在 Bookie 中且Broker 不存在該 Topic切記:高危操作,請先備份!未來穩定性規劃1s 耗時的規避及優化客戶端超時時間內的重試策略Broker 和 Bookie OOM 的優化Bookie Auto Recovery 優化Bookie 消息丟失的情況復現(周邊工具完善)加入 Apache Pulsar 社區中文社區公眾號中文社區公眾號社區機器人社區機器人路漫漫其修遠兮,吾將上下而求索路漫漫其修遠兮,吾將上下而求索