字节跳动云原生微服务多运行时架构实践
云原生微服务架构演进与思考
- 服务架构演进:从单体架构到微服务架构,再到云原生微服务架构,主要驱动力是业务逻辑复杂性提升、业务规模增长和合作团队增加。
- 云原生微服务架构优缺点:
- 优点:弹性计算资源、原生微服务基础能力、Service Mesh统一流量调度、解决多语言RPC治理和升级问题。
- 缺点:多语言SDK问题依然存在,通用服务依赖仍需显式接入。
从微服务架构到多运行时架构
- 多运行时微服务架构:在云原生微服务架构基础上,进一步下沉通用能力,复用Service Mesh基础能力,实现更灵活的流量模型。
字节多运行时架构的应用案例
- 四种流量模型:
- 主路径运行时:分布式网关,解决运维复杂、隔离性差、成本高的问题。
- 辅路运行时:分布式风控,通过sidecar实现无感知接入和灵活变更。
- 旁路运行时:A/B测试,轻量接入、低延迟、多语言维护成本低。
- 独立运行时:流量镜像,按需异步处理流量录制,无侵入。
- 案例总结:
- 优势:安全、灵活、可控变更,减轻多语言SDK维护,轻量无感接入。
- 劣势:开发运维复杂,业务资源存在竞争。
字节云原生多运行时ByteRuntime的诞生
- 目标:将业务通用能力作为云原生标准能力提供。
- 路径:标准化、平台化Service Mesh的开发和运维能力。
ByteRuntime架构解析
- 分层架构:Compute Platform、Runtime Framework、ByteMesh、ByteRuntime、SDK-based Application。
- 主要能力:sidecar framework、调试/灰度治理、流量编排、安全升级、流量治理、性能优化、观测诊断。
- 架构理念:标准化、平台化。
- 核心模块:Pilot、Sidecar、治理、运维。
- 与DAPR对比:场景不同、实现侧重点不同,可兼容。
ByteRuntime技术解析
- 开发阶段:sidecar framework,主要模块包括业务逻辑、通用工具、共享内存、UDS接入/监听、组件xDS/CPv2、Auth服务状态热重启、编译优化、日志收集。
- 上线阶段:
- 流量编排:Mesh Ingress、Janus、miniMesh Pilot、ByteRuntime发布与管理平台。
- 发布与管理平台:资源元信息管理、版本管理、服务信息管理、缺陷管理、多粒度升级、多模式升级、升级管理、版本锁定、版本分布、升级效率统计报表、服务变更记录、风险检测、权限管理。
- 运行阶段:性能优化,基于共享内存通信、全静态编译+PGO、polling mode runtime、高性能JSON库(bytedance/sonic)。
- 优化进展:间接指令跳转优化,线上收益提升25%。
ByteRuntime落地实践
- 落地数据:
- sidecar类型分布。
- 平均升级周期:3~4周 vs 半年。
- sidecar数量:30+。
- 覆盖数:400w+ pod。
- 发布与运维平台(MCP):将微服务作为sidecar的案例,背景、优势、资源损耗、独立发布、上线时间对比。
- 兼容DAPR sidecar:Mesh Pilot、DAPR sidecar、Mesh Ingress、Mesh Egress、Service POD。
总结
字节跳动通过多运行时架构ByteRuntime,实现了业务通用能力的标准化和平台化,提升了流量模型的灵活性,优化了开发、上线和运行阶段的性能,并通过与DAPR的兼容性,进一步扩展了应用场景。落地实践表明,该架构在资源损耗、升级周期、覆盖范围等方面均有显著优势。