You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ocelot.Provider.Nacos/README.md

119 lines
3.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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](https://github.com/catcherwong/nacos-sdk-csharp)
```
<PackageReference Include="nacos-sdk-csharp-unofficial" Version="0.2.7" />
```
它其实是有一个asp.net core版本的组件但是我没有选用虽然那个用起来功能很强大但是我需要自己改造一下让它能更好的适配Ocelot
#### Nacos 2.0
+ net6.0;net7.0;net8.0
+ Ocelot版本 v22.0.1
+ Nacos访问组件 [nacos-sdk-csharp](https://github.com/nacos-group/nacos-sdk-csharp)
```
<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
```
<b>目前以支持.net5请如有需要请引入最新的1.1.0版本</b>
```
<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](https://github.com/softlgl/Ocelot.Provider.Nacos/tree/master/demo/ApiGatewayDemo)
```cs
public void ConfigureServices(IServiceCollection services)
{
//注册服务发现
services.AddOcelot().AddNacosDiscovery();
}
```
再已有的ocelot配置文件上添加
```json
{
"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是保持一致的
```json
"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,如下所示**
```json
"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
}
```