Net Core 微服务 - 开源API网关Ocelot 最简单的配置指南

什么是Ocelot?

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

Ocelot的实现原理

简单的来说Ocelot是一堆的asp.net core middleware组成的一个管道。当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。

Ocelot基本使用

项目结构如下:

 

 一个.Net 5的Web Api 项目(地址:localhost,端口:50164),一个作为网关的.Net 5 项目(地址:localhost,端口:8000)。

在作为网关的项目中通过Nuget命令添加最新版的Ocelot, Install-Package Ocelot 

首先在.Net 5 网关项目的appsettings.json中添加Ocelot的配置节,如下:

 

这里需要注意,在Ocelot 15 之前的版本里用“ReRoutes”,之后的版本改成了“Routes”,如果配置错误,网关功能不能生效。

以上配置将网关的地址http://localhost:8000/userservice/XXX 映射为http://localhost:50164/api/XXX。

另外,特别注意一下BaseUrl是我们外部暴露的Url,比如我们的Ocelot运行在http://192.168.10.11的一个地址上,但是前面有一个 nginx绑定了域名http://api.justtest.com,那这里我们的BaseUrl就是 http://api.justtest.com。这里本地测试,都用的localhost。

配置依赖注入与中间件

在startup.cs中我们首先需要引用两个命名空间

 

 接下来就是添加依赖注入和中间件

 

 然后将两个项目配置为多启动项目。启动项目之后,就可以通过网关地址http://localhost:8000/userservice/XXX访问web api项目(http://localhost:50164/api/XXX)下的任何api。

 

posted @ 2021-09-22 17:06  SilverFox8588  阅读(263)  评论(0编辑  收藏  举报