.NET Core 微服务—API网关(Ocelot) 教程 [一]

 前言:

  最近在关注微服务,在 eShop On Containers 项目中存在一个API网关项目,引起想深入了解下它的兴趣。

   .NET Core 微服务—API网关(Ocelot) 教程 [一]

 

 

一、API网关是什么

  API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API。它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

二、Ocelot简介

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

三、Ocelot工作流程

  a)  基本集成:

     根据configuration.json(后续文章会介绍详细内容)中配置内容,把接收所有的客户端请求,路由到对应的下游服务器进行处理,再将请求结果返回。而这个上下游请求的对应关系也被称之为路由。

 .NET Core 微服务—API网关(Ocelot) 教程 [一]

  

b)  集成IdentityServer:

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

.NET Core 微服务—API网关(Ocelot) 教程 [一]

 

    

  c)  网关集群配置:

    可以部署多台Ocelot网关。当然这个时候在多台网关前,你还需要一台负载均衡器

    .NET Core 微服务—API网关(Ocelot) 教程 [一]

     

  d)  结合Consul服务发现

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

    .NET Core 微服务—API网关(Ocelot) 教程 [一]

  e)  结合Service Fabric

       

    .NET Core 微服务—API网关(Ocelot) 教程 [一]

下一步:  

  接下来我们就一起来应用Ocelot实现路由、权限认证、服务发现、负载均衡等等相关功能。在代码中进一步深入了解。

    • 包括如何配置路由
    • 授权认证服务接入
    • 负载均衡使用
    • 服务发现结合
    • …… 

引用:

  官方文档:https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html

 

上一篇:负载均衡监控需求


下一篇:(1)ASP.NET Core3.1 Ocelot介绍