AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

纯干货|聊一聊大促活动背后的技术:火山引擎边缘云 CDN/DCDN/GA

  • 2024-01-23
    北京
  • 本文字数:4294 字

    阅读完需:约 14 分钟

纯干货|聊一聊大促活动背后的技术:火山引擎边缘云 CDN/DCDN/GA

去年 12 月 12 日,“抖音商城双 12 好物节”正式结束。据了解,双 12 期间,抖音电商推出了超值购、秒杀等多个优价频道和多个类目的主题榜单,让有消费需求的用户更高效地发现高性价比好物。除了货架场景,“抖音商城双 12 好物节”还发力重点达人直播间、好物直播间等内容场域,通过电商优质内容为商家和达人创造生意增量。



“抖音商城双 12 好物节”的背后是大流量、高并发对基础技术提出的挑战,保障大促期间平台的平稳运行、用户流畅的购物体验尤为重要。在经受了双十一海量流量考验的基础上,火山引擎 CDN/DCDN 和 GA 作为抖音静态/动态/长连接业务流量入口,保障了大促期间抖音电商平台的平稳运行。


下图为抖音客户端视频业务/动态接口/长连接业务主要流量架构图,客户请求通过火山引擎内容分发网络(CDN)、全站加速(DCDN)、全球加速(GA)回源到中心网关,转发到对应的业务服务。



技术架构


火山引擎 CDN/DCDN 和 GA 利用丰富的网络资源,依托边缘云全球网络(含到主要地区的合规专线)降低网络抖动、时延和丢包,显著提升传输效率,结合自研的传输优化、智能缓存、动态路由、安全防护等能力,为用户提供安全、稳定的一站式加速服务,提升用户访问体验。


  • 火山引擎内容分发网络产品 CDN (Content Delivery Network)提供稳定、弹性、高性能的全球内容分发服务。

  • 火山引擎全站加速产品 DCDN (Dynamic Content Delivery Network) 是一款在 CDN 静态内容加速服务的基础上,提供纯动态及动静态混合内容加速的服务。

  • 火山引擎全球加速产品 GA(Global Accelerator)是一款实现全球范围网络就近接入和跨地域部署的四层网络加速服务。


火山引擎 CDN/DCDN/GA 资源分布


火山引擎 CDN/DCDN/GA 通过抖音集团业务和规模化 ToB 业务的打磨,已经形成了一套完备且具备规模商业化能力的系统。


  • 资源分布:全球 2500+加速节点,国内实现三大运营商本省覆盖,海外覆盖了主要国家和地区;

  • 丰富协议:支持 HTTP(S)、QUIC、WebSocket、TCP、UDP 协议接入;

  • 智能调度:保证客户就近接入,实现大规模 QPS 的全网调度;

  • 智能路由:自研智能路由系统,保证请求最优路径回源,提升用户体验;

  • 传输优化:通过协议优化、回源预建连、公网路由择优等策略,提升动态 API、上传、下载等各个场景的传输速度;

  • 安全防护:支持大容量的 DDoS 防护、CC 防护、Web 漏洞防护,全链路 HTTPS(支持国密协议),确保数据传输安全;

  • 稳定性:通过大规模 QPS 的验证,稳定性经过充分验证,经历了抖音春晚红包、抖音世界杯直播、抖音电商双十一等大型活动考验。


火山引擎 CDN/DCDN/GA 网络拓扑


解决方案


火山引擎 CDN/DCDN/GA 作为抖音业务动静态流量入口,在双 12 期间,不仅要承载常态流量,还需要应对大促带来的洪峰流量冲击,这对火山引擎 CDN/DCDN/GA 的容量、调度能力、容灾能力都提出了更高的要求。对此,本文从 5 个方面介绍应对双 12 突发流量时火山引擎 CDN/DCDN/GA 提供的解决方案。


动态扩容


