首页 > 其他分享 >3.在NET.API中去使用Nacos

3.在NET.API中去使用Nacos

时间:2024-02-14 09:55:26浏览次数:32  
标签:false 配置 Nacos nacos public API NET true 去掉

nuget 安装:
1. nacos-sdk-csharp 1.3.4
2. nacos-sdk-csharp.AspNetCore 1.3.4
3. nacos-sdk-csharp.Extensions.Configuration 1.3.4

1.新建项目NacosService1,NacosService2,和NacosClient

配置NacosService1的appsettings.json,NacosService2也要配哈

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "nacos": {
    "ServerAddresses": [
      "http://127.0.0.1:8848"
    ],
    "DefaultTimeOut": 15000,//请求超时时间
    "Namespace": "6c0da0b7-eb66-4c15-b73e-15b983d07548",/命名空间id
    "ListenInterval": 1000,//监听间隔时间
    "ServiceName": "ServiceDiscovery.NacosService",//服务名称
    "GroupName": "DEFAULT_GROUP",// 默认分组名称
    "ClusterName": "DEFAULT",
    // 如果去掉这个配置项,系统会自动获取服务IP(建议去掉这个配置)
//     "Ip": "localhost",//注册中心,服务调用的IP地址
//     "PreferredNetworks": "localhost", //首选网络
//    // 如果去掉这个配置项,系统会自动获取服务运行的端口号(建议去掉这个配置)
//     "Port": 5199, // // 写0 表示80端口()
    "Weight": 100,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "Ephemeral": true,
    "Secure": false,//表示当前服务是否时安全实例,用于标识访问的时候是否要启用 https
    "AccessKey": "",
    "SecretKey": "",
    "UserName": "",
    "Password": "",
    "ConfigUseRpc": false,
    "NamingUseRpc": false,
    "NamingLoadCacheAtStart": "",
    "LBStrategy": "WeightRandom",// 负载均衡策略:WeightRandom(随机), WeightRoundRobin(轮询)
    "Metadata": {
      "aa": "bb",
      "cc": "dd"
    }
  }
}

Program.cs配置

builder.Services.AddNacosAspNet(builder.Configuration,"nacos");

 

然后NacosService1,NacosService2创建控制器Controller,GetUsers方法里面的返回数据写不一样,等下方便检测。

[ApiController]
[Route("[controller]/[action]")]
public class UserController:ControllerBase
{
    [HttpGet]
    public List<UserInfo> GetUsers()
    {
        List<UserInfo> result = new()
        {
            new(){Id = 1,NickName = "张三"},
            new(){Id = 2,NickName = "李四"}
        };
        return result;
    }
}

注意哈,launchSettings.json内applicationUrl要改一下,不要写localhost

"http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "http://192.168.10.13:5199",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }

 

 

配置NacosClient的appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "nacos": {
    "ServerAddresses": [
      "http://127.0.0.1:8848"
    ],
    "DefaultTimeOut": 15000,//请求超时时间
    "Namespace": "6c0da0b7-eb66-4c15-b73e-15b983d07548",//命名空间id
    "ListenInterval": 1000,//监听间隔时间
    "ServiceName": "NacosClient",//服务名称
    "GroupName": "DEFAULT_GROUP", // 默认分组名称
    "ClusterName": "DEFAULT",
    // 如果去掉这个配置项,系统会自动获取服务IP(建议去掉这个配置)
//     "Ip": "localhost",//注册中心,服务调用的IP地址
//     "PreferredNetworks": "localhost", //首选网络
//    // 如果去掉这个配置项,系统会自动获取服务运行的端口号(建议去掉这个配置)
//     "Port": 5132, // // 写0 表示80端口()
    "Weight": 100,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "Ephemeral": true,
    "Secure": false,//表示当前服务是否时安全实例,用于标识访问的时候是否要启用 https
    "AccessKey": "",
    "SecretKey": "",
    "UserName": "",
    "Password": "",
    "ConfigUseRpc": false,
    "NamingUseRpc": false,
    "NamingLoadCacheAtStart": "",
    "LBStrategy": "WeightRandom",// 负载均衡策略:WeightRandom(随机), WeightRoundRobin(轮询)
    "Metadata": {
      "aa": "bb",
      "cc": "dd"
    }
  }
}

Program.cs配置

builder.Services.AddNacosAspNet(builder.Configuration,"nacos");

NacosClient的控制器内容

[ApiController]
[Route("[controller]/[action]")]
public class UserClientController:ControllerBase
{
    private readonly INacosNamingService _nacosNamingService;

