美团自研API网关服务的探索与实践-陈充泽_65页_21mb
报告摘要
Shepherd: 美团自研API网关服务的探索与实践
核心内容
Shepherd 是美团自研的 API 网关服务,旨在提升研发效率、降低沟通成本和资源利用率,同时保障 API 的高可用性和安全性。它支持多种协议(HTTP、RPC、MAPI、PROTOBUF),具备丰富的功能组件(如鉴权、限流、熔断、缓存等)和灵活的扩展能力,能够满足不同业务线的需求。
主要观点
- 提升研发效率:通过配置方式开放内部服务接口,减少重复开发与维护工作。
- 降低沟通成本:自动生成 API 文档、SDK 和 Mock 数据,方便前后端联调。
- 提升资源利用率:集中管理 API 资源,业务人员无需单独申请配置与机器资源。
- 保障高可用性:通过多维度的稳定性设计,包括业务隔离、请求处理异步化、弹性伸缩、灰度发布等。
- 支持自定义扩展:提供自定义组件机制,支持不同业务的特殊需求,如鉴权、参数校验、结果处理等。
- 支持服务编排:可聚合多个服务调用结果,提升复杂业务场景下的处理能力。
关键信息
接入层定位
Shepherd 在美团的 API 接入层中承担着服务治理、流量控制、安全验证等关键职责。
业务接入规模
- 集群数量:90+
- 分组数量:1000+
- API 数量:17000+
- 日调用量:110亿+
功能亮点
- API 全生命周期管理:支持从创建、配置、发布到监控的全流程管理。
- 协议转换与服务调用:支持 HTTP 到 RPC 的参数映射和转换。
- DSL 生成:通过 JSON 模板自动生成 DSL,简化开发流程。
- 灰度发布:支持多种灰度策略,实现灵活的发布与验证。
- 日志监控:提供 RAPTOR 监控系统,支持错误排查与性能分析。
- 安全控制:支持 SSO 企业认证、EPassport 商家鉴权、Passport 用户鉴权、请求签名、访问控制等。
技术演进
- 2018年9月:MVP 版上线,支持基础能力与 RPC 调用。
- 2018年12月:支持 API 全生命周期管理与服务编排。
- 2019年3月:自动生成 DSL。
- 2019年10月:支持 HTTP 服务与弹性伸缩客户端 SDK。
- 2020年5月:支持自定义组件动态加载与顺序调整。
- 2020年8月:支持监控告警可配置到自定义异常粒度。
- 2020年12月:支持快速创建 API(RPC、HTTP、Nest API)。
架构设计
- 控制面:负责 API 的全生命周期管理、配置管理、服务编排等。
- 数据面:负责 API 请求的路由、参数转换、服务调用、结果处理等。
- 扩展性:支持功能组件化、动态组装、Pipeline 处理、按需加载。
- 稳定性:支持业务隔离、请求处理异步化、集群部署、弹性伸缩、灰度发布等。
最佳实践
快速创建 API
- 创建 API 分组
- 定义 API 基本信息(如分组名称、集群 Appkey、API 公共前缀等)
- 定义前端请求(如路径、方法、参数等)
- 定义后端服务(如服务别名、Remote Appkey、方法名等)
- 定义返回结果(如 DSL 表达式、参数映射规则等)
错误排查
- 使用 RAPTOR 监控系统,查看 API 请求参数、响应结果、后端入参、返回值等。
- 日志中心支持通过 TraceId、分组名、API 名 等关键字进行检索。
Web 服务灰度迁移
- 对于非核心 API,可使用 Oceanus 的灰度发布功能进行迁移。
- 对于核心 API,可通过 Shepherd 的灰度发布能力 实现更细粒度的控制与验证。
未来规划
-
云原生架构演进
- 简化接入网关步骤,提升业务研发效率
- 减小服务端 WAR 包大小,提升安全性和稳定性
- 支持 Serverless 弹性,降低成本,提高资源利用率
-
组件市场
- 构建自定义组件市场,实现组件共享与复用
- 示例组件包括:签名验证、数据加密、用户信息获取、登录态校验等
-
静态网站托管
- 提供通用的静态网站托管解决方案
- 支持便捷、稳定、高扩展性的托管服务
-
反爬能力集成
- 防止外部恶意爬取敏感数据
- 提高数据安全性,防止信息泄露
总结
Shepherd 是美团在 API 网关领域的重要实践成果,通过统一的 API 管理、强大的扩展能力、灵活的灰度发布机制和完善的监控体系,有效提升了 API 的研发效率与稳定性。未来,Shepherd 将继续向云原生架构演进,构建组件市场,集成反爬能力,进一步完善其作为 API 网关的生态与功能。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载