为了解决大促高峰时间段的资源不足问题,火山引擎 CDN/DCDN/GA 采用动态扩容技术。双 12 带来的流量是脉冲式流量,持续时间短,峰值高。虽然火山引擎 CDN/DCDN/GA 常态下会保留一定的流量冗余,但依然无法应对大促带来的突发流量。如果想要通过短时间内完成大量边缘节点扩容来解决这一问题,不仅操作难度极大,而且仅为活动进行大规模扩容,也会造成资源浪费。因此,如何动态扩容以应对短时间洪峰流量,是火山引擎 CDN/DCDN/GA 产品在双 12 遇到的主要挑战之一。


火山引擎 CDN/DCDN/GA 使用火山引擎边缘云统一技术底座,主要流量运行在边缘云容器/虚拟机上。因此可以在活动正式开始前,充分利用边缘容器平台的弹性能力,快速创建出一批新资源,完成资源动态扩容,满足活动期间的容量需求。在活动结束后,将扩容资源释放,实现整体容量的快速扩缩。


流量调度


为了应对突发流量,火山引擎 CDN/DCDN/GA 引入“活动”流量模型。常态下,火山引擎 CDN/DCDN/GA 会根据业务实时以及最近几天的 QPS/带宽/连接数进行调度,但面对双 12 带来的突发流量,这种调度模式显然无法适应。


为解决这个问题,火山引擎引入了“活动”流量模型。假设活动期间各个地区的流量分布与常态流量一致,根据业务预估的总 QPS/带宽/连接数,按比例分配到不同地区。在进行调度时,将预估的活动流量一并纳入考虑,因此调度后的节点能够承载活动突发流量。同时会根据前一天的流量值修正下一次活动流量模型。


引入“活动”的流量模型


自保能力


为了应对容量风险,火山引擎 CDN/DCDN/GA 具备熔断能力实现自保。资源和调度已具备应对预估峰值的能力,但业务预估流量跟真实流量很可能存在偏差。如果业务预估比真实流量低,突发流量很有可能超出 CDN/DCDN/GA 服务上限,当出现短时间的可用性降低、请求耗时增加后,会触发客户端不断重试,进一步加剧服务压力,极有可能造成线上整体的雪崩,影响产品请求。


因此,为了应对极端场景的风险,CDN/DCDN/GA 需具备熔断能力,当请求量达到一定阈值后,通过熔断降低系统压力,保证线上主要业务流量的稳定性。


活动期间,主要有以下容量风险:


  • CPU 资源风险:大量客户端冷启,新建连接(CPS)突增,抖音支持全链路 HTTPs,因此冷启客户端会进行大量的 SSL 握手,消耗 DCDN 节点大量 CPU 资源;

  • QPS 突增风险:电商 API 接口请求量(QPS)突增,超过 CDN/DCDN/GA 处理能力上限,造成服务崩溃;

  • 请求堆积风险:随着 QPS 突增,活动业务后端服务压力增加,响应耗时变大,造成大量请求堆积,拖垮 CDN/DCDN/GA 和业务服务。


为了应对上述风险,火山引擎 CDN/DCDN/GA 产品引入多维度熔断能力:


  • CPS 熔断能力:针对最耗费 CPU 的 SSL 握手,支持针对单域名和全局 SSL 握手限流能力,当单个域名的 SSL 流量超出阈值后,将拒绝新 SSL 请求,避免打爆 CPU;

  • QPS 熔断能力:当活动域名的 QPS 超过设定阈值后,拒掉新请求,避免过多请求回源,保护自身和源站服务;

  • 回源熔断能力:当单个域名同时回源的请求达到一定阈值后,新的回源请求会在 CDN/DCDN/GA 直接熔断,响应异常码,避免业务服务响应变慢后,请求堆积拖垮业务后端服务。


上述熔断能力,均支持单域名和全局粒度。


  • 单域名熔断:主要针对活动域名配置,避免活动域名突增影响全局流量。

  • 全局熔断能力:主要是保护 DCDN 服务,当超过 DCDN 服务能力上限后,熔断一部分流量,保证大部分流量可正常服务。


流量压测


具备资源、调度、熔断能力后,还需要在活动之前对上述功能进行验证。对此,火山引擎 CDN/DCDN/GA 与抖音客户端合作,进行全链路压测,利用真实的客户端请求,模拟活动期间洪峰,验证全链路的处理能力。

