服务网关面试题分类整理

服务网关面试题分类整理

文章目录

  • 服务网关面试题分类整理
    • 一、基础概念类
      • 1. 什么是服务网关?它解决了什么问题?
      • 2. 服务网关和负载均衡器有什么区别?
    • 二、核心功能类
      • 1. 服务网关的五大核心功能是什么?
      • 2. 动态路由是如何实现的?
    • 三、技术实现类
      • 1. 主流网关技术选型对比
      • 2. 网关如何实现高性能?
    • 四、高可用设计类
      • 1. 如何保证网关自身的高可用?
      • 2. 网关如何避免成为单点瓶颈?
    • 五、安全防护类
      • 1. 网关如何实现API安全?
      • 2. 如何防止API被恶意刷接口?
    • 六、性能优化类
      • 1. 网关性能优化的常见手段有哪些?
      • 2. 如何设计网关的熔断降级策略?
    • 七、实战经验类
      • 1. 网关灰度发布的常见方案?
      • 2. 网关日志如何收集和分析?
    • 八、架构设计类
      • 1. 如何设计一个百万QPS的网关系统?
      • 2. 网关如何与Service Mesh协同工作?

一、基础概念类

1. 什么是服务网关?它解决了什么问题?

答案:
服务网关就像小区的门卫,是所有外部请求进入系统的统一入口。它主要解决了以下几个问题:

  • 统一入口:不用记住每个服务的地址,就像你回家只需要到小区大门,不用记每栋楼怎么走
  • 安全防护:统一做身份验证,防止坏人混入
  • 流量管控:控制进出的人流,避免高峰期拥堵
  • 协议转换:把外部的HTTP请求转换成内部服务能理解的各种协议

2. 服务网关和负载均衡器有什么区别?

答案:

  • 负载均衡器:像个交通警察,只负责把车流(请求)均匀分配到各个路口(服务实例)
  • 服务网关:更像一个多功能检查站,除了分流还会做身份检查(认证)、行李安检(请求过滤)、路线指引(路由)等

二、核心功能类

1. 服务网关的五大核心功能是什么?

答案:

  1. 路由转发:根据请求特征把请求送到正确的服务,像快递分拣员
  2. 负载均衡:把请求均匀分配给多个服务实例,避免某个服务太忙
  3. 认证鉴权:检查每个请求的"身份证"(token),确认身份和权限
  4. 限流熔断:像电路保险丝,流量太大时自动熔断保护系统
  5. 监控日志:记录所有经过的请求,方便排查问题

2. 动态路由是如何实现的?

答案:
动态路由就像手机导航软件:

  1. 配置中心:存储路由规则(地图数据)
  2. 监听机制:网关实时监听配置变化(路况更新)
  3. 热更新:不重启就能应用新路由规则(自动重新规划路线)

常见实现方式:

  • Spring Cloud Gateway通过RouteDefinitionRepository
  • 结合Nacos/Apollo等配置中心动态获取路由配置

三、技术实现类

1. 主流网关技术选型对比

答案:

网关类型 特点 适用场景
Nginx 性能怪兽,C语言编写 静态路由、反向代理
Spring Cloud Gateway 与Spring生态完美集成 微服务架构
Kong 插件丰富,企业级功能 API管理
Zuul Netflix老牌网关 旧系统改造

选择建议

  • 要极致性能选Nginx
  • Spring项目选Spring Cloud Gateway
  • 需要丰富插件选Kong

2. 网关如何实现高性能?

答案:
高性能网关的秘诀:

  1. 异步非阻塞:像快餐店多个取餐口,一个服务员可以同时处理多个订单
  2. 责任链模式:把处理流程拆成多个小环节,像工厂流水线
  3. 缓存机制:把常用数据(如路由规则)放内存,减少数据库查询
  4. 连接池:预先建立好到服务的连接,避免每次新建
  5. 零拷贝:减少数据在内核和用户空间之间的复制

四、高可用设计类

1. 如何保证网关自身的高可用?

