![蘇寧citus架構(gòu)演進(jìn)之路_第1頁(yè)](http://file4.renrendoc.com/view/ce30da78c44378d67e373d42ae175332/ce30da78c44378d67e373d42ae1753321.gif)
![蘇寧citus架構(gòu)演進(jìn)之路_第2頁(yè)](http://file4.renrendoc.com/view/ce30da78c44378d67e373d42ae175332/ce30da78c44378d67e373d42ae1753322.gif)
![蘇寧citus架構(gòu)演進(jìn)之路_第3頁(yè)](http://file4.renrendoc.com/view/ce30da78c44378d67e373d42ae175332/ce30da78c44378d67e373d42ae1753323.gif)
![蘇寧citus架構(gòu)演進(jìn)之路_第4頁(yè)](http://file4.renrendoc.com/view/ce30da78c44378d67e373d42ae175332/ce30da78c44378d67e373d42ae1753324.gif)
![蘇寧citus架構(gòu)演進(jìn)之路_第5頁(yè)](http://file4.renrendoc.com/view/ce30da78c44378d67e373d42ae175332/ce30da78c44378d67e373d42ae1753325.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 揚(yáng)帆起航蘇寧citus架構(gòu)演進(jìn)之路目錄lCitus的架構(gòu)演進(jìn)lCitus擴(kuò)容的方案演進(jìn)l痛點(diǎn)分享如今的Citus在蘇寧支撐了哪些業(yè)務(wù)TP業(yè)務(wù)物流訂單的定價(jià)、結(jié)算業(yè)務(wù)數(shù)據(jù)庫(kù)的性能監(jiān)控?cái)?shù)據(jù)AP業(yè)務(wù)大數(shù)據(jù)分析平臺(tái)金融,物流,商戶等的BI分析業(yè)務(wù)緣起為了支撐某業(yè)務(wù)的10倍擴(kuò)容性能要求高負(fù)載類型多樣Spark任務(wù)分析平臺(tái)明細(xì)表報(bào)表維表報(bào)表計(jì)算200+聚合/min業(yè)務(wù)系統(tǒng)1業(yè)務(wù)系統(tǒng)2抽取明細(xì)更新5w/s(400+字段 2.5KB/row)90%UPDATE + 10%INSERTn 擴(kuò)容前的數(shù)據(jù)庫(kù)(DB2)硬件:24C/256GB/4800GB SSD平時(shí):45% CPU利用率大促:80%+ CPU利用
2、率(不堪重負(fù)!)DB2分布式數(shù)據(jù)庫(kù)選型(2017年)方案優(yōu)點(diǎn)缺點(diǎn)結(jié)論Greenplum 支持列存 支持壓縮 SQL兼容好 更新慢 并發(fā)低不符合明細(xì)更新的性能要求postgres_fdw+ pg_pathmanSQL兼容好 不支持聚合下推(PG10以后支持) 不支持并行查詢分片表管理不便不符合明細(xì)表查詢性能要求PG-XLSQL兼容好 GTM對(duì)性能的影響? 穩(wěn)定性,維護(hù)成本? 社區(qū)不活躍版本更新慢未深入評(píng)估citus Just a extension 分片表管理方便 成功案例較多 部分SQL不支持不支持全局一致性讀基本匹配業(yè)務(wù)場(chǎng)景最初為了應(yīng)對(duì)業(yè)務(wù)系統(tǒng)的復(fù)雜負(fù)載需求,做了如下的一些比較,最終選擇了c
3、itus初期的部署架構(gòu)(含連接池)App(普通)App(A普pp通)worker1worker2PostgreSQLCitus插件PostgreSQLCitus插件CoordinatorPostgreSQLCitus插件pgbouncer(wk1)pgbouncer(wk2)系統(tǒng)表(元數(shù)據(jù))說明pg_dist_nodeWorker node tablepg_dist_partitionPartition tablepg_dist_shardShard tablepg_dist_placementShard placement tablepg_dist_colocationCo-location
4、 group table架構(gòu)的變更史2017/51CN+4Worker(PG9.6+Citus6.1)1CN+4Worker(PG9.6+Citus7.1)升級(jí)1CN+8Worker+2只讀CN(PG9.6+Citus7.1)擴(kuò)容升級(jí)1CN+8Worker+2只讀CN(PG10.2+Citus7.2)1CN+16Worker+4只讀CN(PG10.2+Citus7.2)擴(kuò)容2018/10(雙11前)該系統(tǒng)上線以來成功實(shí)施了多次升級(jí)和擴(kuò)容第一套系統(tǒng)已上線數(shù)十個(gè)系統(tǒng)約1500實(shí)例2018年上半年試點(diǎn)階段開始普及痛點(diǎn)CoordinatorApp(普通)App(A普pp通)worker1worker2
5、PostgreSQLCitus插件PostgreSQLCitus插件PostgreSQLCitus插件pgbouncer(wk1)pgbouncer(wk2)workerNPostgreSQLCitus插件不斷擴(kuò)容出現(xiàn)單CN瓶頸Pgbouncer部署在CN上 阻礙分片間通信(分片修 復(fù)和分片遷移)多CN部署架構(gòu)PostgreSQLPostgreSQLAApppp(普普通通)App參 考 : /ChenHuajun/chenh uajun.github.io/blob/master/_posts/20 18-06-11-citus實(shí)戰(zhàn)系列之四多CN部 署.mdworker1pgbouncerwo
6、rker2pgbouncerPostgreSQLCoordinator擴(kuò)展worker(MX node)pgbouncer擴(kuò)展worker(MX node)pgbouncermetadatatb1PostgreSQLworker4pgbouncerPostgreSQLmetadatatb1PostgreSQLmetadatatb1tb1_1tb1_2tb1_3tb1_4包含元數(shù)據(jù)包含參考表數(shù)據(jù)不包含分片表數(shù)據(jù)實(shí)時(shí)同步CN的DDL變更擴(kuò)展worker為可選組件應(yīng)用通過JDBC多主機(jī)URL訪問擴(kuò)展workerjdbc:postgresql:/$擴(kuò)展worker1,$擴(kuò)展worker2,./$dbn
7、ame?targetServerType=any&loadBalanceHosts=true&支持DDL & DMLPgbouncer在WK節(jié)點(diǎn)Citus插件Citus插件Citus插件Citus插件woCrkiteru3s版本升級(jí)pgb到oun7ce.r4PostgreSQL支持部追分D加ML 了新的節(jié)點(diǎn)身份:擴(kuò)展WK多CN架構(gòu)的現(xiàn)狀 集群規(guī)模這套架構(gòu)上線1年多,截止到2019年雙11,已經(jīng)有311套citus集群(約3000PG實(shí)例),其中大部分是1CN 4WK或者8WK的規(guī)模,其中規(guī)模最 大的幾套庫(kù),有1個(gè)CN節(jié)點(diǎn), 3個(gè)擴(kuò)展WK節(jié)點(diǎn)和32個(gè)普通WK節(jié)點(diǎn) 數(shù)據(jù)量數(shù)據(jù)量最大的兩套庫(kù),整個(gè)集
8、群的數(shù)據(jù)總量有30T和15T左右,其他的庫(kù) 基本單個(gè)WK的數(shù)據(jù)量也在400G左右新的痛點(diǎn)(需求)Coordinator(主)Worker2 (主)Worker1(主)Worker3 (主)Coordinator(備)Worker1(備)Worker2(備)Worker3(備)Worker4(備)流復(fù)制流復(fù)制流復(fù)制流復(fù)制流復(fù)制寫流量讀流量App寫業(yè)務(wù)讀業(yè)務(wù)Worker備庫(kù)資源閑置, 僅僅是作為HA而已Worker4 (主)抽數(shù)業(yè)務(wù)影響交易業(yè)務(wù),AP和TP業(yè)務(wù)在同時(shí)跑讀寫分離的新架構(gòu)Coordinator(主)Worker2 (主)Worker1(主)Worker3 (主)Worker4 (主)C
9、oordinator(備)Worker1(備)Worker2(備)Worker3(備)Worker4(備)流復(fù)制流復(fù)制流復(fù)制流復(fù)制寫流量讀流量App寫業(yè)務(wù)App讀業(yè)務(wù)CN通過PG流復(fù)制保持?jǐn)?shù)據(jù) 同步,那么如何在一份元 數(shù)據(jù)的前提下,實(shí)現(xiàn)CN備 庫(kù)到WK備庫(kù)流量劃撥呢?流復(fù)制/etc/hosts主機(jī)名稱映射通過在/etc/hosts中配置主機(jī)名的映射來先實(shí)現(xiàn)CN備庫(kù)到WK備庫(kù) 流量的劃撥CN主庫(kù)# citus集群各WK主庫(kù)的IP citus_wk1 xxx.xxx.xxx.xxx citus_wk2 xxx.xxx.xxx.xxx.CN備庫(kù)# citus集群各WK備庫(kù)的IP citus_wk1
10、xxx.xxx.xxx.xxx citus_wk2 xxx.xxx.xxx.xxx.Citus元數(shù)據(jù)1 |1 |citus_wk1 |6432 |default |f|t| primary | default2 |2 |citus_wk2 |6432 |default |f|t| primary | defaultCN主備節(jié)點(diǎn)上的元數(shù)據(jù)均為下面的形式,nodename中以主機(jī)名來代替早期架 構(gòu)中使用的vippostgres=# select * from pg_dist_node;nodeid | groupid |nodename| nodeport | noderack | hasmeta
11、data | isactive | noderole | nodecluster-+-+-+-+-+-+-+-+-1 |1 | |6432 |default |f|t| primary | default2 |2 | |6432 |default |f|t| primary | default主備庫(kù)分別識(shí)別各自映射的WK ippostgres=# select * from pg_dist_node;nodeid | groupid |nodename| nodeport | noderack | hasmetadata | isactive | noderole | nodecluster-
12、+-+-+-+-+-+-+-+-新架構(gòu)支持跨機(jī)房部署CN(主)WK1(主)WK1(中繼)WK2(中繼)CN(備)WK1(備)WK2(備)WK1(備)WK2(備)流復(fù)制流復(fù)制WK2 (主)流復(fù)制流復(fù)制流復(fù)制CN(中繼)CN(備)流復(fù)制寫流量讀流量/etc/hostscitus_wk1 citus_wk2 /etc/hostscitus_wk1 citus_wk2 機(jī)房1機(jī)房2目錄lCitus的架構(gòu)演進(jìn)lCitus擴(kuò)容的方案演進(jìn)l痛點(diǎn)分享擴(kuò)容(基于物理復(fù)制)適用架構(gòu) 目前的三種架構(gòu)均可使用這種方案擴(kuò)容適用條件每個(gè)WK上的分片數(shù)必須是2的整數(shù)倍擴(kuò)容后的WK數(shù)量是擴(kuò)容前的2倍擴(kuò)容步驟預(yù)先將刪除冗余分片
13、sql分發(fā)到各WK計(jì)算分片的分布邏輯流復(fù)制全量備份WK1和2的數(shù)據(jù)每個(gè)WK保留一 半的分片WK1(備)WK1(主)shard_1 Shard_3 Shard_5 Shard_7WK2(備)WK2(主)shard_2 Shard_4 Shard_6 Shard_8WK3(備)shard_1 Shard_3 Shard_5 Shard_7WK4(備)shard_2 Shard_4 Shard_6 Shard_8擴(kuò)容步驟WK1(備)WK1(主)shard_1 Shard_3 Shard_5 Shard_7WK2(備)WK2(主)shard_2 Shard_4 Shard_6 Shard_8WK3(主
14、)shard_1 Shard_3 Shard_5 Shard_7WK4(主)shard_2 Shard_4 Shard_6 Shard_8停止業(yè)務(wù)訪問數(shù)據(jù)庫(kù)停止所有CN和Worker備庫(kù) 提升新Worker為“主”恢復(fù)業(yè)務(wù)讀寫DROP新老Worker上的冗余分片修改元數(shù)據(jù)添加新Worker到Citus集群- 更新分片表已遷移到新worker的shard位置 update pg_dist_shard_placement - 插入?yún)⒖急碓谛聎orker上的shard位置 insert into pg_dist_shard_placement select master_add_node($work
15、er_ip,$port); select master_add_node($worker_ip,$port);回退步驟提升擴(kuò)容前的所有備庫(kù)為主庫(kù)起動(dòng)擴(kuò)容前的所有備庫(kù)停止擴(kuò)容前的所有主庫(kù)恢復(fù)業(yè)務(wù)訪問恢復(fù)備庫(kù)WK1(舊主)WK2(舊主)WK2(新主)shard_2 Shard_4 Shard_6 Shard_8WK3(主)shard_1 Shard_3 Shard_5 Shard_7WK4(主)shard_2 Shard_4 Shard_6 Shard_8重建備庫(kù)重建備庫(kù)WK1(新主)shard_1 Shard_3 Shard_5 Shard_7優(yōu)勢(shì)與不足優(yōu)適 用 目 前 所 有 的 架 構(gòu) 物
16、理 復(fù) 制 可 以 保 證 數(shù) 據(jù) 準(zhǔn) 確 性 回退速度快, 且可保證能恢復(fù)到擴(kuò)容前的狀態(tài)劣對(duì)機(jī)器資源需求很大( 必須成倍擴(kuò)容)擴(kuò)容步驟繁瑣, 手動(dòng)操作出錯(cuò)的概率高業(yè)務(wù)需要短時(shí)間停機(jī), 且只能擴(kuò)容不能縮容需要業(yè)務(wù)停讀寫, 不夠平滑解決方案基于邏輯復(fù)制的分片遷移策略 用PG的邏輯復(fù)制同步數(shù)據(jù),省去物理復(fù)制帶來的配置變更等操 作 遷移粒度從整庫(kù)遷移縮小到表級(jí)別,對(duì)業(yè)務(wù)影響更小,風(fēng)險(xiǎn)更 可控 業(yè)務(wù)可連續(xù)運(yùn)行,僅在變更元數(shù)據(jù)的瞬間有鎖表(訪問排他鎖) 自定義元數(shù)據(jù)記錄遷移狀態(tài),便于平臺(tái)管理遷移任務(wù)新的方案能做什么 任意數(shù)量的WK節(jié)點(diǎn)擴(kuò)容 集群縮容 WK節(jié)點(diǎn)的遷移(遇到虛機(jī)故障,磁盤資源不足等等情況)
17、集群內(nèi)分片的再平衡一次遷移任務(wù)的流程開啟任務(wù)創(chuàng)建一個(gè)分片遷移任務(wù)將新WK節(jié)點(diǎn)加入到集群中任務(wù)管理結(jié)束任務(wù)select master_add_node($worker_ip,$port); select master_add_node($worker_ip,$port);sn_create_rebalance_job()sn_start_shard_migration_task(jobid,taskid)sn_complete_shard_migration_task(jobid,taski d)sn_task_cleanup(jobid,taskid)sn_monitor_shard_migr
18、ation_task(jobid,taskid) sn_cancel_shard_migration_task(jobid,taskid)監(jiān)控遷移進(jìn)度取消遷移任務(wù)任務(wù)出錯(cuò)后的重試環(huán)境清理變更c(diǎn)itus元數(shù)據(jù)清理舊分片副本變更遷移任務(wù)的元數(shù)據(jù)WK數(shù)據(jù)遷移場(chǎng)景再平衡場(chǎng)景縮容場(chǎng)景創(chuàng)建遷移任務(wù)邏輯(再平衡場(chǎng)景下)每個(gè)WK上的分片按親和關(guān)系分組,互相親和的分片捆綁一起遷移計(jì)算每個(gè)WK上分片數(shù)的均衡值,算法:分片數(shù)/WK數(shù) = WK上分片數(shù) = (分片數(shù)+WK數(shù)-1)/WK數(shù)WK上分片數(shù)大于均衡值的就是遷移源WK,小于均衡值的則為遷移的 目標(biāo)WK生成的遷移任務(wù)寫入任務(wù)元數(shù)據(jù)表(pg_citus_shard
19、_migration)中, 用于管理限制 PG邏輯復(fù)制本身的限制(replica id,HA切換后的管理,復(fù)制 延遲,PG10不支持truncate) 分片表名長(zhǎng)度的限制(PG限制63字節(jié),分片之后有shardid后 綴,表名長(zhǎng)度被進(jìn)一步壓縮) 同源/同目的的遷移任務(wù)不可并行(實(shí)現(xiàn)工具的限制,未來可解) 有遷移任務(wù)的情況下,不可再創(chuàng)建分片表,不可執(zhí)行變更現(xiàn)有 分片表的DDL(用事件觸發(fā)器實(shí)現(xiàn))目錄lCitus的架構(gòu)演進(jìn)lCitus擴(kuò)容的方案演進(jìn)l痛點(diǎn)分享Pgbouncer后端連接不足原因:業(yè)務(wù)有不帶分片字段的查詢或者更新( 抽數(shù), 導(dǎo)數(shù)這類業(yè)務(wù)) , c i t u s 默認(rèn)的執(zhí)行 器( re
20、 a l - t i m e ) 會(huì)對(duì)每個(gè)分片建一個(gè)連接。通常這類S Q L 執(zhí)行時(shí)間也較長(zhǎng), 當(dāng)有 多個(gè)并發(fā)的時(shí)候, 就出現(xiàn)p g b o u n c e r 后端連接不足的情況。解決:1 .改大p g b o u n c e r 后端連接數(shù)的配置 2 .盡可能讓S Q L 帶上分片字段. 用讀寫分離的新架構(gòu). 新版c i t u s 支持a d a p te r e xe c u to r 有所改進(jìn)查詢的中間結(jié)果集過大問題:ERROR: the intermediate result size exceedscitus.max_intermediate_result_size (currently 1048576 kB)影響:業(yè)務(wù)每2個(gè)小時(shí)下載一次數(shù)據(jù)集,因?yàn)榕R近雙11,數(shù)據(jù)量增大,出 現(xiàn)上面的問題,導(dǎo)致每次下載任務(wù)都失敗查詢的中間結(jié)果集過大優(yōu)化1:簡(jiǎn)單粗暴,把citus.max_inter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童康復(fù)治療知識(shí)試題及答案
- 自考《00233 稅法》考前強(qiáng)化練習(xí)試題庫(kù)(含答案)
- 2025年河北藝術(shù)職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年江漢藝術(shù)職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年杭州萬向職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 專題06 人的由來(第1期)
- 私人銀行金融服務(wù)合同
- 投資咨詢服務(wù)合同模板
- 第二節(jié)國(guó)際貨物運(yùn)輸合同
- 贖樓借款標(biāo)準(zhǔn)合同
- 2025江蘇太倉(cāng)水務(wù)集團(tuán)招聘18人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年人教新版高二(上)英語(yǔ)寒假作業(yè)(五)
- 借款人解除合同通知書(2024年版)
- 江蘇省泰州市靖江市2024屆九年級(jí)下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 沐足店長(zhǎng)合同范例
- 《旅游資料翻譯》課件
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2024年湖南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2025屆天津市部分學(xué)校高三年級(jí)八校聯(lián)考英語(yǔ)試題含解析
- 微項(xiàng)目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(cè)(魯科版)
- 廣東省廣州市黃埔區(qū)2024-2025學(xué)年八年級(jí)物理上學(xué)期教學(xué)質(zhì)量監(jiān)測(cè)試題
評(píng)論
0/150
提交評(píng)論