.net core 微服务demo笔记
采用循序的方式演变的程序架构:
单一进程的单体架构 > 局域网分布式架构 > Nginx分布式集群架构+负载均衡 > Consul高可用性,高伸缩性的集群架构
demo环境:windows10 + VS 2019 + .net core 3.1
继上一篇.net core 局域网分布式架构,本篇Nginx分布式集群架构+负载均衡
一、部署3个之前创建的UserService微服务实例到本地环境,采用Nginx反向代理
- 拷贝UserService目录下的文件到3个新建的文件夹分别叫userinstance1,userinstance2,userinstance3
分别修改这3个文件夹下面的appsetting.json里面的地址和端口号,http://localhost:6201;http://localhost:6202;http://localhost:6203
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"AppUrls": "http://localhost:6201", // 服务地址 http://localhost:6202, http://localhost:6203
"Ip": "127.0.0.1", // ip地址
"Port": "6201" // 端口号
}
- 使用命令行将这3个服务运行起来
dotnet MicroService.UserService.dll
image.png
二、Nginx集群+反向代理+负载均衡
-
下载Nginx并解压到本地,和userinstance1同一级目录
image.png -
修改配置文件,\conf\nginx.conf
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream ServiceInstance { // 声明
server localhost:6301;
server localhost:6302;
server localhost:6303;
}
server {
listen 6200; //监听6200
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://ServiceInstance; //使用
}
- 开始运行nginx: cmd: start nginx
现在就开启了nginx代理服务了;
三、在MallApp中使用该服务
public IActionResult Index()
{
//3. Nginx分布式集群架构+负载均衡-部署多个user微服务实例到本地环境,采用Nginx反向代理,
// 高可用;对客户端友好,一个实例崩溃其他实例可用自动避开崩溃实例
// 具有伸缩性;同个代码可以部署多个实例,但无法自动伸缩,需人工干预
var re = HttpHelper.Client_Get(null, "http://localhost:6200/api/users", "");
var model = new HomeViewModel()
{
Name = "MallApp",
NowDate = $"{DateTime.Now.ToLongDateString()} {DateTime.Now.ToLongTimeString()}",
IP = $"{ Request.Scheme}://{Request.Host}{Request.Path}",
Info = re
};
return View(model);
}
启动MallApp程序,能正常调用http://localhost:6200/api/users;
至此,一个最简单的Nginx分布式集群架构+负载均衡demo完成。
使用Nginx的方式有缺陷,就是无法自动发现新的服务实例,比如我想新部署一个UserService的实例,则必须要修改配置文件并重启nginx才可用;
因此,我们下一篇讲解如何使用Consul实现服务实例的发现注册于健康检查。
网友评论