    public UserClientController(INacosNamingService nacosNamingService)
    {
        _nacosNamingService = nacosNamingService;
    }

    [HttpGet]
    public async Task<IActionResult> InvokeUserList()
    {
        // 获取服务的实例(自带负载均衡)
        var instance = await _nacosNamingService.SelectOneHealthyInstance("ServiceDiscovery.NacosService");

        var host = $"{instance.Ip}:{instance.Port}";

        var baseUrl = instance.Metadata.TryGetValue("secure", out _) //放弃out输出
            ? $"https://{host}"
            : $"http://{host}";

        if (string.IsNullOrWhiteSpace(baseUrl))
        {
            return Ok("empty");
        }

        var url = $"{baseUrl}/user/GetUsers";

        using (HttpClient client = new HttpClient())
        {
            var result = await client.GetAsync(url);
            return Ok(await result.Content.ReadAsStringAsync());
        }
    }
    
}

 

标签:false,配置,Nacos,nacos,public,API,NET,true,去掉
From: https://www.cnblogs.com/MingQiu/p/18015053

相关文章

  • 【译】使用.NET将WebAssembly扩展到云(一)
    原文|RichardLander翻译|郑子铭WebAssembly(Wasm)是一种令人兴奋的新虚拟机和(汇编)指令格式。Wasm诞生于浏览器,是Blazor项目的重要组成部分。Wasm的第二个行动是针对应用程序和功能的云计算。WebAssembly系统接口(WASI)是新的推动者,为WebAssembly代码提供了一种安......
  • ASP.NET Core 开发者指南
    1简介我个人整理了ASP.NETCore开发者路线图目录,并在学习过程中的整理了一些读书笔记、学习心得等资料,希望与大家共同进步。2目录2.1C#委托,事件和Lambda表达式异步编程(或多线程编程)2.2一般开发技能Git:高效团队协作的利器使用GitHub进行协作开发的综合介绍2.3数......
  • 开源.NetCore通用工具库Xmtool使用连载 - OSS文件上传篇
    【Github源码】《上一篇》介绍了Xmtool工具库中的图像处理类库,今天我们继续为大家介绍其中的OSS文件上传类库。将本地文件上传到服务器是软件系统经常会遇到的需求,例如:设置用户头像,上传Excel报表等等;涉及到网络访问性能、存储空间等因素的考虑,通常我们会选择使用第三方的对象......
  • 在k8S中,Kubernetes RBAC及其特点(优势)是什么?
    在Kubernetes(k8S)中,Role-BasedAccessControl(RBAC)是一种强大的权限管理和访问控制机制。它允许集群管理员细粒度地控制用户、组或服务账户对KubernetesAPI资源的访问权限。特点和优势:细粒度授权:RBAC提供了一种基于角色的灵活授权模式,可以根据角色定义不同级别的API访问权限......
  • 在k8S中,Kubernetes Secret 作用是什么?
    在Kubernetes(k8S)中,Secret是一种用于存储和管理敏感信息的对象资源类型。它的主要作用是:安全存储:将密码、API密钥、TLS证书、SSH密钥等敏感数据以加密形式存储在集群内部,而不是直接暴露在配置文件或容器镜像中。保密传输:当Secret被挂载到Pod时,虽然数据是以明文形式存在于Pod......
  • dotnet aspnet redis 缓存 分布式缓存
    分布式缓存\appsettings.Development.json{"Logging":{"LogLevel":{"Default":"Information","Microsoft.AspNetCore":"Warning"}}}分布式缓存\appsettings.json{"Logg......
  • 2.NET中使用Nacos
     Nacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务......
  • Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp ) 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorOIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorOIDC单点登录授权实例2-登录信息组件wasmBlazorOIDC单点登录授权实例3-服务端管理组件BlazorOIDC单点登录授权实......
  • 【译】.NET 8 网络改进(三)
    原文|Máňa,NataliaKondratyeva翻译|郑子铭简化的SocketsHttpHandler配置.NET8添加了更方便、更流畅的方式来使用SocketsHttpHandler作为HttpClientFactory中的主处理程序(dotnet/runtime#84075)。您可以使用UseSocketsHttpHandler方法设置和配置SocketsHttp......
  • 使用 docker-compose 部署 nacos(单机和集群)
    之前已经编写过有关nacos的单机部署和集群部署,是直接在CentOS7上直接部署的,之前的博客链接如下:单机版nacos部署:https://www.cnblogs.com/studyjobs/p/17380184.html集群版nacos部署:https://www.cnblogs.com/studyjobs/p/17383397.html为了进一步简化部署,本篇博客介绍如......