答案:
保证网关高可用的"三保险":

  1. 集群部署:至少部署2个以上网关实例,像备胎
  2. 健康检查:定时体检,发现不健康的实例自动下线
  3. 流量切换:通过DNS或负载均衡器自动切换流量到健康节点

灾备方案

  • 同城多机房部署
  • 异地容灾部署
  • 灰度发布机制

2. 网关如何避免成为单点瓶颈?

答案:
避免单点瓶颈的四大策略:

  1. 水平扩展:加机器是最简单粗暴的解决方案
  2. 流量分级:像医院分急诊/普通号,优先保障核心业务
  3. 降级策略:极端情况下关闭非核心功能
  4. 缓存优化:缓存认证结果、路由信息等

五、安全防护类

1. 网关如何实现API安全?

答案:
API安全防护体系:

  1. 身份认证:检查"身份证"(JWT/OAuth2)
  2. 权限控制:RBAC模型控制访问权限
  3. 请求过滤:防SQL注入/XSS等攻击
  4. 数据加密:HTTPS传输加密
  5. 访问审计:记录所有访问日志

2. 如何防止API被恶意刷接口?

答案:
防刷接口的"组合拳":

  1. 限流算法 :

    • 令牌桶:像游乐园发快速通行证
    • 漏桶:固定速率处理请求
  2. 黑名单:封禁恶意IP

  3. 人机验证:增加验证码

  4. 业务限流:针对用户/设备维度限流

六、性能优化类

1. 网关性能优化的常见手段有哪些?

答案:
性能优化"七板斧":

  1. 异步化:使用Netty等异步框架
  2. 缓存:多级缓存路由/权限信息
  3. 压缩:Gzip压缩响应数据
  4. 批处理:合并多个请求
  5. 连接池:复用后端连接
  6. 合理超时:设置适当的超时时间
  7. 监控调优:基于监控数据持续优化

2. 如何设计网关的熔断降级策略?

答案:
熔断降级三阶段:

  1. 健康监测:统计请求成功率/延迟
  2. 熔断触发:当错误率超过阈值,像保险丝熔断
  3. 恢复试探:半开状态放少量请求测试

降级策略

  • 返回缓存数据
  • 返回友好错误提示
  • 关闭非核心功能

七、实战经验类

1. 网关灰度发布的常见方案?

答案:
灰度发布三大方案:

  1. 基于Header:在请求头带特殊标记区分流量
  2. 基于权重:按百分比分配流量到新版本
  3. 基于用户:特定用户群体访问新版本

实施步骤

  1. 准备两套网关集群
  2. 通过负载均衡控制流量比例
  3. 监控新版本稳定性
  4. 逐步扩大范围

2. 网关日志如何收集和分析?

答案:
日志处理流水线:

  1. 采集:Filebeat/Logstash收集日志
  2. 传输:Kafka作为消息队列缓冲
  3. 存储:Elasticsearch存储日志
  4. 分析:Kibana可视化分析

关键日志字段

  • 请求时间
  • 请求路径
  • 响应状态
  • 处理耗时
  • 用户标识
  • 请求参数(脱敏后)

八、架构设计类

1. 如何设计一个百万QPS的网关系统?

答案:
百万QPS网关架构要点:

  1. 分层设计:

    • LVS/Nginx做四层负载均衡
    • 网关集群做七层处理
  2. 水平扩展:无状态设计,可随意扩容

  3. 缓存优化:多级缓存减轻后端压力

  4. 异步处理:非阻塞IO提高吞吐

  5. 异地多活:多地部署避免单点故障

2. 网关如何与Service Mesh协同工作?

答案:
网关与Service Mesh分工:

  • 网关:处理南北流量(外部到内部)
  • Service Mesh:处理东西流量(服务间通信)

协作模式

  1. 网关作为统一入口
  2. 请求进入后由Service Mesh管理内部通信
  3. 网关可以集成Mesh的控制面统一管理

优势

  • 统一的安全策略
  • 一致的监控指标
  • 端到端的可观测性

你可能感兴趣的:(面试题,中间件,面试)