你還在生產環境改程式碼麼?函式計算版本管理(三)使用別名進行灰度釋出
通過了解阿里雲函式計算新功能版本管理在事件驅動模式中的使用,我們看到了別名是如何簡化新版本上線的過程的。然而現實是殘酷的,直接更改別名指向的版本來升級服務時,往往會出現新版本引入帶來的不穩定,有沒有更好的方法呢?別名的灰度釋出功能該登場了。函式計算提供的別名,可以指向一個主版本和一個灰度版本,並指定灰度版本的權重。這樣就可以靈活調整兩個版本間的流量分佈,很大限度地減少上線新版本引起的不穩定。
如上圖所示,假設我們已經有別名Prod指向穩定的版本1,此時版本2也已經發布好準備上線。我們可以採用灰度釋出的方式,更改Prod別名將灰度版本設定為2,灰度百分比設定為5%。更新後Prod指向的主版本仍然為版本1,函式計算會轉移5%的流量到版本2,剩餘95%的流量仍然由版本1來服務。當確定版本2穩定執行後,再更新別名Prod的主版本為版本2,從而完全切換到新版本。
當別名的灰度釋出功能被使用時,您可以通過以下三種方式來確定被呼叫的服務版本:
- 如果您為自己的服務配置了日誌服務,每次函式呼叫,都可以檢視到相關日誌。日誌中的“isDarkLaunch”欄位表示此次呼叫命中的是灰度釋出的版本,“externalServiceVersion”欄位表示此次呼叫使用的具體服務版本。
-
每次函式呼叫,Context物件的Service資訊中會包括版本資訊,其中 “qualifier”欄位表示呼叫函式時傳入的版本資訊,“versionId”表示根據qualifier解析出的具體版本號。
- 每次同步函式呼叫,響應中都包含 “x-fc-invocation-service-version” header以指示呼叫的服務版本。
通過別名的灰度釋出功能,流量可以在不同的版本間輕鬆切換,讓新版本的上線更安全!總結一下:
- 使用別名Prod指向穩定的版本1,線上的呼叫都通過別名來進行。
- 當新版本2準備上線時,將Prod的灰度版本設為版本2,權重從5%開始。
- 觀察版本2線上上表現穩定後,更新別名Prod指向版本2。
版本管理功能文件:
相關文章
- 如何在生產環境執行容器
- 在生產環境使用Docker部署應用Docker
- Kubernetes使用者指南(三)–在生產環境中使用Pod來工作、管理部署
- Mysql遷移工具在生產環境下的使用MySql
- ApacheStorm官方文件——在生產環境中執行拓撲ApacheORM
- nginx 根據IP 進行灰度釋出Nginx
- Java列舉類在生產環境中的使用方式Java
- 手把手教你搭建一個灰度釋出環境
- JDK 9 釋出僅數月,為何在生產環境中卻頻遭嫌棄?JDK
- ForkJoinPool在生產環境中使用遇到的一個問題
- 使用 Webpack 進行生產環境配置(附 Demo)Web
- Vue 3.0 Beta 版本釋出,你還學的動麼?Vue
- 【機器學習】在生產環境使用Kafka構建和部署大規模機器學習機器學習Kafka
- Nacos 釋出 1.0.0 GA 版本,可大規模投入到生產環境
- 開源叢集計算環境:Spark 1.1.0釋出Spark
- 使用Faric+Git進行分散式程式碼管理Git分散式
- [譯] 四個理由讓你使用灰度色調進行設計
- excel怎麼自己輸入公式計算 excel怎麼編輯函式進行計算Excel公式函式
- MongoDB 2.6釋出,迄今改進最大的版本MongoDB
- MongoDB 2.6釋出 迄今改進最大的版本MongoDB
- 在生產環境中使用預寫日誌WAL的SQLite - victoriaSQLite
- 中綴表示式的計算,C++版本,Linux環境C++Linux
- 雲端設計平臺Coohom在生產環境中使用istio的經驗與實踐
- MongoDB系列三:Replica Sets在生產環境中安裝配置的注意事項MongoDB
- 釋出ASP.NET Core程式到Linux生產環境ASP.NETLinux
- TDengine 2.6 正式釋出,新增大量計算函式函式
- 怎麼Jenkins配置分散式環境的安全釋出?Jenkins分散式
- useCookie函式:管理SSR環境下的CookieCookie函式
- 改進你的c#程式碼的5個技巧(三)C#
- 給在生產環境下給php安裝apc加速擴充套件指令碼PHP套件指令碼
- javascript函數語言程式設計: 優雅的使用underscore進行函式程式設計JavaScript函數程式設計函式
- 如何建立 Angular library 並在生產環境中消費Angular
- 單例模式在生產環境jedis叢集中的應用單例模式
- Spring Boot整合Spring Cloud Release進行版本釋出管理Spring BootCloud
- 函式計算工具鏈新成員——FunLocal釋出啦函式
- 怎麼用Jenkins配置分散式環境的安全釋出?Jenkins分散式
- 如何改進你的指令碼程式指令碼
- 專案開發中,如何使用eolinker進行環境管理:開發、測試和生產環境