什么是API网关
API网关(API Gateway)是微服务架构中的一个关键组件,它充当了客户端与后端服务之间的中心层。其重要功能包罗哀求路由、协议转换、负载均衡、安全认证、限流熔断等。通过API网关,客户端无需直接与多个微服务交互,而是通过同一的入口访问后端服务,从而简化了体系的复杂性。
API 网关的重要功能
路由功能:路由是微服务网关的核心本领。通过路由功能微服务网关可以将哀求转发到目的微服务。在微服务架构中,网关可以联合注册中央的动态服务发现,实现对后端服务的发现,调用方只必要知道网关对外袒露的服务API就可以透明地访问后端微服务。
负载均衡:API网关联合负载均衡技能,利用Eureka大概Consul等服务发现工具,通过轮询、指定权重、IP地点哈希等机制实现鄙俚服务的负载均衡。
同一鉴权:一样平常而言,无论对内网照旧外网的接口都必要做用户身份认证,而用户认证在一些规模较大的体系中都会接纳同一的单点登录(Single Sign On)体系,如果每个微服务都要对接单点登录体系,那么显然比力浪费资源且开发服从低。API网关是同一管理安全性的绝佳场所,可以将认证的部分抽取到网关层,微服务体系无须关注认证的逻辑,只关注自身业务即可。
协议转换:API网关的一大作用在于构建异构体系,API网关作为单一入口,通过协议转换整合背景基于REST、AMQP、Dubbo等差异风格和实现技能的微服务,面向Web Mobile、开放平台等特定客户端提供同一服务。
指标监控 :网关可以统计后端服务的哀求次数,而且可以及时地更新当前的流量康健状态,可以对URL粒度的服务举行耽误统计,也可以利用Hystrix Dashboard查察后端服务的流量状态及是否有熔断发生。
限流熔断:在某些场景下必要控制客户端的访问次数和访问频率,一些高并发体系偶然还会有限流的需求。在网关上可以设置一个阈值,当哀求数高出阈值时就直接返回错误而不继承访问背景服务。当出现流量洪峰大概后端服务出现耽误或故障时,网关可以大概自动举行熔断,掩护后端服务,并保持前端用户体验良好。
优劣名单:微服务网关可以利用体系黑名单,过滤HTTP哀求特性,拦截非常客户端的哀求,比方DDoS攻击等腐蚀带宽或资源迫使服务停止等举动,可以在网关层面举行拦截过滤。比力常见的拦截计谋是根据IP地点增长黑名单。在存在鉴权管理的路由服务中可以通过设置白名单跳过鉴权管理而直接访问后端服务资源。
灰度发布:微服务网关可以根据HTTP哀求中的特殊标记和后端服务列表元数据标识举行流量控制,实如今用户无感知的环境下完成灰度发布。
流量染色:和灰度发布的原理相似,网关可以根据HTTP哀求的Host、Head、Agent等标识对哀求举行染色,有了网关的流量染色功能,我们可以对服务后续的调用链路举行跟踪,对服务耽误及服务运行状态举行进一步的链路分析。
文档中央:网关联合Swagger,可以将后端的微服务袒露给网关,网关作为同一的入口给接口的利用方提供查察后端服务的API规范,不必要知道每一个后端微服务的Swagger地点,如许网关起到了对后端API聚合的效果。
日志 审计:微服务网关可以作为同一的日志 记录和网络器,对服务URL粒度的日志 哀求信息和相应信息举行拦截。
API 网关的架构和工作原理
在微服务架构中,每个微服务大概负责差异的业务功能,而每个微服务又大概会有多个实例。当客户端发起哀求时,API 网关作为全部哀求的同一入口,吸取并处置处罚这些哀求。API 网关的工作原理可以大抵形貌为:
吸取哀求:客户端向 API 网关发送哀求,而不是直接访问各个微服务。
哀求处置处罚:API 网关根据哀求内容决定将哀求路由到哪个微服务。如果哀求必要颠末认证,API 网关会先验证哀求的合法性。
转发哀求:API 网关将哀求转发到得当的微服务或服务实例。如果哀求必要颠末多个微服务的协作,API 网关大概会发起多个哀求并聚合效果。
返回相应:API 网关网络微服务的相应,并将它们汇总后返回给客户端。
API网关选型
这些 API 网关是从云原生软件基金会(CNCF)的全景图中摘选的
先简朴看一下市面上常用的API网关:
特性TraefikKongAPISIX (API6)Zuul架构轻量级,基于 Go 和 Docker/K8s 集成高性能,基于 Lua 和 Nginx高性能,基于 Nginx 和 Lua基于 Java,Spring Cloud 集成协议支持HTTP, HTTPS, WebSocket, gRPCHTTP, HTTPS, gRPC, TCP, UDPHTTP, HTTPS, WebSocket, gRPCHTTP, HTTPS自动化/集成自动发现服务,易于容器化环境集成高度可扩展,支持 Kubernetes动态路由,云原生支持集成 Spring Cloud,实用于 Java插件支持少量插件支持丰富的插件生态,支持认证、安全等丰富的插件支持,功能强大支持过滤器机制,集成 Spring Cloud易用性易于设置,自动化水平高设置复杂,但功能强大高度可定制,设置机动恰当 Java 开发者,集成容易社区支持社区生动,受 Kubernetes 支持企业级办理方案,生动的社区新兴的高性能网关,社区生动重要用于 Java 环境,Spring Cloud 支持 选择发起:
如果在 Kubernetes 或容器化环境中工作,Traefik 大概是一个最符合的选择。
如果必要一个功能强大、可扩展并支持高并发的 API 网关,Kong 和 APISIX 都优劣常良好的选择,Kong 提供了更多的插件支持,而 APISIX 大概在高性能方面略有上风。
如果利用 Spring Cloud 或 Java 技能栈,Zuul 大概是更好的选择,Zuul由于与Spring Cloud深度集成,利用度也很高,比年来Istio服务网格的盛行,Ambassador由于可以大概和Istio无缝集成也是相当大的上风。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|