API网关介绍

Posted 分布式微服务技术提升

tags:

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

认证、鉴权、服务路由、流量控制、协议转换

客户端直接与各个微服务通信,会出现以下问题:

  • 客户端会多次请求不同的微服务,增加了客户端的复杂性。

  • 存在跨域请求,在一定场景下处理相对复杂。

  • 认证复杂,每个服务都需要独立认证。

  • 难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。

  • 某些微服务可能使用了防火墙 / 浏览器不友好的协议,直接访问会有一定的困难。

Zuul

Zuul1.0 默认使用Apache的HTTP Client,也可以使用Rest Client Zuul2.X基于netty,也是非阻塞的,支持长连接

对比

Gateway Zuul 1.0 Zuul2.0
开源时间 2017年7月 2013年6月 2017年11月
架构 基于netty 基于servlet 基于netty
运行方式 异步非阻塞 同步阻塞 异步非阻塞
Spring Cloud集成 ×
支持长连接、Web Socket ×
限流、限速 第三方 即将推出
监控
上手难度 中等 简单 复杂
Gateway

Gateway基于Webflux

Gateway 建立在 Spring Framework 5,Project Reactor 和 Spring Boot 2 上,不同于 Zuul 的阻塞 IO,Gateway使用的是非阻塞 IO,相较 Zuul 具备更好的内核性能;同时与Spring紧密集成,对于开发者而言,成为了一个整合方便,使用方便,性能高的产品,有着良好的生态市场作为依托

具有如下特性:

  • 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;

  • 动态路由:能够匹配任何请求属性;

  • 可以对路由指定 Predicate(断言)和 Filter(过滤器);

  • 集成Hystrix的断路器功能;

  • 集成 Spring Cloud 服务发现功能;

  • 易于编写的 Predicate(断言)和 Filter(过滤器);

  • 请求限流功能;

  • 支持路径重写。

OpenResty

OpenResty® 是一个基于 nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。因此,我们可以做出各种符合我们需要的网关策略的Lua脚本,以其为基础构建高性能的网关系统

Kong

Kong基于OpenResty,是一个云原生、快速、可扩展、分布式的Api 网关。继承了OpenResty的高性能、易扩展性等特点。

Kong通过简单的增加机器节点,可以很容易的水平扩展。

同时功能插件化,可通过插件来扩展其能力。而且在任何基础架构上都可以运行。

具有以下特性:

  • 提供了多样化的认证层来保护Api。

  • 可对出入流量进行管制。

  • 提供了可视化的流量检查、监视分析Api。

  • 能够及时的转换请求和相应。

  • 提供log解决方案

  • 可通过api调用Serverless 函数。

业务网关、流量网关

业务网关针对具体的业务需要提供特定的流控策略、缓存策略、鉴权认证策略等等

与业务网关相反,定义全局性的、跟具体的后端业务应用和服务完全无关的策略网关-流量网关,流量网关通常只专注于全局的Api管理策略,比如全局流量监控、日志记录、全局限流、黑白名单控制、接入请求到业务系统的负载均衡等,有点类似防火墙。Kong 就是典型的流量网关。


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

api网关相关介绍

浅谈如何设计一个可用的企业级API网关

HTTP API网关选择之一Kong介绍

Spring Cloud——微服务网关介绍

百亿规模API网关服务Shepherd的设计与实现

企业级API网关的设计