一密末、什么是藍(lán)綠發(fā)布
藍(lán)綠部署是不停老版本,部署新版本然后進(jìn)行測(cè)試跛璧,確認(rèn)OK严里,將流量切到新版本,然后老版本同時(shí)也升級(jí)到新版本追城。
1刹碾、特點(diǎn)
藍(lán)綠部署無(wú)需停機(jī),并且風(fēng)險(xiǎn)較小座柱。
2迷帜、藍(lán)綠發(fā)布的注意事項(xiàng)
當(dāng)你切換到藍(lán)色環(huán)境時(shí),需要妥當(dāng)處理未完成的業(yè)務(wù)和新的業(yè)務(wù)色洞。如果你的數(shù)據(jù)庫(kù)后端無(wú)法處理戏锹,會(huì)是一個(gè)比較麻煩的問(wèn)題;
可能會(huì)出現(xiàn)需要同時(shí)處理“微服務(wù)架構(gòu)應(yīng)用”和“傳統(tǒng)架構(gòu)應(yīng)用”的情況火诸,如果在藍(lán)綠部署中協(xié)調(diào)不好這兩者锦针,還是有可能會(huì)導(dǎo)致服務(wù)停止。
需要提前考慮數(shù)據(jù)庫(kù)與應(yīng)用部署同步遷移 /回滾的問(wèn)題置蜀。
藍(lán)綠部署需要有基礎(chǔ)設(shè)施支持奈搜。
在非隔離基礎(chǔ)架構(gòu)( VM 、 Docker 等)上執(zhí)行藍(lán)綠部署盯荤,藍(lán)色環(huán)境和綠色環(huán)境有被摧毀的風(fēng)險(xiǎn)媚污。
二、為什么需要藍(lán)綠發(fā)布系統(tǒng)
1廷雅、新項(xiàng)目和新需求非常多
2、新需求的上線過(guò)程是,先上線一臺(tái)服務(wù)器然后觀察會(huì)不會(huì)出問(wèn)題航缀,如果沒(méi)有問(wèn)題則全部上線商架。
3、分流是關(guān)鍵芥玉,但是動(dòng)態(tài)分流是痛點(diǎn)蛇摸。
三、老分流方案
方案存在的問(wèn)題點(diǎn):
1灿巧、nginx.conf配置文件里各種if赶袄、set和rewrite,并且容易配置出錯(cuò)抠藕。
2饿肺、修改完配置文件后,重啟或者reload后才能生效盾似。
3敬辣、不能實(shí)現(xiàn)太復(fù)雜的邏輯。
4零院、不能實(shí)現(xiàn)一些特殊分流方式溉跃。
四、新分流方案
功能說(shuō)明:
- 采用Redis存放分流策略
- 分流策略包括按時(shí)間來(lái)分流告抄,比如每分鐘分流多少筆訂單撰茎,還有按權(quán)重分流,比如新老系統(tǒng)之間的比例是1:9
- 采用OpenResty+lua打洼,整體性能優(yōu)秀龄糊。
單臺(tái)壓測(cè)結(jié)果: