51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计一个API网关,用于“大连海事就业”平台处理来自不同海事企业的招聘API请求。请说明网关的功能(如负载均衡、认证授权、限流)、技术选型(如Nginx、Kong),并举例说明如何处理跨域请求(CORS)。

大连海事就业沃尔沃生产储备人才(实习生)难度:中等

答案

1) 【一句话结论】设计API网关时,以Kong(基于Nginx的插件化网关)为核心,集成加权轮询负载均衡、OAuth2+API密钥双认证、令牌桶限流,通过CORS预检处理跨域,确保“大连海事就业”平台招聘API请求的高效、安全与可扩展。

2) 【原理/概念讲解】API网关是统一请求入口,负责请求分发与安全控制。

  • 负载均衡:将请求分发到后端服务器,避免单点过载。加权轮询算法(类比:交通警察根据道路拥堵情况,优先分配到空旷道路的车辆,高负载服务权重低,减少其接收的请求)。
  • 认证授权:验证请求者身份。OAuth2授权码流程(企业申请授权码→用户授权→获取访问令牌→请求时携带令牌,类似企业申请通行证,用户授权后获得通行证,请求时出示);API密钥(企业申请密钥,请求头携带,网关验证密钥,类似企业申请专属钥匙,请求时出示)。
  • 限流:控制请求频率,防止恶意攻击。令牌桶算法(每秒生成固定令牌,请求消耗令牌,超限返回429,类似加油站限速,每秒最多加油100次,超限拒绝)。
  • CORS:解决跨域问题。预检请求(OPTIONS方法)返回允许的请求头和方法,正常请求返回实际响应(类似跨区域通行,先检查是否允许通行,再决定是否进入)。

3) 【对比与适用场景】

对比项NginxKong
定义轻量级反向代理,支持基础负载均衡基于Nginx的开源API网关,插件系统
特性简单高效,配置灵活,适合基础负载均衡插件扩展(认证、限流、监控),支持复杂策略
使用场景简单负载均衡,轻量级API管理(如小型招聘系统)复杂API网关,需要认证、限流、插件扩展(如企业用户多,需OAuth2,限流防攻击)
注意点需手动配置插件,功能扩展性有限;负载均衡算法需额外配置插件可能增加复杂度,需合理选择插件,避免过度配置(如过度配置认证插件导致性能下降)

4) 【示例】以Kong为例,配置加权轮询、OAuth2认证、令牌桶限流及CORS预检,并补充HTTPS配置(假设证书路径为/ssl/cert.pem)。

# 1. 负载均衡(加权轮询)
upstream backend {
    servers:
      - 192.168.1.1:8080 weight=3; # 企业A服务器,高负载
      - 192.168.1.2:8080 weight=2; # 企业B
      - 192.168.1.3:8080 weight=1; # 企业C
    health_check path=/health check_type=HTTP
}

# 2. 认证插件(OAuth2)
plugins:
  - name: oauth2
    config:
      client_id: "enterprise-client"
      client_secret: "secret-key"
      token_url: "https://auth.example.com/token"
      scopes: "read write"
      grant_type: "authorization_code"

# 3. 限流插件(令牌桶)
plugins:
  - name: rate-limiting
    config:
      limit: 100 # 每秒请求数
      period: 1s

# 4. CORS插件
plugins:
  - name: cors
    config:
      allow_origin: "*"
      allow_methods: "GET,POST,PUT,DELETE,OPTIONS"
      allow_headers: "Content-Type,Authorization"

# 5. HTTPS配置(SSL插件)
plugins:
  - name: ssl
    config:
      cert_file: /ssl/cert.pem
      key_file: /ssl/key.pem

routes:
  - paths: ["/api/recruitment"]
    protocols: [http, https]
    plugins:
      - name: oauth2
      - name: rate-limiting
      - name: cors
      - name: ssl
    services:
      - service: backend

5) 【面试口播版答案】面试官您好,设计API网关时,核心是构建统一入口处理招聘API请求。首先,功能上需负载均衡(采用加权轮询算法,根据后端服务器负载分配权重,比如高负载的企业服务器权重设为3,避免其过载)、认证授权(结合OAuth2授权码流程,企业申请授权码后用户授权获取访问令牌,请求时携带;同时支持API密钥,企业申请密钥后请求头携带,网关验证)、限流(使用令牌桶算法,每秒100请求,超限返回429并附带重试时间)。技术选型推荐Kong,因为它基于Nginx,支持插件扩展,能集成复杂功能。跨域处理上,通过CORS插件预检请求(OPTIONS方法),返回允许的请求头和方法,正常请求返回实际响应。这样能确保平台安全高效处理招聘API请求,支持高并发和不同企业的需求。

6) 【追问清单】

  • 问题1:后端服务故障时如何处理?
    回答要点:通过健康检查机制,故障时自动剔除该服务,故障转移至其他正常服务,确保请求不中断。
  • 问题2:认证授权具体流程是怎样的?
    回答要点:OAuth2授权码流程,企业申请授权码→用户授权→获取访问令牌→请求时携带令牌;API密钥则是企业申请密钥后,请求头携带,网关验证密钥有效性。
  • 问题3:限流策略如何应对超限后的请求?
    回答要点:令牌桶算法,超限返回429错误,并在响应头添加Retry-After字段,指示重试时间(如1分钟内不要重试)。
  • 问题4:跨域请求中预检请求的响应如何处理?
    回答要点:预检请求返回CORS头(如Access-Control-Allow-Methods: GET,POST,OPTIONS等),状态码204,前端根据此信息判断是否发送实际请求。
  • 问题5:如何监控API网关性能?
    回答要点:集成Prometheus+Grafana,监控请求量、延迟、错误率、限流次数等指标,实时观察网关状态。

7) 【常见坑/雷区】

  • 忽略加权轮询的权重配置,导致请求分配不均,高负载服务过载。
  • 认证密钥明文存储,导致密钥泄露,企业身份被冒用。
  • 限流参数设置过松,无法防止恶意攻击;或过严,影响正常业务请求(如企业招聘活动期间流量激增,限流导致正常请求被拒绝)。
  • CORS预检请求处理不正确,导致前端跨域失败,如未返回允许的请求头(如Access-Control-Allow-Headers)。
  • 未考虑后端服务版本升级时的兼容性,新版本接口与网关配置冲突(如后端接口新增参数,网关未更新验证逻辑)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1