基于netcore的微服务——consul(1)

在这里插入图片描述

在这里插入图片描述

consul作用:
1.当请求从浏览器,请求web服务,会经过网关Ocelot,
2.然后访问,WebServer,然后WebServer需要访问restserver
3.通过consul找到可用的restconsul服务,
4.然后WebServer调用可用的restserver

一、创建实例项目

在这里插入图片描述
创建一个webapi项目 MsgService

二、部署consul

1.下载window版64位
2.安装
3.测试启动,执行命令

//在生产环境下使用
consul agent -dev 

在这里插入图片描述
4.进入consul界面
http://localhost:8500
在这里插入图片描述

三、配置项目

1.MsgService配置

1.在API项目中创建health控制器
在这里插入图片描述
2.配置program.cs

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    //获取配置信息,通过命令行界面,在运行时动态的设置地址和路由
                    var config = new ConfigurationBuilder().AddCommandLine(args).Build();
                    //获得ip
                    String ip = config["ip"];
                    //获得端口号
                    String port = config["port"];
                    //通过获得的地址和端口号设置程序
                    webBuilder.UseStartup<Startup>().UseUrls($"http://{ip}:{port}");
                });

3.配置startup类中的configure

  //IHostApplicationLifetime appLifetime 通过这个参数注入对象
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IHostApplicationLifetime appLifetime)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            #region
            //读取配置信息
            string ip = Configuration["ip"];
            string port = Configuration["port"];
            //服务名
            string serviceName = "MsgService";
            //服务id
            string serviceId = serviceName + Guid.NewGuid();

            
            using (var consulClient = new ConsulClient(c => 
            {
                //consul的地址
                c.Address = new Uri("http://127.0.0.1:8500");
                c.Datacenter = "dc1"; 
            }))
            {
                //注册服务到consul
                consulClient.Agent.ServiceRegister(
                    new AgentServiceRegistration
                {
                    Address = ip, //服务提供者的能被消费者访问的ip地址(可以被其他应用访问的地址,本地测试可用127.0.0.1,机房环境写自己内外ip)
                    Port = Convert.ToInt32(port),//服务提供者的能被消费者访问的端口
                        ID = serviceId,
                    Name = serviceName,
                    //健康检查
                    Check = new AgentServiceCheck()
                    {
                        DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务停止多久注销
                        HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址
                        Interval = TimeSpan.FromSeconds(10),//健康检查间隔时间
                        Timeout = TimeSpan.FromSeconds(5)
                    }
                }).Wait();//consul几乎都是异步方法,但是命名没有按照Async后缀的规范,所以需要调用Wait()或者await
            };

            //程序正常退出时候从Consul注销服务
            //要通过方法参数注入IApplicationLifetime
            appLifetime.ApplicationStopped.Register(() =>
            {
                using (var consulClient = new ConsulClient(c => { c.Address = new Uri("http://127.0.0.1:8500"); c.Datacenter = "dc1"; }))
                {
                    Console.WriteLine("应用退出");
                    consulClient.Agent.ServiceDeregister(serviceId).Wait();
                }
            });
            #endregion
            app.UseRouting();
            

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

四、启动项目

首先启动consul

1.生成解决方案
2.进入当前项目的bin目录中

..\bin\Debug\netcoreapp3.1

3.在地址栏输入cmd,进入命令行界面
在这里插入图片描述
4.运行程序
开启两个服务

运行项目在本地的6001端口
 dotnet MsgService.dll --ip 127.0.0.1 --port 6001

再次进入目录使用命令

运行项目在本地的6001端口
 dotnet MsgService.dll --ip 127.0.0.1 --port 6002

5.进入localhost:8500的consul界面查看是否注册成功

在这里插入图片描述
运行成功,注册完成

六、consul

1.服务只会注册ip,端口,consul只保存服务吗,ip,端口,至于服务提供什么接口,参数consul不管
2.consul负责的是对服务的注册,对现有服务的管理,告诉调用者服务器现有情况,以及做健康检查,确定服务器处于可用状态,不可用会进行注销。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NetCore微服务是指使用.Net Core框架构建的以微服务架构为基础的应用程序。微服务架构是一种将应用程序拆分为一系列小型、独立部署的服务的设计模式,每个服务都有自己的业务逻辑和数据库。它们通过网络进行通信,以实现整体应用程序的功能。 NetCore是微软开发的跨平台、高性能、开源的开发框架,具备强大的功能和灵活的扩展性。将NetCore框架应用于微服务架构可以提供以下优势: 1. 高性能:NetCore框架采用了先进的异步编程模型和基于内存的缓存技术,能够处理大量并发请求,提高系统的响应速度和吞吐量。 2. 可扩展性:由于每个微服务都是独立部署的,可以根据需求独立扩展和升级。使用NetCore框架的依赖注入功能,可以方便地添加新的服务或替换现有服务,而无需对整个应用程序进行重构。 3. 高可用性:微服务架构的一个重要特点是容错和自愈能力。当某个服务发生故障时,其他服务可以继续运行,从而确保整体系统的稳定性和可用性。 4. 灵活性:NetCore框架支持多种开发语言和工具,使开发人员能够选择适合自己的技术栈,并在不同的微服务中使用不同的编程语言和数据库。 5. 安全性:NetCore框架内置了许多安全功能,如身份验证、授权和数据加密等。这些功能可以帮助开发人员构建安全、可靠的微服务系统。 总之,NetCore微服务通过结合微服务架构和.Net Core框架的优势,可以实现高性能、可扩展、高可用和灵活的应用程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有诗亦有远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值