Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

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

简单的来说Ocelot是一堆的asp.net core middleware组成的一个管道。

当它拿到请求之后会用一个request builder来构造一个HttpRequestMessage发到下游的真实服务器,等下游的服务返回response之后再由一个middleware将它返回的HttpResponseMessage映射到HttpResponse上。

Ocelot的基本使用

用一台web service来host Ocelot,在这里有一个json配置文件,里面设置了所有对当前这个网关的配置。它会接收所有的客户端请求,并路由到对应的下游服务器进行处理,再将请求结果返回。而这个上下游请求的对应关系也被称之为路由。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

集成Identity Server

当我们涉及到认证和鉴权的时候,我们可以跟Identity Server进行结合。当网关需要请求认证信息的时候会与Identity Server服务器进行交互来完成。

640?wx_fmt=jpeg

网关集群

只有一个网关是很危险的,也就是我们通常所讲的单点,只要它挂了,所有的服务全挂。这显然无法达到高可用,所以我们也可以部署多台网关。当然这个时候在多台网关前,你还需要一台负载均衡器。

640?wx_fmt=jpeg

Consul 服务发现

在Ocelot已经支持简单的负载功能,也就是当下游服务存在多个结点的时候,Ocelot能够承担起负载均衡的作用。但是它不提供健康检查,服务的注册也只能通过手动在配置文件里面添加完成。这不够灵活并且在一定程度下会有风险。这个时候我们就可以用Consul来做服务发现,它能与Ocelot完美结合。

640?wx_fmt=jpeg

【Demo】

  本篇文章为Ocelot入门的第一步要走的步骤,使用Ocelot作为微服务的网关

Ocelot网关api的创建

三个下游Demo微服务接口的创建

 网关轮询负载均衡的演示

【实现过程】

一、创建下游微服务

1. 新建3个asp.net core webapi项目,分别命名为Service1,Service2,Service3

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

2. 将三个项目的启动端口分别设置为39991,39992,39993

在每个服务的属性设置中将服务的host端口略作修改,分别叫做39991,39992,39993

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

3. 将默认的/api/values接口的返回值稍做修改,让其比较明显对应三个端口

 打开默认生成的/api/Values控制器Action,改造原来的Get方法返回值,让其对应三个端口以便提高区分度

例如Service1:

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

Service2和Service3依次修改

二、Ocelot网关Api

1. 新建一个asp.net core webapi项目,命名为OcelotGateway

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

2. 该项目引入Nuget: Ocelot 最新稳定版

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

3. 根目录添加配置文件Ocelot.json,添加上述三个api地址信息

根目录下新建一个Jso文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjssd.html