Ocelot一款.NET下的API网关介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ocelot一款.NET下的API网关介绍相关的知识,希望对你有一定的参考价值。

参考技术A 前言

在当前微服务技术盛行的年代,大家都在大谈特谈微服务架构,api网关等等配套技术,但是我们发现,大多都是java系的一些技术,那咋们.NET系难道没有吗?那今天就给大家介绍一款ap网关框架:Ocelot

什么是网关

API网关—— 它是系统的暴露在外部的一个访问入口。这个有点像代理访问的家伙,就像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导、等等功能。

什么是Ocelot

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

Ocelot的实现原理

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

Ocelot基本使用

在项目中通过Nuget命令添加Install-Package Ocelot

首先在.Net工程中添加一个ocelot.json文件

在启动类中加载配置文件:

先指定Oclot的对外服务访问的地址和端口号

接下来才是Ocelot的核心配置:



"DownstreamPathTemplate": "/",

"UpstreamPathTemplate": "/",

"UpstreamHttpMethod": [

"Get"

],

"AddHeadersToRequest": ,

"AddClaimsToRequest": ,

"RouteClaimsRequirement": ,

"AddQueriesToRequest": ,

"RequestIdKey": "",

"FileCacheOptions":

"TtlSeconds": 0,

"Region": ""

,

"ReRouteIsCaseSensitive": false,

"ServiceName": "",

"DownstreamScheme": "http",

"DownstreamHostAndPorts": [



"Host": "localhost",

"Port": 51876,



],

"QoSOptions":

"ExceptionsAllowedBeforeBreaking": 0,

"DurationOfBreak": 0,

"TimeoutValue": 0

,

"LoadBalancer": "",

"RateLimitOptions":

"ClientWhitelist": [],

"EnableRateLimiting": false,

"Period": "",

"PeriodTimespan": 0,

"Limit": 0

,

"AuthenticationOptions":

"AuthenticationProviderKey": "",

"AllowedScopes": []

,

"HttpHandlerOptions":

"AllowAutoRedirect": true,

"UseCookieContainer": true,

"UseTracing": true

,

"UseServiceDiscovery": false



配置属性说明:

Downstream是下游服务配置

UpStream是上游服务配置

Aggregates 服务聚合配置

ServiceName, LoadBalancer, UseServiceDiscovery 配置服务发现

AuthenticationOptions 配置服务认证

RouteClaimsRequirement 配置Claims鉴权

RateLimitOptions为限流配置

FileCacheOptions 缓存配置

QosOptions 服务质量与熔断

DownstreamHeaderTransform头信息转发

演示一个基本路由配置:

ReRoutes:是一个数组,里面包含了多组路由配置;

DownstreamPathTemplate:下游服务的真实地址;

DownstreamScheme:请求协议

DownstreamHostAndPorts:指定下游服务的ip,端口。这里可以配置负载均衡,比如下游服务应用横向部署在多台服务器上,这里非常方便的就可以做到负载均衡配置;

UpstreamPathTemplate:对外服务的地址;

UpstreamHttpMethod:配置请求方式;

RateLimitOptions:限流配置

EnableRateLimiting:限流开关

Period:限流统计时间段

PeriodTimespan:多长时间之后,用户可以再次访问

Limit:最大允许访问次数

好了,一个最基本的路由配置就完成了。

其他的功能点后面再逐一介绍。

以上是关于Ocelot一款.NET下的API网关介绍的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core网关Ocelot的简单介绍& Ocelot集成Identity认证

.NET微服务从0到1:API网关(Ocelot)

Ocelot——初识基于.Net Core的API网关

net core体系-API-1Ocelot-项目实战

使用 API 网关 Ocelot 与 Nginx 的微服务

Ocelot Api网关教程- QoS