《2024-PG-大會-馮遵寶-阿里云PolarDB-PG云原生架構演進-v4-最新版.pdf》由會員分享,可在線閱讀,更多相關《2024-PG-大會-馮遵寶-阿里云PolarDB-PG云原生架構演進-v4-最新版.pdf(31頁珍藏版)》請在三個皮匠報告上搜索。
1、阿云 PolarDB for PostgreSQL云原架構的演進馮遵寶(北俠)|阿里云高級技術專家 PolarStore/PolarDB-PG內核組1、PolarDB-PostgreSQL ShareStorage架構(更好用的企業級PostgreSQL)PolarDB for PostgreSQL 研發歷程2015.5RDS PG 產品發布20172019PolarDB-PG 11 ShareStorage發布LogIndex/DirectIO 跨機并行查詢 Online Promote TDE/Persistent BP CSN/WAL Pipeline 連接池、秒級監控PolarDB-P
2、G 大規模商用級特性V1計算存儲綁定(備份恢復)Double Cache(BIO)OOM HA慢、慢查詢 分區表 Vacuum 缺少監控 大表。社區PG大規模商用問題2022.5 PolarDB-PG 14 ShareStorage發布2024.7/8PolarDB-PG 15/16 ShareStorage發布分布式 HTAP架構 內存優化 壓縮/冷熱分層存儲 IO預讀 分區表優化 復雜查詢優化(向量化執行器)透明加密 PolarDB-PG 研發團隊 50+位專職研發 7年內核技術沉淀 383+功能 公有云上大量實例運維經驗PolarDB-PG 大規模商用級特性V2PolarDB-PG 研發
3、準則 100%兼容PG 緊跟社區版本 解決PG大規模商用的問題PolarDB for PostgreSQL-ShareStorage架構Primary(讀寫節點)Primary(讀寫節點)ReadOnly(只讀節點)ReadOnly(只讀節點)(PolarStore/ESSD云盤)MemoryCPU本地盤MemoryCPU計算層存儲層Primary(讀寫節點)本地盤MemoryCPU復制 日志PolarDB-PG ShareStorage架構:5分鐘級加減節點(500TB)毫秒級主備延遲 共享一份數據 可靠性:三副本、秒級備份PolarFSMemoryCPUPolarFSMemoryCPUPo
4、larFS擴縮容慢 備份恢復慢 主備之間互相影響PolarDB for PostgreSQL -跨機并行查詢ePQPrimary(讀寫節點)MemoryCPUTP業務AP業務TP型業務(PolarStore/ESSD云盤)(如何加速復雜報表類/抽數分析查詢?)PolarFSReadOnly(只讀節點)MemoryCPUPolarFSReadOnly(只讀節點)MemoryCPUPolarFSReadOnly(只讀節點)MemoryCPUPolarFSReadOnly(只讀節點)MemoryCPUPolarFS內置數據倉庫的MPP引擎(分布式并行計算):一套數據支持TP和AP,無需數據同步 數據
5、毫秒級延遲,不再等待N+1 查詢線性增加/*+PX(3)*/SELECT COUNT(*)FROM t1,t2 WHERE t1.c1=t2.c1(PolarStore/ESSD云盤)ChunkSvrCHUNKChunkSvrCHUNKChunkSvrCHUNK一鍵開啟跨機并行PolarDB for PostgreSQL -跨機并行查詢ePQ(如何加速復雜報表類/抽數分析查詢?)PolarDB for PostgreSQL 整體架構ShareStorage(一寫多讀)架構的優勢 彈性、成本、高可用 既支持單機并行,還支持跨機并行2、PolarDB-PostgreSQL 云原生分布式架構(海量實
6、時寫入/游戲/SaaS/訂單/微服務類場景)PolarDB-PG 云原生分布式技術(一寫多讀 vs 分布式數據庫,真的需要分布式嗎?)PolarDB-PG一寫多讀:Share-Storage(共享一份分布式存儲)讀線性擴展 SQL全兼容 寫能力受單點限制 滿足絕大部分負載下業務訴求分布式數據庫:Share-nothing(獨立存儲)讀/寫線性擴展 并非SQL全兼容 適用于具有明顯分片特征的業務場景(Saas、微服務、訂單)Primary(讀寫節點)分布式存儲RO 只讀節點RO 只讀節點CN節點DN節點計算存儲DN節點計算存儲DN節點計算存儲CN節點 傳統分布式數據庫架構PrimaryLocal
7、 DiskShareNothing架構,水平擴展強 基于本地盤(主備模式)CN節點 StandbyCN節點 PrimaryCN節點StandbyDN節點 PrimaryDN節點StandbyDN節點 PrimaryDN節點StandbyDN節點 PrimaryDN節點Standby傳統分布式數據庫Local DiskLocal DiskLocal DiskLocal DiskLocal DiskLocal DiskLocal DiskLocal DiskLocal DiskCN節點(PolarDB-PG)RW共享存儲ROCN節點(PolarDB-PG)DN節點(PolarDB-PG)DN節點(
8、PolarDB-PG)DN節點(PolarDB-PG)RWRORWRORWRORWRO共享存儲共享存儲共享存儲共享存儲整體是ShareNothing架構:水平擴展 節點是ShareStorage:高可用 彈性應對業務洪峰 快速集群級備份基于云原生的分布式數據庫PolarDB-PG 云原生分布式數據庫ShareNothing-on-ShareStorageCN節點(PolarDB-PG)用戶普通表基于FDW和分區表 優化器:FDW 優化器(CBO)裁剪、下推、FastQueryShip 執行器:全局Plan復用、連接池、2PC事務管理關鍵技術PolarDB-PG 云原生分布式數據庫FDW表DN節
9、點(PolarDB-PG)分區表父表P子分區 P_1子分區 P_2子分區 P_3DN節點(PolarDB-PG)分區表父表P子分區 P_1子分區 P_2子分區 P_3DN節點(PolarDB-PG)分區表父表P子分區 P_1子分區 P_2子分區 P_3基于CBO3、PolarDB-PG 企業級功能(解決PG大規模商用中的疑難問題)降低80%內存占用,預計降配后成本降低50%7天內2次OOM-不發生OOMPolarDB-PG 性能優化-內存優化技術-全局PlanCache(解決OOM問題-PlanCache/海量連接)社區PG:總內存=總進程數*plancache數目 PolarDB-PG:Pl
10、anCache放入全局內存,多個進程共享PolarDB-PG 性能優化-內存優化技術-全局RelCache/CatCache(解決OOM問題-海量表/海量連接)社區PG:總內存=總進程數*表的元數據數條目 PolarDB-PG:RelCache/CatCache放入全局內存,多個進程共享降低80%內存占用,預計降配后成本降低50%7天內2次OOM-不發生OOMPolarDB-PG 內存優化-Resource Manager(預防/兜底OOM問題)Resource Manager 定期監控各進程的資源消耗(CPU/內存)主動結束超過閾值的進程 防止實例被操作系統kill-9PolarDB-PG
11、性能優化-DirectIO技術效果:全用戶態,隔離性 消除 Double Cache,隨機讀性能提升 40%通過AIO機制更精確的預讀和預寫(避免Buffer IO的導致實例hang?。㏄olarStore:數據庫定制高性能分布式存儲軟件上并行IO,適應數據庫IO范式:自研ParallelRaft分布式協議:亂序commit/亂序apply PAGE級別并發復制秒級增量快照:COW機制按需分配,降低存儲成本(加速IO的帶寬、優化延遲)PolarStore:線上實際業務IO指標(穩定、快速)主節點IO指標:只讀節點1的IO指標:只讀節點2的IO指標:PolarDB-PG 性能優化-大表優化技術(
12、加速大表的數據和索引查詢)smgr:優化大表的open/lseek次數 刷臟:多進程并行刷臟 Relation Size Cache:緩存表大小 AIO機制:索引:回表預讀/索引樹預讀 vacuum:預讀IO/預寫 線上最大的單表8.2TB,日更新2000w效果:消除Snapshot鎖等待 TPCC性能提升30%左右 多核心線性提升PolarDB-PG 性能優化-CSN技術(加速多核心下的大實例性能)效果 降低重啟與Crash Recovery時間 性能在重啟前后保持穩定PolarDB-PG 性能優化-高可用 BufferPool(解決TPS慢啟動問題)事務拆分:路由事務塊內第一個寫之前的請求
13、PolarDB-PG 性能優化-智能代理(多節點間讀寫分離、負載均衡)PolarDB-PG 冷熱分層存儲(降低冷數據(歷史歸檔)的存儲費用)自動換入換出:寫性能損耗5%以內,讀性能通過3層緩存降到最低 使用簡單:ALTER TABLE tblname SET TABLESPACE OSS;-heap表 ALTER INDEX idxname SET TABLESPACE OSS;-索引PolarDB-PG 硬件頁面壓縮(降低存儲成本)存儲節點硬件壓縮,不占用數據庫節點的CPUPolarDB-PG Serverless 動態伸縮CPU資源(減少周期性負載特征業務的費用)PolarDB-PG 主節點速本地盤BufferPool ExtensionPolarDB-PG 計算端BufferPool讀緩存(提升讀多寫少場景IO性能)PolarDB-PG 只讀節點速本地盤BufferPool Extension(PolarStore/ESS