本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。
開源地址://github.com/cyq1162/Taurus.MVC
本系列第一篇:Taurus.MVC V3.0.3 微服務開源框架發布:讓.NET 架構在大並發的演進過程更簡單。
Taurus.MVC 微服務框架 入門開發教程:項目集成:1、服務端:註冊中心、網關(提供可運行程式下載)。
Taurus.MVC 微服務框架 入門開發教程:項目集成:2、客戶端:ASP.NET Core(C#)項目集成:應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:3、客戶端:其它程式語言項目集成:Java集成應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:4、默認安全認證與自定義安全認證。
Taurus.MVC 微服務框架 入門開發教程:項目集成:5、統一的日誌管理。
Taurus.MVC 微服務框架 入門開發教程:項目集成:6、微服務間的調用方式:Rpc.StartTaskAsync。
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 微服務框架 入門開發教程:項目部署:7、微服務節點的監控與告警。
Taurus.MVC 微服務框架 入門開發教程:架構演進:1、從單應用程式簡單過渡到負載均衡。
Taurus.MVC 微服務框架 入門開發教程:架構演進:2、負載均到模組拆分負載。
Taurus.MVC 微服務框架 入門開發教程:架構演進:3、模組拆分負載到多級負載均衡。
Taurus.MVC 微服務框架 入門開發教程:運行示例://github.com/cyq1162/Taurus.MVC.MicroService.Demo
前言:
以過多天的努力,終於一直更新到了V3.1.2版本:V3系列到目前的版本的更新如下:
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) 18、新增:模組配置:「*」,代表:註冊所有模組。(2022-08-03) 19、新增:模組配置:「*.*」代表:註冊所有域名。(2022-08-03) 20、優化:網關或註冊中心使用域名訪問時:先匹配域名註冊,再匹配模組註冊。(2022-08-03) 21、優化:網關並發請求和其它細節優化。(2022-08-10) 22、優化:控制器下找不到的方法路徑,也統一跳轉到全局Default。(2022-08-12) 23、優化:大量並發請求的穩定性。(2022-08-15) 24、新增:模組配置:【模組名|版本號】如:"xxx|1,yyy|2",對於多模組,允許指定各自版本號。(2022-08-16) 25、優化:版本升級:新版運行每次註冊【5-10秒】僅清除1箇舊版本,用於平滑版本過渡版本升級。(2022-08-16) 26、優化:版本升級:僅綁定域名的追加*通配符;優化獲取Host演算法(模組高版本存在時,忽略低版本通配符)。(2022-08-17) 27、優化:微服務對外介面的文檔顯示,以便其它程式語言查看與調試。(2022-08-17) -------------------------V3.1.1.0【升級微服務功能】(2022-09-09 - 2022-09-13)----------------------------- 1、優化:調整Controller的名稱空間:Taurus.Core =>Taurus.Mvc 2、優化:控制器命名調整:允許控制器名稱不以Controller結尾(DefaultController除外)。 3、優化:Extend 更名:Plugin :原有Auth模組,獨立出外部項目,變更為插件方式提供。 4、優化:微服務網關代理調用。 5、優化:微服務間的Key的網路調用請求頭傳參數名變更:microservice => mskey。 6、優化:CheckAck、CheckToken、CheckMicroService、BeginInvode、EndInvode等方法(參數優化)。 7、新增:IgnoreDefaultControllerAttribute 允許控制器忽略全局DefaultController事件。 8、新增:提供微服務間的調用方式:Taurus.MicroService.Rpc。 --------------------------V3.1.1.1:(2022-09-13 - 2022-10-11)--------------------------------------------- 1、優化:新方法的反射獲取提前到控制器初始化階段。 2、優化:反射程式集(配置*號時,跳過錯誤的載入項而不拋異常)。 3、優化:Linux 下Mvc Views 文件路徑大小寫的獲取。 4、優化:MicroService.MSConfig 更名為:MicroService.MsConfig。 ---------------------------V3.1.2.0:(2022-10-12)--------------------------------------------- 1、新增:註冊中心註冊的資訊(包含客戶端和服務端)可寫入指定資料庫(配置MsConn資料庫鏈接,配置MsTableName(可選)。(2022-10-12)
當前最新版本最後一條更新:
通過指定資料庫鏈接,可以將所有的服務資訊,都存檔在指定的資料庫中,然後自行根據該數據,自行生成圖表監控即可。
下面介紹該使用方式(該方式使用和《項目集成:5、統一的日誌管理》一文中的使用方式相似):
1、配置資料庫鏈接:MsConn
appsettings.json:配置如下:
{ "ConnectionStrings": { "MsConn": "server=.;database=MsHost;uid=sa;pwd=123456" }, "AppSettings": { //... } }
web.config:配置如下:
<configuration> <connectionStrings> <add name="MsConn" connectionString="......"/> </connectionStrings> </configuration>
2、配置資料庫鏈接(備,可選):MsConn_Bak
appsettings.json:配置如下:
{ "ConnectionStrings": { "MsConn": "server=.;database=Ms;uid=sa;pwd=123456"
"MsConn_Bak": "server=.;database=Ms_bak;uid=sa;pwd=123456"
},
"AppSettings": { //...... } }
web.config:配置如下:
<configuration> <connectionStrings> <add name="MsConn" connectionString="......"/>
<add name="MsConn_bak" connectionString="......"/>
</connectionStrings>
</configuration>
說明:
如果主資料庫了,默認鏈接會切換到備資料庫鏈接寫,避免監控數據丟失。
3、自定義資料庫表名:(默認:MsRegCenter)
appsettings.json:配置如下:
{ "ConnectionStrings": { "MsConn": "server=.;database=Ms;uid=sa;pwd=123456"
"MsConn_Bak": "server=.;database=Ms_bak;uid=sa;pwd=123456"
},
"AppSettings": {
"MsTableName":"自定義微服務模組資訊表名" } }
web.config:配置如下:
<configuration> <connectionStrings> <add name="MsConn" connectionString="......"/>
<add name="MsConn_bak" connectionString="......"/>
</connectionStrings>
<appSettings>
<add key="MsTableName" value="自定義表名"/>
</appSettings>
</configuration>
說明:
對於資料庫,可以獨立一個資料庫,但對於不同的微服務集群,可以採用不同的表名來區分監控日誌。
4、自定義資料庫日誌表名:按每天或每月生成一張表進行採集(可選)
在【註冊中心】運行程式碼中(Programs.cs)找個寫程式碼的地方:
1、按每天生成1張日誌表:
MsConfig.LogTableName="表名"+DateTime.Now.ToString("yyyyMMdd");
2、按每月生成1張日誌表:
MsConfig.LogTableName="表名"+DateTime.Now.ToString("yyyyMM");
3、按每年生成1張日誌表:
MsConfig.LogTableName="表名"+DateTime.Now.ToString("yyyy");
說明:
一般沒有這個需求,但還是告訴有這麼個可以動態調整表名的方式。
5、自動生成的資料庫表結構:
運行註冊中心後,如果配置了對應的資料庫鏈接,框架會自動創建對應的數據表,同時系統每5秒,會更新一次資料庫表。
表數據說明:
1、服務端:(版本號默認都為0)
註冊中心:RegCenter。
註冊中心(從):RegCenterOfSlave。
網關中心:Gateway。
如果要搜索服務端數據,查詢Version=0即可。
2、客戶端:版本號>=1
微服務中心:各自配置的名稱。 版本號未配置時,默認為1,可配置項>=1。
其它說明:
Host:為各主機的可請求地址。
LastActiveTime:各主機請求註冊中心的最新時間(超過10秒,即為離線)。
總結:
僅需在【註冊中心】應用程式中,配置好資料庫鏈接,即可收穫所有相關的資訊。
以便於對各節點進行監控,進行故障告警。