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

  • 相关阅读:
    matlablib安装Helvetica字体
    word插入矢量图的方法
    字体对应关系
    MySQL8.0.15基于mycat读写分离(windows环境)
    2.MySQL8.0.15主从同步(windows环境)
    1.MySQL8.0.15安装步骤(windows环境)
    mysql自带的压力测试工具
    FreeFileSync + Windows任务计划程序 实现自动备份功能
    FreeFileSync 设置服务器文件自动备份,同时可做本地代码程序同步软件
    dokcer镜像添加ssh服务
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15187559.html
Copyright © 2011-2022 走看看