• net6 对接Nacos


    服务发现和服务健康监测

    Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

    部署Nacos

    1、搭建Nacos注册中心

    1. 下载Nacos[https://github.com/alibaba/nacos/releases]

    2. 解压后配置持久化

    3. 创建一个数据库nacos_config,并执行红色框内的2个Sql脚本

      1. 修改配置文件application.properties,主要配置连接db

      ```
      ### Count of DB:
      db.num=1

      ### Connect URL of DB:
      db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=PRC
      db.user.0=nacos
      db.password.0=nacos
      ```

      1. 进入nacos/bin目录下,输入cmd,执行startup -m standalone启动

      2. 通过http://localhost:8848/nacos验证,输入账号:nacos和密码:nacos

    NET6接入Nacos

    Nacos添加配置文件

    {
        "nacos": {
        "ServerAddresses": [ "http://localhost:8848" ],
        "DefaultTimeOut": 15000,
        "Namespace": "01786d05-61ed-4d81-9a31-698faf51aa96", // Please set the value of Namespace ID !!!!!!!!
        "ListenInterval": 1000,
        "ServiceName": "UserService",
        "GroupName": "DEFAULT_GROUP",
        "ClusterName": "DEFAULT",
        "RegisterEnabled": true,
        "InstanceEnabled": true,
        "Ephemeral": true,
        "ConfigUseRpc": true,
        "NamingUseRpc": true,
        "LBStrategy": "WeightRoundRobin" //WeightRandom WeightRoundRobin
      }
    }

    添加Nacos依赖

    <PackageReference Include="nacos-sdk-csharp.AspNetCore" Version="1.3.1" />
    <PackageReference Include="nacos-sdk-csharp.Extensions.Configuration" Version="1.3.1" />

    修改appsettings.json文件

    // 注册服务到Nacos
    builder.Services.AddNacosAspNet(builder.Configuration); //默认节点Nacos
    // 添加配置中心
    builder.Host.ConfigureAppConfiguration((context, builder) =>
    {
        var config = builder.Build();
        builder.AddNacosV2Configuration(config.GetSection("NacosConfig"));
    });

    整合到Ocelot

    引入依赖

    <PackageReference Include="nacos-sdk-csharp.AspNetCore" Version="1.3.1" />
    <PackageReference Include="nacos-sdk-csharp.Extensions.Configuration" Version="1.3.1" />
    <PackageReference Include="Ocelot.Provider.Nacos" Version="1.2.2" />

    修改配置文件

    {
      "NacosConfig": {
        "Listeners": [
          {
            "Optional": false,
            "DataId": "GatewayConfig",
            "Group": "DEFAULT_GROUP"
          }
        ],
        "Optional": false,
        "Namespace": "MiscroService",
        "ServerAddresses": [ "http://192.168.3.102:8848/" ]
      }
    }

    修改Program.cs文件

    // 添加Ocelot对应Nacos扩展
    builder.Services.AddOcelot().AddNacosDiscovery();
    
    // 添加配置中心
    builder.Host.ConfigureAppConfiguration((context, builder) =>
    {
        var config = builder.Build();
        builder.AddNacosV2Configuration(config.GetSection("NacosConfig"));
    });

    Nacos添加配置文件

    {
      "Routes": [
        {
          "UpstreamPathTemplate": "/microservice/{url}",
          "UpstreamHttpMethod": [ "Get", "Post" ],
          "DownstreamPathTemplate": "/api/{url}",
          "DownstreamScheme": "http",
          "UseServiceDiscovery": true,
          "ServiceName": "OrderService",
          "LoadBalancerOptions": {
            "Type": "RoundRobin"
          }
        }
      ],
      "GlobalConfiguration": {
        "ServiceDiscoveryProvider": {
          "Type": "Nacos"
        }
      },
      "nacos": {
        "ServerAddresses": [ "http://192.168.3.102:8848" ],
        "DefaultTimeOut": 15000,
        "Namespace": "MiscroService",
        "ListenInterval": 1500,
        "ServiceName": "Gateway",
        "GroupName": "DEFAULT_GROUP",
        "ClusterName": "DEFAULT",
        "RegisterEnabled": true,
        "InstanceEnabled": true,
        "ConfigUseRpc": true,
        "NamingUseRpc": true,
        "Ephemeral": true,
        "LBStrategy": "WeightRoundRobin"
      }
    }

    测试是否读取OrderService实例

     

  • 相关阅读:
    Java解析XML(一)、SAX
    Java注解
    NTKO OFFICE文档控件为何不能自动装载?
    Java解析XML(二)、DOM
    JAVA反射机制
    如何手工卸载和安装NTKO OFFICE文档控件
    使用内省的方式操作JavaBean
    JDK自带的native2ascii转码工具使用详解
    HTTP协议详解
    跳过编译器,获取泛型参数的实际类型
  • 原文地址:https://www.cnblogs.com/jasontarry/p/15931809.html
Copyright © 2020-2023  润新知