2.3微服务-ocelot
网关 ocelot
负载均衡
安全问题:端口太多,调用关系复杂、不能直接调用实例,
服务治理:鉴权授权、限流、缓存、熔断、超时
一、项目安装ocelot nuget包
<PackageReference Include="Ocelot" Version="19.0.2" />
二、注释原来api管道模型,ocelot接管,添加配置文件configuration.json文件
//builder.Services.AddControllers(); //app.UseAuthorization(); //app.MapControllers();
builder.Services.AddOcelot(); //添加ocelot服务组件 await app.UseOcelot();//替换管道模型
builder.Configuration.AddJsonFile("configuration.json", optional: false, reloadOnChange: true);//添加配置文件
三、编写网关配置文件configuration.json
-- /通配路由
-- "Priority": 0 // 路由权重,通配默认0,不可修改
-- 负载均衡策略:RoundRobin 轮询 / LeastConnection 最少连接数 / NoLoadBalance 不负载均衡 / CookieStickySessions 会话粘滞
{ "Routes": [ { "DownstreamPathTemplate": "/api/{url}", //服务地址 url变量 "DownstreamScheme": "http", "DownstreamHostAndPorts": [ //转发地址 { "Host": "127.0.0.1", "Port": 5000 } ], "UpstreamPathTemplate": "/T5000/{url}", //网关地址 url变量 "UpstreamHttpMethod": [ "Get", "Post" ] //支持请求类型 }, { "UpstreamPathTemplate": "/{url}", "UpstreamHttpMethod": [ "Get", "Post" ], "DownstreamPathTemplate": "/{url}", //通配路由 "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "127.0.0.1", "Port": 5001 }, { "Host": "127.0.0.1", "Port": 5002 }, { "Host": "127.0.0.1", "Port": 5003 } ], "LoadBalancerOptions": { //负载均衡策略 "Type": "RoundRobin" //RoundRobin 轮询 / LeastConnection 最少连接数 / NoLoadBalance 不负载均衡 / CookieStickySessions 会话粘滞 }, //"LoadBalancerOptions": { // "Type": "CookieStickySessions", // "Key": "ASP.NET_SessionId", // "Expiry": 1800000 //}, "Priority": 0 // 路由权重,通配默认0,不可修改 } ] }
四、启用网关实例、测试成功