背景
抖音因架构复杂度增加、通用逻辑升级困难、冗余HTTP服务多、运维成本高、链路延迟损耗等问题,决定引入业务网关。技术挑战包括高并发稳定性要求(5000w+ QPS峰值)、高运维要求、低接入成本、统一治理、前后端解耦、架构灵活性高(多端、多版本)、端到端协作效率等。
技术挑战
高并发稳定性、高运维要求、低接入成本、统一治理、前后端解耦、架构灵活性、多端多版本支持、端到端协作效率。
部署模式选择
对比中心化独立部署(单点、隔离性差)和分布式sidecar部署(去中心化、极高可用性),选择分布式部署模式,实现极高可用性。
架构设计思路
- 分布式部署:网关与Go服务同Pod,UDS跨进程通信;数据链路为LB -> HTTP Ingress -> 网关 -> Go服务;mesh_agent依次启动HTTP Ingress、网关进程、Go服务进程。
- 中心化部署:网关与Go服务独立部署,跨网络通信;数据链路为LB -> HTTP Ingress -> 网关 -> HTTP Ingress -> Go服务;HTTP/RPC Egress负责服务发现和负载均衡。
网关逻辑执行流程
- Router:HTTP协议层。
- Loader:通用逻辑、扩展能力。
- Protocol Conversion:HTTP -> Thrift RPC协议转换。
- BFF/DSL:BFF接口聚合、数据编排、字段裁剪。
- Render:响应数据序列化。
通用逻辑托管/Loader
实现通用逻辑与业务逻辑、服务框架解耦,支持灵活变更和热升级,高效API治理。案例:全场景身份注入与透传。
BFF/GraphQL
- BFF适配层:接口聚合、数据编排、字段裁剪。
- 基于GraphQL的网关BFF实现:Thrift IDL -> GraphQL schema;GraphQL引擎与Query表达式;GraphQL的版本管理。
- 一个例子:GraphQL Query与API Endpoint。
API Workflow
- API设计优先:IDL设计节点解耦研发流程,规范IDL与流程约束,提高API变更效率和稳定性。
- 端到端协作效率:串联研发活动节点,提供高效流畅的研发工作流,标准化和在线化研发流程,提升效率和质量。
业务案例:抖音视频Feed场景
- 场景:抖音刷视频接口,服务端领域数据 vs 客户端展示数据,P0级接口,稳定性要求极高。
- 通用逻辑:安全风控、容灾兜底、结果采样校验等。
- BFF:服务端Thrift RPC(DO)-> 客户端PB HTTP(DTO),字段重新编排与裁剪。
下一步规划
- API治理平台:API网关向API治理平台演进,实现API信息中心、API字段治理与流程卡点、隐私合规等。
- API研发平台:API Workflow向研发平台演进,打通API&RPC交付全生命周期,包括开发环境、代码生成、调试等。