系列目录:
本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。
开源地址:https://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 微服务框架 入门开发教程:运行示例:https://github.com/cyq1162/Taurus.MVC.MicroService.Demo
前言:
最近在写相关微服务教程时发现,要构建负载均衡,如果不做点其它处理:
对于同一台主机而言上的ASP.NET Core 应用程序而言,需要通过复制程序,才能运行多份应用运行。
对于ASP.NET Core发布的项目:
1、默认是绑定约定好的端口,因此程序无法多开。 2、将绑定端口设置为0,即随机端口,让程序允许多开。
不过仅是多开,还不够。
因为对于微服务程序,需要在程序启动时,自动将自身的访问地址告诉注册中心。
默认的随机端口,无法知晓自己的运行地址,便无法发送到注册中心去。
因此,需要提前获知运行的地址(给MicroService.App.RunUrl赋值,便于发送到注册中心)。
通过小小思考,可以先获取随机可用端口,再指定该端口,即可解决这个个问题。
下面看具体的实现:
1、修改配置文件,使用随机端口:
这里设置启动端口号,和绑定的端口号都为0,0即随机。
注册中心地址是固定的,因此直接写。
{ "AppSettings": { "MicroService.Client.Name": "*",//注册所有模块 "MicroService.Client.RcUrl": "http://192.168.188.95:9999",//注册中心的地址,这是固定的
"Urls": "http://*:0"//监听端口为随机,代码运行时会替换该值 } }
接下来,需要在启动程序里,把0这个随机端口提前修改为可用端口,并做端口替换。
2、修改启动代码:.NET5、NET6、NET7...系列的:Program.cs
using Microsoft.AspNetCore.Server.Kestrel.Core; using System.Net; using System.Net.Sockets; var builder = WebApplication.CreateBuilder(args); builder.WebHost.UseUrls(MvcConfig.Kestrel.Urls); builder.Services.AddTaurusMvc();//必要1var app = builder.Build(); app.UseTaurusMvc();//必要2 app.Run();
这里,先产生可用的监听端口,再用这个端口号赋值后再监听。
3、修改启动代码:ASP.NET Core 2.N到3.N系列:Program.cs
代码是一样的:
using System; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using CYQ.Data; using System.Net.Sockets; using System.Net; using Taurus.Core; namespace Taurus.View { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseUrls(MvcConfig.Kestrel.Urls) .Build();
}
}
总结:
只需要简单配置,发布后的应用程序,可以在任何主机上实现多开N次,就可以增加N个节点。
随时随地实现节点的动态新增扩容。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号 |
Donation(扫码支持作者):支付宝: |
Donation(扫码支持作者):微信: |