MyGit

softlgl/Ocelot.Provider.Nacos

Fork: 31 Star: 72 (更新于 2024-12-21 05:00:47)

license: 暂无

Language: C# .

Repo for Nacos integration with Ocelot

最后发布版本: v1.3.1 ( 2022-11-29 11:47:58)

GitHub网址

Ocelot.Provider.Nacos

Ocelot集成Nacos注册中心组件

开发环境

Nacos 1.x

  • .Net Core 3.1 因为最新稳定版的Ocelot是在.Net Core 3.1上构建的(目前以支持.net5,由张队进行升级的)
  • Ocelot版本 v16.0.1(最新版已是17.0.0)
  • Nacos访问组件 nacos-sdk-csharp
    <PackageReference Include="nacos-sdk-csharp-unofficial" Version="0.2.7" />
    
    它其实是有一个asp.net core版本的组件,但是我没有选用,虽然那个用起来功能很强大,但是我需要自己改造一下,让它能更好的适配Ocelot

Nacos 2.0

 <PackageReference Include="nacos-sdk-csharp" Version="1.3.5" />

添加引用

不同版本支持naocs版本不一样

Naocs 1.x

<PackageReference Include="Ocelot.Provider.Nacos" Version="1.0.0" />

dotnet add package Ocelot.Provider.Nacos --version 1.0.0

目前以支持.net5,请如有需要请引入最新的1.1.0版本

<PackageReference Include="Ocelot.Provider.Nacos" Version="1.1.0" />

dotnet add package Ocelot.Provider.Nacos --version 1.1.0

Nacos 2.0

注意版本1.x和2.x的没做版本兼容,2.x使用以下版本。当时考虑还得在配置文件里做版本区分,所以就独立不同的包了。

<PackageReference Include="Ocelot.Provider.Nacos" Version="1.3.5" />

dotnet add package Ocelot.Provider.Nacos --version 1.3.5

使用方式

在已有的Ocelot的项目上添加以下内容,具体操作可查看demo

public void ConfigureServices(IServiceCollection services)
{
    //注册服务发现
    services.AddOcelot().AddNacosDiscovery();
}

再已有的ocelot配置文件上添加

{
  "Routes": [
    {
      // 用于服务发现的名称,也就是注册到nacos上的名称
      "ServiceName": "productservice",
      "DownstreamScheme": "http",
      "DownstreamPathTemplate": "/productapi/{everything}",
      "UpstreamPathTemplate": "/productapi/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "LoadBalancerOptions": {
        "Type": "RoundRobin"  
      },
      // 使用服务发现
      "UseServiceDiscovery": true
    }
  ],
  "GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      //这里是重点
      "Type": "Nacos"
    }
  }
}

然后添加在appsettings.json文件中添加,具体配置字段和nacos-sdk-csharp是保持一致的

"nacos": {
    "ServerAddresses": [ "http://localhost:8848" ],
    "DefaultTimeOut": 15000,
    "Namespace": "",
    "ListenInterval": 1000,
    // 网关服务名称
    "ServiceName": "apigateway"
}

使用Nacos 2.0的时候注意 nacos-sdk-csharp 1.1.0版本配置文件发生的变化,如果在Nacos 2.0管理界面的服务列表里展示服务,需要新建自己的命名空间并将NameSpace上填写Nacos的NameSpaceId,如下所示

"nacos": {
    "ServerAddresses": [ "http://192.168.219.1:8848" ],
    "ServiceName": "apigateway",
    "DefaultTimeOut": 15000,
    //自定义Namespace的Id,默认的虽然可以注册发现,但是在nacos中不展示
    "Namespace": "2ae308e2-7e8a-4602-9d1c-56508a3e263c",
    "GroupName": "DEFAULT_GROUP",
    "ClusterName": "DEFAULT",
    "ListenInterval": 1000,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "LBStrategy": "WeightRandom",
    "NamingUseRpc": true
  }

最近版本更新:(数据更新于 1970-01-01 00:00:00)

2022-11-29 11:47:58 v1.3.1

2022-03-07 17:29:30 v1.1.1

2021-11-25 12:17:42 v1.2.2

2021-07-08 14:26:36 v1.2.0

2021-04-27 16:01:50 v1.2.0-preview.1

2021-04-26 11:49:20 v1.1.0

主题(topics):

nacos, ocelot

softlgl/Ocelot.Provider.Nacos同语言 C#最近更新仓库

2024-12-20 06:41:40 microsoft/PowerToys

2024-12-07 22:15:43 Pik-4/HsMod

2024-12-01 20:18:03 BililiveRecorder/BililiveRecorder

2024-11-26 14:48:43 Azure/azure-sdk-for-net

2024-11-19 11:38:46 jellyfin/jellyfin

2024-11-15 10:33:01 DigitalRuby/IPBan