Taurus.MVC 微服務框架 入門開發教程:項目部署:3、微服務應用程式版本升級:全站升級和局部模組升級。

系列目錄:

本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。

本系列第一篇: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,沒有模組存在時,框架會默認追回模組通配符"*",因此所有模組版本號也是:12、V2版本:仍配置域名為1,避免之前的失效,再通過優先順序「|」符號指定:member版本號為2。

因此,僅將請求路徑為member的會員模組,攔截轉發到新版本V2版本,其它模組請求,依舊回到原有版本上。

總結:

對於Taurus.MVC 微服務框架而言,部署和升級都相當簡單:

部署就是把程式往上一扔,然後就啟動N次的問題。

升級也是把程式往上一扔,然後就啟動N次的問題。

特別是局域模組的升級方式,使得全站向模組化部署的過渡,是那麼的絲滑與自然,史無前例,細思極恐啊!