Ocelot网关
1|0Ocelot +.net6
官方文档
虽然现在我们不用这个网关了,还是要记录一下笔记.我是用的是.net6配置的.
1|11.简单的手动在配置文件中配置服务
- 安装Nuget
Ocelot
- 新增一个名为
ocelot.json
的配置文件
{
"Routes": [ { "DownstreamPathTemplate": "/{url}", "DownstreamScheme": "http", "DownstreamHostAndPorts": [ //可以多个负载均衡 { "Host": "localhost", "Port": 5000 //服务端口 }, { "Host": "localhost", "Port": 5001 //服务端口 } ], "UpstreamPathTemplate": "/{url}", "UpstreamHttpMethod": [ "GET", "POST", "DELETE", "PUT" ], "LoadBalancerOptions": { "Type": "RoundRobin" //LeastConnection – 将请求发往最空闲的那个服务器;RoundRobin – 轮流发送;NoLoadBalance – 总是发往第一个请求或者是服务发现 } } ], "GlobalConfiguration": { "BaseUrl": "https://localhost:8000" } }
- Program注册使用代码如下
using Ocelot.DependencyInjection;
using Ocelot.Middleware; using Ocelot.Provider.Consul; var builder = WebApplication.CreateBuilder(args); builder.Services.AddEndpointsApiExplorer(); //将ocelot配置问题ocelot.json添加到配置提供程序 builder.Host.ConfigureAppConfiguration((hostingContext, config) => { //追加ocelot配置文件 config.AddJsonFile("ocelot.json", optional: true, reloadOnChange: true); }); //注册Ocelot //builder.Services.AddOcelot(builder.Configuration); builder.Services.AddOcelot(); var app = builder.Build(); app.UseOcelot().Wait(); app.Run();
1|22.使用Consul作为服务发现
Install-Package Ocelot.Provider.Consul
- 配置
ocelot.json
配置文件
{
"Routes": [ { "DownstreamPathTemplate": "/{url}", "DownstreamScheme": "http", "UpstreamPathTemplate": "/{url}", "UpstreamHttpMethod": [ "GET", "POST", "DELETE", "PUT" ], "UseServiceDiscovery": true, "ServiceName": "service-a", "LoadBalancerOptions": { "Type": "RoundRobin" //LeastConnection – 将请求发往最空闲的那个服务器;RoundRobin – 轮流发送;NoLoadBalance – 总是发往第一个请求或者是服务发现 } } ], "GlobalConfiguration": { "BaseUrl": "https://localhost:8000", "ServiceDiscoveryProvider": { "Host": "localhost", "Port": 8500 } } }
- Program注册使用Ocelot和Consul,代码如下
using Ocelot.DependencyInjection;
using Ocelot.Middleware; using Ocelot.Provider.Consul; var builder = WebApplication.CreateBuilder(args); builder.Services.AddEndpointsApiExplorer(); //将ocelot配置问题ocelot.json添加到配置提供程序 builder.Host.ConfigureAppConfiguration((hostingContext, config) => { //追加ocelot配置文件 config.AddJsonFile("ocelot.json", optional: true, reloadOnChange: true); }); //注册Ocelot builder.Services.AddOcelot() .AddConsul() .AddConfigStoredInConsul(); var app = builder.Build(); app.UseOcelot().Wait(); app.Run();
1|33.使用Cache
- 安装Nuget
Install-Package Ocelot.Cache.CacheManager
- 注入CacheManager
s.AddOcelot()
.AddCacheManager(x => { x.WithDictionaryHandle(); })
- 在具体的Route里面添加如下配置
"FileCacheOptions": { "TtlSeconds": 15, "Region": "somename" }
1|44.限流
直接配置在具体的Route里面就行了
"RateLimitOptions": {
"ClientWhitelist": [],//白名单 "EnableRateLimiting": true,//是否启用限流 "Period": "1s",//1s,5m,1h,1d "PeriodTimespan": 1,//多少秒之后客户端可以重试 "Limit": 10 //统计时间段之内允许的最大请求数量 }
还可以设置全局的限流提示
"GlobalConfiguration": {
"BaseUrl": "https://localhost:8000", "ServiceDiscoveryProvider": { "Host": "localhost", "Port": 8500 }, //全局限流提示配置 "RateLimitOptions": { "DisableRateLimitHeaders": false, "QuotaExceededMessage": "Customize Tips!", "HttpStatusCode": 999, "ClientIdHeader": "Test" } }
1|5超时/熔断 Polly
Install-Package Ocelot.Provider.Polly
注册Polly
//将ocelot配置问题ocelot.json添加到配置提供程序
builder.Host.ConfigureAppConfiguration((hostingContext, config) => { //追加ocelot配置文件 config.AddJsonFile("ocelot.json", optional: true, reloadOnChange: true); }); //注册Ocelot //builder.Services.AddOcelot(builder.Configuration); //builder.Services.AddOcelot() builder.Services.AddOcelot() .AddCacheManager(x => x.WithDictionaryHandle()) .AddConsul() .AddConfigStoredInConsul() .AddPolly();
配置文件使用Polly
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 3,//代表发生错误的次数 "DurationOfBreak": 10000,//代表熔断时间 "TimeoutValue": 5000//代表超时时间 }
__EOF__

本文作者:永远不要停止学习的脚步
本文链接:https://www.cnblogs.com/vsnb/p/15813699.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/vsnb/p/15813699.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
分类:
技术笔记 / 微服务架构
, 技术笔记 / 第三方组件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)