网站首页 > 精选教程 正文
API网关是什么?
微服务兴起的一种架构模式,微服务拆分使API规模成倍增长,API的管理难度日益增加,使用API网关发布和管理API逐渐成为一种趋势,API网关是运行于外部请求与内部服务之间的一个流量入口,实现对外部请求的请求转发,安全认证(身份/权限认证),流量控制,负载均衡,降级熔断,日志,监控,协议转换等通用功能,一般外层用nginx高可用做API网关负载,保证高可用,避免单点故障。
常规功能
请求转发:将请求转发到目标微服务
负载均衡:根据各个微服务实例的负载情况或者具体的负载均衡策略配置对请求实现动态的负载均衡
安全认证:对用户请求进行身份验证并仅允许可信客户端访问 API,并且还能够使用类似 RBAC 等方式来授权
参数校验:支持参数映射与校验逻辑
日志记录:记录所有请求的行为日志供后续使用
监控告警:从业务指标、机器指标、JVM 指标等方面进行监控并提供配套的告警机制
流量控制:对请求的流量进行控制,可以限制某一时刻内的请求数
熔断降级:实时监控请求的统计信息,达到配置的失败阈值后,自动熔断,返回默认值
响应缓存:当用户请求获取的是一些静态的或更新不频繁的数据时,一段时间内多次请求获取到的数据很可能是一样的。对于这种情况可以将响应缓存起来。这样用户请求可以直接在网关层得到响应数据,无需再去访问业务服务,减轻业务服务的负担
响应聚合:某些情况下用户请求要获取的响应内容可能会来自于多个业务服务。网关作为业务服务的调用方,可以把多个服务的响应整合起来,再一并返回给用户
灰度发布:将请求动态分流到不同的服务版本(最基本的一种灰度发布)
异常处理:对于业务服务返回的异常响应,可以在网关层在返回给用户之前做转换处理。这样可以把一些业务侧返回的异常细节隐藏,转换成用户友好的错误提示返回。
API 文档:如果计划将 API 暴露给组织以外的开发人员,那么必须考虑使用 API 文档,例如 Swagger 或 OpenAPI
协议转换:通过协议转换整合后台基于 REST、AMQP、Dubbo 等不同风格和实现技术的微服务,面向 Web Mobile、开放平台等特定客户端提供统一服务。
常见网关
Netflix Zuul
Zuul 是 Netflix 开发的一款提供动态路由、监控、弹性、安全的网关服务,基于 Java 技术栈开发,可以和 Eureka、Ribbon、Hystrix 等组件配合使用。
Spring Cloud Gateway
诞生的目标是为了替代老牌网关 Zuul,为了提升网关的性能,SpringCloud Gateway 基于 Spring WebFlux 。Spring WebFlux 使用 Reactor 库来实现响应式编程模型,底层基于 Netty 实现同步非阻塞的 I/O。
Kong
APISIX
Shenyu
一般整体架构
思维导图
猜你喜欢
- 2024-09-29 Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等
- 2024-09-29 API网关从入门到放弃 api网关设计原则
- 2024-09-29 深入浅出深度了解springboot服务gateway网关
- 2024-09-29 网关是如何实现负载均衡的? 网关运行
- 2024-09-29 微服务实战系列(九)-注册中心与网关高可用架构设计
- 2024-09-29 实时解答SpringCloud+Nginx秒杀实战,Zuul内部网关实现秒杀限流
- 2024-09-29 高性能多级网关与多级缓存架构落地实战(超清完结)
- 2024-09-29 Kong网关(github 2.1万star)作者深度解读:为什么需要API网关?
- 2024-09-29 30 微服务网关概述 微服务网关服务
- 2024-09-29 微服务路由网关sia-gateway 微服务 网关 选型
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)