流量压测曲线


加速性能


性能接入是加速产品最重要的衡量指标之一。如何更好的提升性能,也是火山引擎 CDN/DCDN/GA 产品持续探索的方向,经过多年的打磨,沉淀了经验,以下是火山引擎 CDN/DCDN/GA 产品在性能优化方面的主要策略。


智能调度


移动端用户通过 4G/5G/WIFI 无线网络访问源站应用,信号不稳定,如果直连源站,RTT 较长,按照主流的基于 ACK 反馈或超时来判断丢包的拥塞控制算法,需要很长时间才能感知到丢包,再进行重传,导致时延非常大,如果通过更近的接入点上车,移动端和节点之间 RTT 更短,就可以更快感知到丢包,更快进行重传,降低时延。

火山引擎 CDN/DCDN/GA 自研的智能调度算法会基于用户分布情况,动态实时计算出接入质量更优的节点,例如在某城市,会根据用户分布的集中度,选择离大多数用户更近的接入点上传,相比传统的 DNS 调度能更好的实现就近接入,提升用户体验。


智能路由


广域网网路存在复杂的运营商和地域限制策略,经常出现绕路、限速等情况。针对此问题,火山引擎自研的智能选路系统可在复杂的广域网中实时选择最优路径回源,保障业务的最佳体验。智能路由解决的是多目标路径规划问题,需要兼顾性能、容量等,重点是归一化目标函数设计。火山引擎

CDN/DCDN/GA 综合考虑了链路质量、节点水位、亲缘性等目标,同时根据不同的业务场景(API、上传、下载等)采用不同权重值,保证各种业务场景按照最佳链路回源。



传输优化


  • 协议栈优化:回源链路采用火山引擎自研的 TTCP 协议栈,TTCP 具备内核插件化能力,已在火山引擎 CDN/DCDN/GA 全网部署,支持域名粒度控制,可根据业务场景(API、上传、下载)实现精准化的参数控制和自适应拥塞控制算法,保证最佳的访问体验。同时 TTCP 实现了平台化的管理,利用采集现网数据通过大数据实时分析决策动态的调整系统参数和拥塞控制算法,提升访问体验。


  • 连接优化:火山引擎 CDN/DCDN/GA 产品为提升访问性能、降低中心服务的压力,采取了“预建连”优化手段。节点在没有真实请求时,主动与源站建立一批连接,维护在连接池内,当突发业务请求到达,回源时可直接复用连接,提高访问性能。通过抖音集团内部业务测试显示,采用预连接策略后,首包时间耗时从 115ms 降低到 54ms,降低了 53%以上,效果明显。


图片 9.png


图片 8.png


应用案例


火山引擎 DCDN 承载了双十一期间抖音业务主要 API 流量,在双十一的洪峰挑战中保证了用户最佳购物体验,性能、稳定性得到了充分验证。通过客户端监测数据,火山引擎 DCDN 活动期间服务稳定,且加速性能达到行业领先水平。


1. 抖音短视频:抖音短视频核心 Feed 流 API 请求通过开启 QUIC 协议,采用智能路由、预建连等优化策略,网络耗时均值降低 7%以上,长尾耗时降低 17%以上,人均播放时长等核心业务收益显著正向。



2. 抖音电商:结合边缘高防调度以及边缘 WAF 能力,解决 API 防护、 DDoS 和 CC 攻击、保护内容不被恶意爬取、劫持、篡改等,通过自研的传输优化、智能缓存、动态路由等技术提供了纯动态及动静态混合内容的加速服务,为用户提供更优质的访问体验。



展望未来


火山引擎 CDN/DCDN/GA 自上线以来,通过字节内部大规模 QPS、亿级并发连接数的验证,经历了双十一、春节活动、世界杯等大型活动考验,经过多年的打磨,性能、稳定性达到业内领先水平,沉淀了典型应用场景的加速解决方案。火山引擎 DCDN 和 GA 先后于 2021 年和 2022 年正式 ToB,把服务抖音业务的技术积累提供给更多的外部客户。


