关于 api-gateway-patterns
为微服务系统中的 API 网关提供设计与实施指导,涵盖路由、安全、流量控制和服务组合,并附常见模式与实现的参考资料。
主要功能
- 01路由策略指导
- 02身份验证与授权模式
- 03速率限制、重试与熔断器
- 04BFF 与网关架构模式
- 05服务组合与转换
- 06实现参考资料
适用场景
- 01设计微服务 API 网关
- 02添加网关层访问控制
- 03规划弹性流量策略
- 04选择网关架构或实现方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill api-gateway-patterns安装后在 Claude Code 中输入/api-gateway-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/authentication.mdbff-pattern.mdcomposition.mdimplementations.mdrouting-patterns.mdservice-discovery.mdtraffic-management.mdtransformation.md详细介绍
API 网关模式
为微服务架构大规模实现 API 网关提供专家指导,涵盖路由、身份验证、流量管理和服务组合模式。
何时使用此技能
- 为微服务实现 API 网关基础设施
- 设计 Backend for Frontend(BFF)层
- 在网关层添加身份验证和授权
- 实现速率限制、熔断器和重试逻辑
- 设置服务发现和动态路由
- 构建 API 组合与聚合层
- 管理横切关注点(日志记录、监控、CORS)
- 评估网关解决方案(Kong、Nginx、Envoy、AWS API Gateway)
核心概念
网关职责
路由:根据路径、标头或主机将请求转发到相应的后端服务 安全:集中处理身份验证、授权和 API 密钥验证 流量管理:速率限制、熔断器、重试逻辑 组合:聚合多个服务调用,生成统一响应 转换:修改请求/响应,以优化客户端体验或适配旧系统
架构模式
单网关:所有客户端共用一个网关(简单,但可能成为瓶颈) BFF 模式:为每种客户端类型(移动端、Web、管理端)单独设置网关,并针对各自需求进行优化 GraphQL 网关:跨服务拼接 Schema,由客户端驱动数据获取 服务网格:使用 Sidecar 代理实现分布式网关模式(Istio、Linkerd)
快速参考
| 任务 | 加载参考文档 |
|---|---|
| 路由策略(基于路径、标头、主机) | skills/api-gateway-patterns/references/routing-patterns.md |
| 请求/响应转换 | skills/api-gateway-patterns/references/transformation.md |
| API 组合与聚合 | skills/api-gateway-patterns/references/composition.md |
| 身份验证与授权(JWT、OAuth、RBAC) | skills/api-gateway-patterns/references/authentication.md |
| 流量管理(速率限制、熔断器) | skills/api-gateway-patterns/references/traffic-management.md |
| Backend for Frontend(BFF)模式 | skills/api-gateway-patterns/references/bff-pattern.md |
| 服务发现集成 | skills/api-gateway-patterns/references/service-discovery.md |
| 网关实现(Kong、Nginx、Envoy、AWS) | skills/api-gateway-patterns/references/implementations.md |
实施工作流
阶段 1:需求分析
- 识别客户端类型:移动端、Web、管理端、合作伙伴
- 梳理服务全貌:列出后端服务和端点
- 定义横切关注点:身份验证、日志记录、监控、CORS
- 确定组合需求:哪些端点需要聚合?
- 制定 SLA:延迟、吞吐量和可用性目标
阶段 2:网关设计
- 选择架构:单网关、BFF 还是 GraphQL
- 选择实现方案:Kong、Nginx、Envoy、AWS API Gateway
- 设计路由规则:基于路径、标头或主机
- 规划身份验证:JWT、OAuth 2.0、API 密钥或混合方案
- 定义流量策略:速率限制、熔断器、超时
阶段 3:实施
- 搭建基础设施:部署网关实例,配置负载均衡器
- 实现路由:配置服务发现和路由定义
- 添加身份验证:JWT 验证、OAuth 集成、API 密钥管理
- 应用流量管理:速率限制、熔断器、重试逻辑
- 启用可观测性:分布式追踪、指标、结构化日志记录
阶段 4:测试与优化
- 负载测试:验证预期负载和峰值负载下的性能
- 故障注入:测试熔断器和重试逻辑
- 安全测试:验证身份验证流程、令牌验证和 RBAC 策略
- 延迟优化:缓存策略、连接池
- 监控与调优:根据实际流量调整超时和限制
最佳实践
- 集中处理横切关注点:在网关处理身份验证、日志记录和监控
- 保持网关轻量:避免复杂的业务逻辑,将其委托给服务
- 实施健康检查:监控上游服务的健康状况,移除不健康的实例
- 使用熔断器:防止故障级联,快速失败
- 实施速率限制:保护服务免受过载影响,设置分级限制
- 启用可观测性:分布式追踪、指标和结构化日志
- 对 API 进行版本管理:支持多个 API 版本,规划弃用策略
- 保障通信安全:全程使用 TLS,服务间通信使用双向 TLS
- 合理使用缓存:缓存响应,但要妥善失效
- 测试韧性:混沌工程、故障注入、负载测试
常见错误
- 在网关中实现业务逻辑:让网关专注于路由和安全,而非业务规则
- 频繁调用多个服务进行组合:上游调用过多(使用 BFF、GraphQL 或缓存)
- 单点故障:采用冗余部署,使用负载均衡器
- 未配置超时:始终设置连接和读取超时,防止请求挂起
- 忽视背压:设置队列上限,实现优雅降级
- 过度聚合:不要让网关承担过多工作(计算密集型转换)
- 监控不足:必须在网关层跟踪延迟、错误和吞吐量
- 未实施速率限制:如果不加保护,服务最终会不堪重负
- 所有操作都采用同步方式:对非关键操作使用异步模式
- 没有版本策略:破坏性变更会同时影响所有客户端
资源
- Kong:https://docs.konghq.com/gateway/latest/
- Nginx:https://nginx.org/en/docs/
- Envoy:https://www.envoyproxy.io/docs/envoy/latest/
- AWS API Gateway:https://docs.aws.amazon.com/apigateway/
- 模式:《Microservices Patterns》,作者 Chris Richardson
- 服务网格:https://istio.io/latest/docs/
- 熔断器:Martin Fowler 的 CircuitBreaker 模式
- BFF 模式:Sam Newman 的《Building Microservices》
评论
支持 Markdown