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网关介绍的主要内容,如果未能解决你的问题,请参考以下文章