一、API 网关概述
作为微服务的门面,应用于服务数量众多、复杂度较高、规模比较大的系统。 优点: 客户端通过 API 网关与微服务交互时,客户端只需要知道 API 网关地址即可,而不需要维护大量的服务地址,简化了客户端的开发。 客户端直接与 API 网关通信,能够减少客户端与各个服务的交互次数。 客户端与后端的服务耦合度降低。 节省流量,提高性能,提升用户体验。 API 网关还提供了安全、流控、过滤、缓存、计费以及监控等 API 管理功能。
常见API 网关实现方案
Sp
限流对保障系统的可用性有着至关重要的作用,通常限流已经有成熟的框架可以做到,如 Hystrix、Sentinel 等;这里介绍如何使用 Spring Cloud Gateway 实现对 IP 的限流。
存在的问题: 由于使用 JVM 内存对 IP 进行限流,多服务节点可能存在 A 节点限流了,B 节点访问正常的问题; 由于 IP 的存储有过期时间,过期的一瞬间是会存在问题的,例如报错。请结合自身的业务场景选择是否需要让 IP 过期,或者使用 LRU、LFU 等算法替代原有的过期策略。
本文基于lyft开源的1.6.6版源码:GitHub - lyft/presto-gateway: A load balancer / proxy / gateway for prestodbA load balancer / proxy / gateway for prestodb. Contribute to lyft/presto-gateway development by creating an account on GitHub.https://github.com/lyft/pre