.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

什么是Ocelot

Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Consul集成,并且这些功能都只需要简单的配置即可完成 。

简单的说,Ocelot是一堆的asp.net middleware组成的一个管道。当有收到请求后会用一个RequestBuilder去创建一个HttpRequestMessage发送(或请求)到下游服务器,等下游服务器返回Response后再由一个Middleware将HttpRequestMessage映射到当前请求Context中的Response上,并返回给请求者。

 

搭建一个Ocelot项目

一、创建微服务

1、新建三个Webapi项目
 .Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

2、修改三个微服务的端口分别为:33696、33697、33696

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

3、修改三个微服务/api/values接口默认返回值,可以比较明显的区分出三个微服务接口

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

另外两个微服务的返回值分别是:微服务2、微服务3

二、创建网关

1、新建一个网关项目 OcelotGateway

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

2、在解决方案Nuget程序包安装Ocelot最新版

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

3、在根目录添加配置文件 Ocelot.json

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

内容如下:

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

我们设置的是RoundRobin,Ocelot会对三个微服务轮流发送请求

 

4、修改Program.cs文件,在CreateWebHostBuilder方法里添加如下代码,引入Ocelot.Json

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

5、修改StartUp.cs文件,在请求管道内添加Ocelot,一定要注意:要放在AddMvc()和UserMvc()方法的上面,否则的话网关不会生效。

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

三、运行

1、先运行三个微服务,可以看到三个微服务分别返回了不同的值

可以在解决方案的属性页设置三个项目同时启动

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

三个微服务项目的返回结果

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

2、单独运行网关项目

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

运行以后,因为我们设置的负载均衡算法是RoundRobin,刷新网页以后,Ocelot就会分别轮询地返回了三个接口的结果

.Net Core 微服务(一) 开源API网关Ocelot 最简单的入门教程

至此,一个基于.Net Core的开源API网关Ocelot示例就完成了。