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,不可修改
}
]
}
四、启用网关实例、测试成功



浙公网安备 33010602011771号