什么是Ocelot
Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Consul集成,并且这些功能都只需要简单的配置即可完成 。
简单的说,Ocelot是一堆的asp.net middleware组成的一个管道。当有收到请求后会用一个RequestBuilder去创建一个HttpRequestMessage发送(或请求)到下游服务器,等下游服务器返回Response后再由一个Middleware将HttpRequestMessage映射到当前请求Context中的Response上,并返回给请求者。
搭建一个Ocelot项目
一、创建微服务
1、新建三个Webapi项目
2、修改三个微服务的端口分别为:33696、33697、33696
3、修改三个微服务/api/values接口默认返回值,可以比较明显的区分出三个微服务接口
另外两个微服务的返回值分别是:微服务2、微服务3
二、创建网关
1、新建一个网关项目 OcelotGateway
2、在解决方案Nuget程序包安装Ocelot最新版
3、在根目录添加配置文件 Ocelot.json
内容如下:
我们设置的是RoundRobin,Ocelot会对三个微服务轮流发送请求
4、修改Program.cs文件,在CreateWebHostBuilder方法里添加如下代码,引入Ocelot.Json
5、修改StartUp.cs文件,在请求管道内添加Ocelot,一定要注意:要放在AddMvc()和UserMvc()方法的上面,否则的话网关不会生效。
三、运行
1、先运行三个微服务,可以看到三个微服务分别返回了不同的值
可以在解决方案的属性页设置三个项目同时启动
三个微服务项目的返回结果
2、单独运行网关项目
运行以后,因为我们设置的负载均衡算法是RoundRobin,刷新网页以后,Ocelot就会分别轮询地返回了三个接口的结果
至此,一个基于.Net Core的开源API网关Ocelot示例就完成了。