揭秘字节跳动内部流量调度与容灾实践【上】

摘要:在字节跳动,平衡超大规模的稳定性、性能与成本,是一系列产品共同面临的挑战,其中, Trafficroute GTM 起到了不可忽视的作用。Trafficroute GTM 承载了字节跳动亿级流量、覆盖了大规模场景,是一款基于 DNS 的流量路由服务,我们将通过两期文章,揭开秘字节跳动如何通过 Trafficroute GTM 解决以上挑战,实现高效流量管理!​

本文为上期,主要介绍基于TrafficRoute GTM 的GEO-基础路由模式进行自定义流量编辑排,主要内容为:

  • TrafficRoute GTM介绍

  • TrafficRoute GTM的GEO-基础路由模式的能力

  • 通过流量编排实现同城多活、多CDN调度、CDN回源调度等经典架构及业务在稳定性、性能、成本等方面的收益

下期预告:下期我们将介绍TrafficRoute GTM的Perf-智能路由模式,怎么通过它实现流量智能调度,流量期待。

面临超大规模流量时,平衡良好的稳定性、性能、成本,能够保证用户在访问服务时获得流畅、快速且可靠的体验,这提高了用户满意度和粘性关键。TrafficRoute GTM 为基于 DNS 的业务提供的全球流量负载均衡、智能调度、自动容灾服务,可以帮助业务提升连续性、实现资源优化、获取更多竞争优势。

1.火山引擎 Trafficroute GTM 简介

火山引擎 Trafficroute GTM 是基于 DNS 的流量路由服务。它依托全球 1100+ 各地点搜索节点,构建出强大的网络质量采集能力,实现了对“端边云”全链路流量的质量采集,从而能够根据APP应用的实时访问质量、节点负载和健康状况做出动态的流量调度。

此外,Trafficroute GTM 还提供灵活的策略调度,其中 GEO-基础路由功能丰富,包括负载均衡、会话粘性和故障迁移等特性。而 Perf-智能路由则在基础路由的基础上,进一步提供多种性能优先级和负载反馈等智能调度能力,满足更高层次的调度需求。​

图片

一图看懂 TrafficRoute GTM

以字节跳动内部业务中,通过对流量路由GTM能力的合理运用,落地了同城多活、多云混合等经典架构,也落地了边缘下沉、边缘计算x中心云等大规模场景的最佳实践。

2.GEO-基础路由,实现流量自定义编排

TrafficRoute GTM 的 GEO 基础路由赋予用户灵活的流量管理能力,用户可根据具体业务需求,如负载均衡、就近接入、多自定义活/灾备等,路由调度策略,通过资源(池地址)编排、健康检查编排、路由(调度)规则编排等能力,打造个性化的流量调度与容灾解决方案。

APP 流量调度在保障服务稳定、提升用户体验方面至关重要。 ### 原理 在面临超大规模流量时,平衡好稳定性、性能、量、成本,能确保用户在访问 APP 服务时获得流畅、快速且可靠的体验,这对于提高用户满意度和粘性至关重要。APP 流量调度的核心目标是保障服务的连续性和稳定性,优化资源利用,提升用户体验。例如 TrafficRoute GTM 为业务提供基于 DNS 的全球流量负载均衡、智能调度、自动服务,可以帮助业务提升连续性,实现资源优化,获取更多竞争优势 [^3]。 ### 方法 - **TrafficRoute GTM 流量管理**:TrafficRoute GTM 的 GEO 基础路由赋予用户灵活的流量管理能,用户可根据具体业务需求,如负载均衡、就近接入、多自定义活/备等,制定路由调度策略,通过资源(池地址)编排、健康检查编排、路由(调度)规则编排等能,打造个性化的流量调度解决方案 [^2]。 - **同城**:同城适用于距离较近的场景,包括同城多个机房、几个相邻的自建机房通过流量转发组成“同城/区域”等情况,支持通过主备(冷、热备)、双活(多活)等模式实现同城情况下的,典型例子就是公有云同城内部的若干机房之间的 [^4]。 ### 策略 - **负载均衡策略**:通过 TrafficRoute GTM 等工具,将 APP 流量均匀分配到多个服务器或服务节点上,避免单个节点负载过高导致性能下降或服务中断,从而实现负载均衡,提升整体服务的稳定性和处理能 [^2][^3]。 - **就近接入策略**:依据用户的地理位置信息,TrafficRoute GTM 可以将用户的 APP 流量引导至距离最近的服务器或服务节点,减少网络延迟,提高用户访问速度和体验 [^2]。 - **活/备策略**:用户可以根据业务需求制定多自定义活/备策略,当主服务节点出现故障时,能够快速将 APP 流量切换到备用服务节点,确保服务的连续性 [^2]。 ```python # 示例代码:K8S 集群调度策略(部分体现流量调度相关思想) apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy-with-node-affinity spec: replicas: 2 selector: matchLabels: app: myapp template: metadata: name: myapp-pod labels: app: myapp spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: # 节点软亲和性 - weight: 60 preference: matchExpressions: - {key: zone, operator: In, values: ["foo"]} - weight: 30 preference: matchExpressions: - {key: ssd, operator: Exists, values: []} containers: - name: myapp image: ikubernetes/myapp:v1 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值