Taurus.MVC V3.0.3 微服務開源框架釋出:讓.NET 架構在大並行的演進過程更簡單。

2022-08-02 12:00:15

前方:

開源地址:https://github.com/cyq1162/Taurus.MVC

上篇文章介紹過:工業製造行業的低程式碼開發平臺思維架構圖

規劃中涉及到了微服務,近些天經過努力和不斷的程式碼與反覆壓力測試,終於出來一個簡單的穩定版本了。

Taurus.MVC 微服務架構說明:

1、框架自帶整合了以下功能:

1、伺服器端:閘道器、註冊中心

2、使用者端:微服務應用程式。

因此,即可以做為伺服器端執行,也可以做為使用者端執行,下面進行簡單演示:

新建空專案,引入Taurus.MVC微服務架構

1、新建一個任意空Web專案,以NET6為範例,在Nuget上參照Taurus.MVC,這裡引入每2個的NETCore版本。

 

2、Program.cs 手動新增啟動程式碼:

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls(CYQ.Data.AppConfig.GetApp("Host"));//啟動埠外接到組態檔。
builder.Services.AddHttpContext();//必要1
builder.Services.Configure<KestrelServerOptions>(x => x.AllowSynchronousIO = true).Configure<IISServerOptions>(x => x.AllowSynchronousIO = true);//必要2:開啟同步IO讀取,對POST請求有用到。
var app = builder.Build(); app.UseHttpContext();//必要3 app.UseTaurusMvc(app.Environment);//必要4 app.Run();

補充說明:如果是.net framework 版本,參照時預設會在web.config自動生成以下啟動設定:

<configuration>
  <system.web>
    <httpModules>
      <!--Taurus IIS應用程式池:經典模式(下執行,開啟此設定)-->
    <add name="Taurus.Core" type="Taurus.Core.UrlRewrite,Taurus.Core" />
    </httpModules>
  </system.web>
  <system.webServer>
    <modules>
      <!--Taurus IIS應用程式池:整合模式(下執行,開啟此設定)-->
      <add name="Taurus.Core" type="Taurus.Core.UrlRewrite,Taurus.Core" />
    </modules>
  </system.webServer>
</configuration>

 

1、註冊中心:設定成為註冊中心

appsettings.json 設定項:

{
  "AppSettings": {
    "MicroService.Server.Name": "RegCenter",//設定為伺服器端執行的:註冊中心

"MicroService.App.RunUrl": "http://localhost:9000",//設定啟動的執行地址,可觸發預設微服務啟動。

"Host": "http://*:9000" } }

釋出執行,即成為註冊中心(也具備閘道器功能)

看到第一二行有輸出資訊即為成功。

註冊中心故障轉移:

複製一份註冊中心的程式,修改埠,再補上指向主地址的設定即可:

"MicroService.Server.RegUrl": "http://localhost:9000",//註冊中心地址

2、閘道器:設定成為閘道器

這裡將釋出後的專案,複製一份,改一下組態檔:

{
  "AppSettings": {
    "MicroService.Server.Name": "Gateway",//服務名稱
    "MicroService.Server.RegUrl": "http://localhost:9000",//註冊中心地址

    "MicroService.App.RunUrl": "http://localhost:9001",
    "Host": "http://*:9001"
  }
}

執行,即成為閘道器中心

看到第一二行輸出,即為成功,並間隔性從註冊中心讀取服務列表。 

3、微服務應用

複製一份專案做為微服務應用,直接使用Taurus.MVC的WebAPI功能新增一個Hello的控制器。

進行使用者端應用設定:

{
  "AppSettings": {

    //控制器所在的程式集名稱
    "Taurus.Controllers": "WebAPI",

    "MicroService.Client.Name": "Hello",//設定要註冊的模組名稱,可以多個逗號分隔,可以註冊域名(實現域名系結)
    "MicroService.Client.RegUrl": "http://localhost:9000",//註冊中心地地址

    "MicroService.App.RunUrl": "http://localhost:9002",
    "Host": "http://*:9002"
  }
}

然後釋出,執行即可:

 

 看第一二行,執行成功後,使用者端會定時保持註冊同步。

微服務負載均衡:

僅需要將使用者端,複製多份,修改啟動埠,直接執行,閘道器會自動採用輪循的方式負載均衡。

整體執行效果:

1、直接存取應用程式:

2、通過閘道器存取:

 3、存取註冊中心(註冊中心也可以當閘道器用)

總結:

本篇介紹微服務架構的最基本使用,在任意開發框架上,參照Taurus.MVC的Nuget包,加上最簡的幾行設定,即可成為微服務的任意一端。

V3.0.3 已實現的功能:

------------------V3.0.3【新增內建微服務(閘道器和註冊中心)功能】----------------
1、新增:註冊中心服務註冊。(2022-07-23)
2、新增:閘道器代理轉發。(2022-07-23)
3、新增:閘道器安全效驗([MicroService]屬性標記時介面僅允許微服務間呼叫)。(2022-07-24)
4、新增:閘道器叢集。(2022-07-25)
5、新增:註冊中心故障轉移。(2022-07-25)
6、新增:服務間呼叫方法提供。(2022-07-26)
7、優化:路由定址與代理轉發的相容。(2022-07-27)
8、優化:統一紀錄檔監控方案,方便問題定位。(2022-07-28)
9、新增:檔案代理轉發,支援作為網站閘道器。(2022-07-29)
10、優化:Taurus.Core.Controller 去掉方法與屬性:方法【CheckFormat】、屬性【Sort、Order】。(2022-07-29)
11、新增:Kestrel下閘道器和服務啟動後觸發請求(設定項:MicroService.App.RunUrl)。(2022-07-29)
12、新增:Kestrel 實現多域名系結轉發。(2022-07-29)
13、優化:大量微服務的註冊效能優化和並行測試。(2022-07-30)
14、優化:伺服器端和使用者端各自獨立。(2022-07-31)
15、新增:相容微軟mvc框架參照即可成為微伺服器端。(2022-08-01)
16、新增:完成Web的Cookie轉發。(2022-08-01)
17、新增:控制檯紀錄檔輸出,方便偵錯。(2022-08-01)

微服務的其它內容細節,會在後續的教學文章中講述到。

後續,針對Taurus.MVC ,會重新補充三個系列教學:

1、Taurus.MVC WebAPI 入門開發教學 系列。
2、Taurus.MVC 微服務架構 入門開發教學 系列。
3、Taurus.MVC Web應用程式 入門開發教學 系列。