下一步,火山引擎 CDN/DCDN/GA 会继续进行深度优化,持续降低访问时延,比如在加速网络内部使用基于 UDP 的私有协议,针对动态 API、上传、下载场景使用更加自助可控的丢包检测和拥塞控制算法,另外结合端上的能力,针对时延敏感性业务,比如游戏场景联动火山引擎游戏加速解决方案 GNA 支持全链路的加速能力,开启 FEC、双通道、网络检测能力等,为用户提供极致性价比的加速服务。


2024-01-23 14:233872

评论

发布
暂无评论

详解ConCurrentHashMap源码(jdk1.8)

Jeremy Lai

ConcurrentHashMap 源码阅读

中国视频云进入“出海”时代,腾讯云音视频发布海外专门品牌及新产品

科技热闻

阿里云ECS后台CPU占用100%,top却找不到

Jeremy Lai

cpu 100% 阿里云;

小程序正式版报错600002 url not in domain list

Jeremy Lai

小程序

Seata 环境搭建

Jeremy Lai

分布式事务 seata

Web3时代到来,腾讯云助力产业提效和互联网创新

科技热闻

模拟HashMap冲突

Jeremy Lai

hashmap 哈希冲突

Java通过反射注解赋值

Jeremy Lai

解决问题 java注解

Spring Cloud 整合 nacos 实现动态配置中心

Jeremy Lai

nacos 动态配置

融云&艾瑞发布《政企数智办公平台行业研究报告》,解读数智化时代的办公新趋势

融云 RongCloud

即时通讯 办公 数智化

干货 | 企业如何快速采集分析日志?

嘉为蓝鲸

运维 嘉为蓝鲸

SpringBoot整合RabbitMQ实现六种工作模式

Jeremy Lai

spring-boot Rabbit MQ

Centos7安装Nginx教程,一步安装http和https

Jeremy Lai

nginx Linux安装

字节一面:说说TCP的三次握手

Jeremy Lai

三次握手 TCP协议

EMQ助力阿里云飞天洛神云网络构建新一代“亿级并发、百万级吞吐”NLB网络型负载均衡系统

EMQ映云科技

阿里云 物联网 IoT mqtt 12 月 PK 榜

手把手教你用Java获取IP归属地

Jeremy Lai

IP地址

详解HashMap源码解析(上)

Jeremy Lai

HashMap底层原理

详解HashMap源码解析(下)

Jeremy Lai

HashMap底层原理

干货 | 五大关键点,帮助企业快速构建可落地的IT服务管理体系

嘉为蓝鲸

运维 嘉为蓝鲸 IT服务

腾讯云升级云端 IDE Cloud Studio,助力开发“化繁为简”

科技热闻

嘉为蓝鲸WeOps荣获“2022年度行业科技创新产品”

嘉为蓝鲸

运维 嘉为蓝鲸 #WeOps

详解MySQL隔离级别

Jeremy Lai

隔离级别

后端程序员实现一个IP归属地的小程序

Jeremy Lai

PID和TID的区别

源字节1号

软件开发 前端开发 后端开发 小程序开发

商务部研究院信用所、启信宝联合发布《中国商务信用发展指数报告(2022)》

合合技术团队

人工智能 大数据 商业

MySQL更新锁表超时 Lock wait timeout exceeded

Jeremy Lai

事务隔离 Mysql死锁

腾讯发布数字政务核心产品体系,多方位助力政府数字化转型

科技热闻

应用瓴羊Quick BI数据分析,实时掌控企业运营数据

对不起该用户已成仙‖

超简单的CDH6部署和体验(单机版)

程序员欣宸

大数据 hadoop CDH 12月月更

SpringBoot快速整合通用Mapper

Jeremy Lai

通用Mapper spring-boot

深入理解Redis 数据结构—字典

Jeremy Lai

字典 redis 底层原理

纯干货|聊一聊大促活动背后的技术:火山引擎边缘云 CDN/DCDN/GA_字节跳动_火山引擎_InfoQ精选文章