Ocelot 作用
1. 路由---核心功能
2. 集群负载均衡
上一章Consul做到了集群、自动注册发现和健康检测《.Net Core 3.x MVC Consul 集群》,可是存在问题,就是前端实例需要写很多调用Consul和后端服务实例的代码,如果有改动,所有前端都需要改动发布。这时候需要有个网关来把这些请求集合起来做处理(Ocelot + Consul)。
Ocelot 实现了客户端和服务实例的隔绝—保护—节约IP—提高效率
Consul 实现了集群管理,发现—健康检查—下线
官网:https://threemammals.com/ocelot
Git:https://github.com/ThreeMammals/Ocelot
1. 添加一个 Web Api 项目
2. 引用 Ocelot 和 Ocelot.Provider.Consul 两个包
3. 添加 配置文件
U001是网关地址(自定义)
UserService 就是 后端服务实例里注册Consul时设置的分组
http://127.0.0.1:8005 ,端口 8005 是 启动这个Gateway实例使用的端口号 自定义的
修改 Startup.cs ,注释默认的管道和服务,添加 Ocelot
修改 Program.cs ,读取 刚才添加的 Ocelot 配置文件 configuration.json
生成编译
这次用到实例 后端实例(AspNetCore.MicroService.ServiceInstance)、Ocelot实例(AspNetCore.MicroService.Gateway) 和 consul
先启动 consul 命令
consul.exe agent -dev
后端项目bin->编译项目目录 启动三个实例
dotnet AspNetCore.MicroService.ServiceInstance.dll --urls=”http://*:8002” --ip=”127.0.0.1” --port=8002
dotnet AspNetCore.MicroService.ServiceInstance.dll --urls=”http://*:8003” --ip=”127.0.0.1” --port=8003
dotnet AspNetCore.MicroService.ServiceInstance.dll --urls=”http://*:8004” --ip=”127.0.0.1” --port=8004
Ocelot实例bin->编译项目目录 启动实例
dotnet AspNetCore.MicroService.Gateway.dll --urls=”http://*:8005” --ip=”127.0.0.1” --port=8005
启动好这些项目就可以访问一下网关地址了
http://localhost:8005/U001/users/all
按F5刷新,这里Ocelot实现负载均衡,自动轮询请求三个后端实例。