本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。
本系列第一篇:Taurus.MVC V3.0.3 微服務開源框架發布:讓.NET 架構在大並發的演進過程更簡單。
Taurus.MVC 微服務框架 入門開發教程:項目集成:1、服務端:註冊中心、網關。
Taurus.MVC 微服務框架 入門開發教程:項目集成:2、客戶端:ASP.NET(C#)程式語言項目集成:應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:3、客戶端:其它程式語言項目集成:應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:4、默認安全認證與自定義安全認證。
Taurus.MVC 微服務框架 入門開發教程:項目集成:5、統一的日誌管理。
Taurus.MVC 微服務框架 入門開發教程:項目集成:6、微服務的二次開發。
Taurus.MVC 微服務框架 入門開發教程:項目部署:1、微服務應用程式常規部署實現多開,節點擴容。
Taurus.MVC 微服務框架 入門開發教程:項目部署:2、讓Kestrel支援綁定多個域名轉發,替代Ngnix使用。
Taurus.MVC 微服務框架 入門開發教程:項目部署:3、微服務應用程式版本升級:全站升級和局部模組升級。
Taurus.MVC 微服務框架 入門開發教程:項目部署:4、微服務應用程式發布到Docker部署(上)。
Taurus.MVC 微服務框架 入門開發教程:項目部署:5、微服務應用程式發布到Docker部署(下)。
Taurus.MVC 微服務框架 入門開發教程:項目部署:6、微服務應用程式Docker部署實現多開。
Taurus.MVC 微服務框架 入門開發教程:架構演進:1、從單應用程式簡單過渡到負載均衡。
Taurus.MVC 微服務框架 入門開發教程:架構演進:2、負載均到模組拆分負載。
Taurus.MVC 微服務框架 入門開發教程:架構演進:3、模組拆分負載到多級負載均衡。
前言:
本篇教程講述:用Taurus.MVC 微服務架構的方式,如何來進行系統版本的升級。
下面看具體教程:
1、全功能版本升級:
比如,開發了個站點,通過引入Taurus.MVC 微服務後,初步部署成負載均衡模式,並且開了N個Web應用程式節點。
Web應用中心站點:當前V1版本:appsettings.json 微服務配置內容大體如下:
{ "AppSettings": { "MicroService.Client.Name": "www.a.com",//綁定域名 "MicroService.Client.RegUrl": "//localhost:80",//註冊中心地址 "MicroService.Client.Version": 1,//這裡可以指定版本號,沒默認配置號時,默認版本號為0 "MicroService.App.RunUrl": "//localhost:0", } }
Web應用中心站點:如今,要發布V2版本,具體操作如下:
1、修改微服務配置文件,提升版本號。
2、發布新版本到伺服器任意目錄。
3、啟動項目(N次)產生節點。
Web應用中心站點:新版本V2:appsettings.json 微服務配置內容大體如下:
{ "AppSettings": { "MicroService.Client.Name": "www.a.com",//綁定域名 "MicroService.Client.RegUrl": "//localhost:80",//註冊中心地址 "MicroService.Client.Version": 2,//這裡可以指定版本號,沒配置號時,默認版本號為0 "MicroService.App.RunUrl": "//localhost:0", } }
和舊版本相比,僅是修改了版本號。
升級機制與過程說明:
1、如果版本號>原有版本號(無配置即默認0),那麼將啟動滑動升級。 2、滑動升級過程:
A:每啟動一個新版本節點,會註銷一個舊節點;
B:每個節點每次註冊【5-10】秒,也會註銷一個舊節點。 簡而言之:如果原有10個節點,那麼 1、連續開啟10個新版本節點,即可逐個替換掉舊的10個節點。 2、若僅開啟1個節點,每5-10秒註銷一個舊節點,註銷掉10個節點需要50-100秒。
補充說明:
升級後,原有程式僅是不再收到請求,並未退出程式。
如果僅是測試新版本是否可用:
可保持和原有的版本號一致:
1、直接運行即可加入負載均衡中,獲得流量測試。 2、綁定其它域名,引導獨立測試域名的流量進行測試。
2、指定模組版本升級:
還是原來的架構圖,這裡補上了節點的請求網址:
當前,系統僅對會員模組進行修改升級,並需要發布該版本。
傳統方式:
按照全站升級模式,一個模組的修改,需要進行全站測試,誰也不清楚會不會影響到其它模組。
Taurus.MVC 微服務框架,提供了模組版本升級的方式:
如今,要發布僅針對會員模組升級的V2版本,具體操作如下:
1、修改微服務配置文件,僅提升會員模組版本號。
2、發布新版本到伺服器任意目錄。
3、啟動項目(N次)產生節點。
新版本V2:appsettings.json 配置如下:
{
"AppSettings": {
"MicroService.Client.Name": "www.a.com,member|2",//綁定域名,綁定會員模組(指定版本號為2)
"MicroService.Client.RegUrl": "//localhost:80",
"MicroService.Client.Version": 1,
"MicroService.App.RunUrl": "//localhost:0",
}
}
流程和全量升級幾乎一樣,唯一不同的是配置,指定了模組攔截。
然後啟動程式(節點)N次即可。
特別說明:
1、V1版本:僅配置了域名,版本號是1,沒有模組存在時,框架會默認追回模組通配符"*",因此所有模組版本號也是:1。 2、V2版本:仍配置域名為1,避免之前的失效,再通過優先順序「|」符號指定:member版本號為2。 因此,僅將請求路徑為member的會員模組,攔截轉發到新版本V2版本,其它模組請求,依舊回到原有版本上。
總結:
對於Taurus.MVC 微服務框架而言,部署和升級都相當簡單:
部署就是把程式往上一扔,然後就啟動N次的問題。
升級也是把程式往上一扔,然後就啟動N次的問題。
特別是局域模組的升級方式,使得全站向模組化部署的過渡,是那麼的絲滑與自然,史無前例,細思極恐啊!