zoukankan      html  css  js  c++  java
  • asp.net core 搭建WebAPI微服务-----cosnul服务

    参考网址: https://blog.csdn.net/weixin_42084199/article/details/108643555

    在此之前需要准备的是:

    vs2019,以往版本不支持dotnet core3.x版本;

    安装.net core 开发环境,可以百度;

    微服务整体框架:

    1、consul(github):是一个服务管理,更多信息可以百度;

    2、服务网关:用于访问所有微服务用的;

    3:服务:可以将业务模块拆分成多个服务,如关于用户的业务放在一个服务里,订单业务放在一个服务里;

    客户端访问微服务大体流程:

    客户端→网关→服务→数据库

    开始搭建

    下载consul,可以去github下载或官网去下载;得到consul.exe执行文件,然后在执行文件的目录下打开命令行执行一下命令:consul.exe agent -dev,开启完之后输入http://localhost:8500/进入网页表明开启成功

     

    创建asp.net core web应用程序选额api模板

     

     

    再Controllers文件夹里添加名叫HeartController的api控制器,并将Route特性参数改为如下

     

    再HeartController里添加一个方法也只能一个否则会报错因为添加ApiController特性,名字随便,返回OK();主要是用来做心跳包的;

     

    在appsettings.json里添加如下:

     

    再创建一个名叫Util 的.net core dll 类库

     

    Nuget包管理添加如下包

     

    添加一个名叫consulManager的静态类,里面写配置微服务的代码,如下:

    using Consul;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.Extensions.Configuration;
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Util
    {
    public static class ConsulManager
    {
    public static void UssConsul(this IApplicationBuilder app, IConfiguration configuration, IConsulClient consulClient)
    {
    RegServer(configuration, consulClient);
    }

    /// <summary>
    /// 注册微服务
    /// </summary>
    /// <param name="configuration"></param>
    /// <param name="consul"></param>
    private static void RegServer(IConfiguration configuration, IConsulClient consul)
    {
    string consulGroup = configuration["ConsulGroup"];//获取appsettings.json文件里的ConsulGroup节点数据;
    string urlPath = configuration["UrlPath"];//获取appsettings.json文件里的UrlPath节点数据;
    string ip = string.IsNullOrWhiteSpace(configuration["ip"]) ? "127.0.0.1" : configuration["ip"];//ip值是在启动服务时传入的参数
    int port = Convert.ToInt32(configuration["port"]) == 0 ? 80 : Convert.ToInt32(configuration["port"]);//port值是在启动服务时传入的参数
    string serviceId = $"{consulGroup}_{ip}_{port}_{urlPath}";

    //设置心跳包
    var check = new AgentServiceCheck()
    {
    Interval = TimeSpan.FromSeconds(6),
    HTTP = $"http://{ip}:{port}/{urlPath}/heart",
    Timeout = TimeSpan.FromSeconds(2),
    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(2)
    };
    //配置微服务信息
    var regist = new AgentServiceRegistration
    {
    Check = check,
    Address = ip,
    Port = port,
    Name = consulGroup,
    ID = serviceId,
    };
    consul.Agent.ServiceRegister(regist);//注册微服务!
    }
    }
    }
    回到webapi项目,添加Util类库,在Startup.cs 里的ConfigureServices方法里注入单例如下:

     

    Configure方法里添加一下参数

    之后再添加一下代码:

     

    之后再进入项目bin→debug→netcoreapp3.1目录下

     

    打开命令行执行:dotnet userservice.dll --urls="http://*:1010" --ip="127.0.0.1" --port=1010

    (ip和port自定义)

     

    再打开consul服务发现的网页 http://localhost:8500 出现如下:

     

    表示服务已经成功被发现了,也可以换个端口号继续打开同一个服务,达到负载均衡,会在后面网关访问进行轮询访问;
    ————————————————
    版权声明:本文为CSDN博主「可爱的肥皂」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42084199/article/details/108643555

  • 相关阅读:
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale
    CodeForces 785B Anton and Classes
    CodeForces 785A Anton and Polyhedrons
    爱奇艺全国高校算法大赛初赛C
    爱奇艺全国高校算法大赛初赛B
    爱奇艺全国高校算法大赛初赛A
    EOJ 3265 七巧板
    EOJ 3256 拼音魔法
    EOJ 3262 黑心啤酒厂
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15187559.html
Copyright © 2011-2022 走看看