在分布式系统和微服务架构中,Gateway(网关) 是位于客户端与后端服务之间的中间层,主要承担请求入口管理、协议转换、路由转发、统一管控等核心功能,是连接客户端与微服务的 "桥梁"。其核心作用是简化系统交互、增强安全性、提升可维护性。
Gateway 的核心作用
1. 统一入口,简化客户端访问
- 微服务架构中,后端服务通常被拆分为多个独立的小服务(如用户服务、订单服务、支付服务等),每个服务可能有不同的地址(IP: 端口)。
- 网关作为唯一唯一入口,客户端只需访问网关地址,无需知道后端具体服务的地址,降低了客户端与服务的耦合。
- 例:用户访问
api.example.com
(网关),无需关心用户服务在10.0.0.1:8081
、订单服务在10.0.0.2:8082
。
2. 路由转发,精准匹配服务
- 网关根据预设规则(如 URL 路径、请求参数、请求头),将客户端请求转发到对应的后端服务。
- 例:
- 客户端请求
api.example.com/user/123
→ 网关转发到用户服务; - 客户端请求
api.example.com/order/456
→ 网关转发到订单服务。
- 客户端请求
- 支持动态路由配置,可通过配置中心实时调整路由规则,无需重启服务。
3. 协议转换,适配多端需求
- 客户端与后端服务可能使用不同协议(如客户端用 HTTP,后端服务用 RPC),网关可进行协议转换。
- 例:移动端通过 HTTP 请求访问网关,网关将请求转换为 Dubbo 协议调用后端微服务,再将结果转换为 HTTP 返回给客户端。
4. 统一横切功能,减少重复开发
- 网关集中实现非业务相关的通用功能 ,避免在每个微服务中重复开发,提升系统一致性:
- 认证授权:验证用户身份(如 JWT 令牌校验),拦截未登录请求;
- 限流熔断:限制接口的请求频率(如每秒最多 1000 次),防止服务过载;当后端服务异常时,网关直接返回降级结果,避免级联故障;
- 日志监控:记录所有请求的日志(访问时间、路径、耗时等),便于问题排查和系统监控;
- 数据脱敏:对响应中的敏感信息(如手机号、身份证号)进行加密或替换,保障数据安全;
- 缓存:对高频访问的静态资源或查询结果进行缓存,减少后端服务压力。
5. 负载均衡,优化服务资源利用
- 当后端服务部署多个实例(集群)时,网关可通过负载均衡算法(如轮询、权重、一致性哈希)将请求分发到不同实例,避免单实例过载,提高系统可用性。
- 例:订单服务有 3 个实例,网关按轮询策略将请求依次转发到 3 个实例,实现负载分担。
6. 灰度发布与 A/B 测试支持
- 网关可根据规则(如用户 ID、地域)将部分请求路由到新版本服务,实现灰度发布或 A/B 测试,降低全量发布风险。
- 例:将 10% 的用户请求转发到订单服务 v2.0,90% 的请求仍使用 v1.0,验证新版本稳定性后再逐步扩大范围。
注:Dubbo 协议 指的是什么?
Dubbo 协议是 Apache Dubbo 框架中默认使用的远程通信协议,专门为高性能的 RPC(远程过程调用)设计,用于实现分布式系统中服务提供者与消费者之间的高效数据传输。它基于 TCP 协议,采用自定义的二进制协议格式,在序列化、传输效率和服务治理方面进行了专门优化。