网关Ocelot 集成Consul
- Ocelot一、安装nuget:Ocelot.Provider.Consul

二、新建配置 ocelot.json
{
"Routes": [
{
"UpstreamPathTemplate":"/api/{url}",//上游访问接口
"UpstreamHttpMethod": ["Get", "Post", "Put", "Delete"],
"DownstreamPathTemplate": "/api/{url}",//内部转发接口
"DownstreamScheme": "http",
"LoadBalancerOptions": {
"Type":"RoundRobin"//负载均衡机制轮流发送
},
"UseServiceDiscovery": true, //注册到consul开启启用服务发现
"ServiceName": "EFCoreService",//注册到服务器的名称,这里配置错误会发现不了服务
//熔断设置
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 3, //允许异常次数,当Ocelot转发给该下游服务连续出现异常次数达到该数字时,Ocelot会进行自动熔断,一段时间内不再向该下游服务转发请求
"DurationOfBreak": 5000, // 熔断时间,单位为ms(毫秒),持续多长时间不向该下游服务转发请求
"TimeoutValue": 5000 //单位ms,如果下游请求的处理时间超过多少则自如将请求设置为超时 默认90秒
}
}
],
"GlobalConfiguration": {
"BaseUrl": "http://localhost:5095",
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 8500,
"Type": "Consul" // 二选一 根据需要结合站点启动时Program的注册 注册到相关服务
}
}
}三、注入Ocelot 和使用Ocelot
//注入ocelot
builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);
builder.Services.AddOcelot().AddConsul().AddPolly();
//使用
app.UseOcelot().Wait();四、访问网关
可以看到访问网关上游地址,已被转发到配置的下游地址
