性能提升20%,字节跳动HTTPDNS从中心下沉到边缘

本文介绍了HTTPDNS服务从中心迁移至边缘详细的落地过程。主要内容为:

  1. HTTPDNS下沉边缘实践遇到的挑战,包括服务放置、流量调度

  2. HTTPDNS下沉边缘解决方案

  3. 从性能、成本出发,谈谈HTTPDNS下沉边缘后的收益

传统的DNS流程中,客户端基于UDP协议向Local DNS服务器发送DNS查询请求,这个过程中会存在缓存刷新不可控、DNS劫持、解析结果跨网、解析超时等风险,近年来,HTTPDNS解决方案逐渐兴起。HTTPDNS是面向多端应用(移动端APP,PC客户端应用)的域名解析服务,通过使用HTTP或HTTPS协议替代传统的UDP协议,客户端的域名解析请求直接由HTTPDNS服务器接收和响应,实现了域名防劫持、精准调度、解析结果及时生效

以字节跳动内部业务为例,如抖音、今日头条、西瓜视频和番茄小说等,QPS峰值达千万级,解析请求量日达万亿次,日常流量极大,为保障业务稳定运行,应用了火山引擎移动解析HTTPDNS(以下简称HTTPDNS)为域名提供递归DNS服务,支撑起超大解析请求量。

由于HTTPDNS服务全面覆盖字节跳动头部APP,在节约成本以及性能优化上存在强烈诉求,在此背景下HTTPDNS团队经过调研,决定将HTTPDNS服务从中心迁移至边缘,以下将从实践难点、解决方案和收益多个维度分享详细落地过程。

一、HTTPDNS下沉边缘实践挑战

1.服务放置

由于边缘计算节点分散、基础设施异构等原因,边缘服务放置一度成为下沉边缘过程中的研究热点,现有方案在处理边缘放置问题时,会将其转化为指定场景下资源约束的目标优化问题,针对成本、质量、流量方向,行业内均有对应研究:

  • 针对成本,有研究通过多云的模式进行最小冗余成本建模,来实现资源动态分配。

  • 针对质量,有研究通过构建服务依赖模型、最佳冗余动态算法保障可靠性,以及成本和质量均衡模型,来实现质量保障。

  • 针对流量,有研究从流量迁移、设备移动、时空轨迹以及资源预部署等,实现流量稳定迁移。

在实际应用过程中,流量及设备迁移特征显著、边缘节点性能差异、稳定性波动大等因素,会干扰现有放置问题模型,因此需要进一步探索基于流量特征和边缘节点资源质量的放置问题

2.流量调度

边缘计算的流量调度场景主要分为端边调度和云边调度,部分场景会出现边边调度。不同调度阶段拥有相对成熟的调度技术,包括基于DNS的端边调度、基于BGP ANYCAST的骨干网路由调度以及云网络下的云原生流量调度。

图片

实践过程中面临的流量调度挑战,主要围绕着端边调度和云边调度:

  • 端边调度挑战:5G和工业互联网接入的大量异构设备,以及设备迁移导致的流量波动,是端边调度需要应对的主要挑战。解决这一问题可借助云边协同作业与全局分布式调度的策略。然而,实际操作遇到的难题主要在于缺乏精确的调度手段,并且未能充分利用客户端与边缘节点之间协同联动的潜力。尽管通过实时流量感知配合机器学习进行训练是一种可行的方法,但这种方案处理的数据量巨大,导致应用成本过高,难以满足现实需求。

  • 云边调度挑战:边缘计算由于其固有特性,在处理大规模集中式数据方面相较于传统中心化架构存在一定局限性。因此,云边协同的流量处理和计算模式采纳了业界广泛认可的计算架构,云边调度发挥了云计算与边缘计算各自的优势,达成数据和流量的更高效处理。然而,边缘计算在资源分配上仍面临局部不足与全局分散的挑战。举例来说,在约束优化路由模型中,评价指标有时与实际业务场景不符,未能充分考虑用户体验。此外,行业内某些区域分层调度模型在实际应用中遇到了边缘基础设施不统一的问题,同时区域内及区域间的容灾问题也尤为突出。

二、HTTPDNS下沉边缘解决方案

1.可视化评价模型指导服务放置

针对基于流量特征和边缘节点资源质量的放置问题,在实践过程方案,HTTPDNS团队不断进行尝试优化,最终选择通过使用全链路的拨测和数据采集方法,基于实时数据驱动的模式,进行在线的放置算法仿真训练,形成可视化的评价模型,以指导HTTPDNS服务在边缘机房的节点选择和服务放置。基本流程如下图:

图片

2.接入GTM打造调度解决方案

针对流量调度挑战,由于内部服务采用域名(配合兜底策略)的接入方式,接入域名配置DNS智能解析实现用户就近访问边缘接入节点。考虑到边缘接入节点IP的网络服务可靠性和质量对比IDC机房优势不明显,因此HTTPDNS团队最终决定引入云调度GTM解决调度问题。

火山引擎云调度GTM基于解析进行流量调度,可以实现流量的就近接入(地理位置/性能)、负载均衡。GTM借助分布式、多协议健康检查能力来实现故障容灾(Failover),诸如“同城容灾”、“异地多活”等场景。此外GTM还提供了多云环境下的流量编排、资源粘合能力,可视化的健康检查数据分析、操作日志等功能帮助排查定位问题,便于日常运维。

重点应用:

  • 智能调度:通过云调度GTM的「智能调度-容量优先」模式实现基于机房容量的智能调度,在满足机房容量的前提下生成全局时延最低的DNS调度规则,从而能够在边缘节点割接/故障时实现自动容灾;

  • 故障容灾:支持边缘节点通过控制台、API接口和Agent的方式上报节点容量等信息,基于节点的数据上报情况和健康检查探测的情况,云调度GTM作为策略中心更新和下发调度策略,实现边缘节点的故障容灾。

图片

调度解决方案优势:

  • 建设成本低:部署轻量,架构侵入较小,建设成本较低;整体配置和管理简单;

  • 动态调度保障性能最优:在边缘多节点、多机房的场景下,能够基于性能和容量进行动态调度,在确保机房水位低于目标水位的前提下实现全局性能最优;

  • 支持可视化:支持调度配置和结果的可视化展示、健康检查可视化查询。

图片

图片

应用火山引擎云调度GTM来实现容量调度是一次新的尝试,在全面接入云调度GTM之后,对比传统域名智能解析调度模式,边缘节点容量调度模式能从性能、容灾、成本等方面带来收益,也验证了云调度GTM在方案中不可或缺的重要性。

调度解决方案收益:

指标类型指标收益总结
性能请求时延平均接入时延 -5.01%(-11ms)整体延时优化5%
流量调度漂移减少 15%
请求成功率持平
TTFB平均 TTFB -4.1%(-3.5ms)
流量波动cpu负载波动标准差:5%->1%,优化80%
容灾自动容灾成功率100%智能解析线路级故障感知
60 秒自动容灾
边缘故障感知耗时60s
流量收敛时长3min 90%+收敛
成本带宽成本回源带宽降低 10%运维:配置、切流管理,完全自动托管
容灾:从预案模式10分钟, 到自动容灾1 分钟
资源成本:cpu冗余量可减少 20%
成本运维成本易用:基于容量&性能矩阵,均匀分流。仅需要用户维护机房容量信息。

好用:火山控制台一键完成调度策略计算,流量调度结果支持可视化。机房故障自动重调度,机房裁撤一键完成流量重分配。

复杂场景支持:新建机房快速完成接入调度。大面积故障场景容灾自动化高。

三、更强大的解析调度,性能提升20%+

实践过程持续了六个月时间,在成本优化与性能提升方面均取得显著效果。

1.成本优化

总成本优化约35%,其中负载均衡资源优化约50%,计算资源优化约30%,带宽成本优化约70%,且最终实现了边缘集群总容量千万 QPS 级别,与中心机房完全互备。

2.性能提升

完成从中心到边缘的迁移后,火山引擎移动解析HTTPDNS服务性能出现显著提升,对比同类服务出现显著优势。

在边缘服务建设完成后,我们逐步将原中心机房承载的千万 QPS 级别流量迁移到边缘服务集群上。根据实际的性能提升情况, 先后将全国大部分区域的三大运营商接入流量迁移到边缘。在这个过程中,我们关注并采集流量的网络指标变化数据,各个区域均有性能收益,详见下表:

下沉区域总耗时-平均值-差异百分比(%)总耗时-50分位-差异百分比(%)TTFB-平均值-差异百分比(%)TTFB-50分位-差异百分比(%)
西南-15-44-38-64
西北-16-36-36-47
东北-10-14-15-23
华北-16-41-29-63
华中-23-50-37-70
华南-7-15-11-36

为了能够更直观感受火山引擎移动解析HTTPDNS服务与其他HTTPDNS服务的性能数据对比,我们使用国内主流的第三方拨测平台,进行了近千个拨测节点、覆盖全国的拨测对比。从拨测结果可以看出,不论是从地理位置上,还是分运营商讨论,火山引擎移动解析HTTPDNS都在首屏时间、建立连接时间、首包时间和内容下载时间上表现优异,最终实现总下载时间实现领先。

全国:

厂商总下载时间(s)首屏时间(s)建立连接时间(s)首包时间(s)内容下载时间(s)
火山 HTTPDNS0.2520.2540.0240.0260.037
其他-1 HTTPDNS0.2790.2820.0350.040.039
其他-2 HTTPDNS0.3270.3290.050.0630.039

分运营商:

运营商厂商总下载时间(s)首屏时间(s)建立连接时间(s)首包时间(s)内容下载时间(s)
中国电信火山 HTTPDNS0.260.2630.0230.0270.031
中国联通火山 HTTPDNS0.2420.2440.0240.0260.04
中国移动火山 HTTPDNS0.2560.2570.0240.0260.038
中国电信其他-1 HTTPDNS0.2870.2910.0340.040.034
中国联通其他-1 HTTPDNS0.2720.2750.0360.0410.043
中国移动其他-1 HTTPDNS0.2790.280.0360.0380.041
中国电信其他-2 HTTPDNS0.330.3330.0490.0610.033
中国联通其他-2 HTTPDNS0.330.3320.0530.0680.043
中国移动其他-2 HTTPDNS0.320.3210.0490.060.041

总结

整体下沉实践方案中,HTTPDNS团队不断进行新尝试,探索并应用了基于GTM的反馈式调度模型,更好地应对了边缘计算资源局部紧张、全局分散以及稳定性抖动频繁的挑战,从而弱化边缘放置问题带来的资源开销,并提升流量调度效率、资源利用率以及降低容灾和运维难度。

通过下沉边缘,HTTPDNS进一步优化使用成本,提升服务性能,而此次实践通过将HTTPDNS服务从中心云架构迁移至边缘云架构模式,使边缘计算在互联网传统业务场景中得到应用,也是边缘云云原生的一次工程探索实践。

本项目应用了火山引擎边缘计算多个产品服务,不仅使用了边缘网络提供的四、七层负载均衡产品,还将HTTPDNS服务全部运行在边缘容器上,通过弹性公网IP完成边缘服务的回源以及控制。HTTPDNS联动边缘计算打造的下沉边缘实践案例,作为行业实践,希望为同行业提供一些有益参考。

图片

未来,HTTPDNS团队将持续探索边缘计算容器化弹性调度技术的应用,应对亿级接入、千万QPS流量所带来的流量迁移、接入抖动问题,并进一步提升设备利用率并节约成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3281500.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序-获取手机号:HttpClientErrorException: 412 Precondition Failed: [no body]

问题: 412 异常就是你的请求参数获取请求头与服务器的不符,缺少请求体! 我的问题: 我这里获取微信手机号的时候突然给我报错142,但是代码用的是原来的代码,换了一个框架就噶了! 排查问题&am…

java算法day27

java算法day27 动态规划初步总结509 斐波那契数杨辉三角打家劫舍完全平方数 动态规划初步总结 如果你感觉某个问题有很多重叠子问题,使用动态规划是最有效的。 动态规划的过程就是每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心了。贪心是…

鄂维南院士:人工智能的零数据、小数据、大数据和全数据方法

源自: 中国计算机学会 注:若出现无法显示完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 人工智能、大数据、多模态大模型、计算机视觉、自然语言处理、数字孪生、深度强化学习 课程也可加V“人工智能技术与咨询”报名参加学习 致…

android java socket server端 可以不断的连接断开,不断的收发 TCP转发

adb.exe forward tcp:5902 tcp:5902 前面本地5901 转发到 后面设备为5902查看转发 adb forward --list删除所有转发 adb forward --remove-allpublic static final String TAG "Communicate";private static boolean isEnable;private final WebConfig webConfig;//…

四步教你快速解决UE5文件迁移失败❗️

本期作者:尼克 易知微3D引擎技术负责人 不知道大家在用UE5迁移文件时,有没有发现这个问题:如果文件输出的路径选择了非项目路径,那么UE会提示无法迁移。在UE4中,这样做是不存在问题的,只要选择「忽略」就可…

Studying-代码随想录训练营day48| 739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

第48天,单调栈part01,栈的特殊应用场所!编程语言:C 目录 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II 总结: 739. 每日温度 文档讲解:代码随想录每日温度 视频讲解:手撕每日…

AI识别智能称重-收银系统源码

系统概况 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步,如商品…

什么是数据血缘?怎么做好数据血缘分析?

目录 一、什么是数据血缘? 二、数据血缘关系的四大特征 三、数据血缘分析怎么做? 1.定义元数据模型 2.收集元数据 3.建立血缘关系模型 4.追踪数据流动 5.可视化分析 6.集成到数据治理中 7.持续更新和维护 8.应用分析结果 四、数据血缘技术趋势 1.通用的血…

测试环境领域到测试环境产品

作者:攻心 去年之前,阿里巴巴的淘天集团测试环境是以领域方式运作:不局限测试环境治理本身,从测试模式方法论及用好测试环境思路引领集团测试环境治理。领域运作最难的是“统一思想”。业务进一步细分调整后,测试环境治…

修改所属用户/用户组——chown

目录 (1)修改所属用户 (2)修改所属用户组 (3)修改所属用户和用户组 (4) 选项 -R 使用 chown 可以修改文件/文件夹的所属用户,所属用户组; 当然与 chmod …

数字人直播系统搭建能力评测!3招教你快速摸清源码厂商的真实实力?

随着数字人直播的应用场景不断拓展和应用频率的持续升高,其所蕴含着的市场前景和收益潜力逐渐显现,连带着数字人直播系统搭建的热度也迎来了新的高潮。在此背景下,作为非科班和研发资源有限的创业者们主要的入局途径,各大数字人源…

C++原创系列创斯人工智能Trons10.0.135.7911最新概念版本预告及思路总结

这次更新删掉了以前的所有代码,重新编写,只因我有了新的思路,以前的思路太过于原始,我的思路中的聊天功能如下 这只是聊天函数的原理,聊天函数对一句话的回答有5个到10个,在主函数中多次运行这个函数&#…

ruoyi vue3版本web端隐藏侧边栏及其顶部导航栏

做项目时有个需求是在web端里面嵌入一个页面全屏的大屏,但若依web自带的侧边栏导航和顶部导航一时还不知道怎么隐藏起来,于是在网上到处查找资料,终于,还是在若依的gitee文档中发现了线索 怎么隐藏侧边栏和顶部导航栏实现完全的全…

<数据集>工程机械识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:6338张 标注数量(xml文件个数):6338 标注数量(txt文件个数):6338 标注类别数:7 标注类别名称:[Excavator, Loader, Dumb_truck, Mobile_crane, Roller, Bull_dozer, …

微信小程序之使用智能对话服务,客服回复的跳转小程序指定页面链接无效

在微信小程序中使用了微信智能对话服务&#xff0c;客服回复的是小程序指定页面的链接&#xff0c;无法正确跳转&#xff0c;而是返回到进入客服时的页面去了 解决方案&#xff1a; 需在小程序的客服组件 button 上添加 bindcontact 监听事件即可 <movable-area class"…

【ROS 最简单教程 007/300】ROS 架构 - 目录解析 增删改查 计算图

⭐ 工作空间目录解析如下 &#xff1a; WorkSpace --- 自定义的工作空间|--- build:编译空间&#xff0c;用于存放 CMake 和 catkin的 缓存信息、配置信息和其他中间文件|--- devel:开发空间&#xff0c;用于存放编译后生成的目标文件&#xff0c;包括头文件、动态&静态链接…

MySQL基础练习题14-产品销售分析1

题目&#xff1a;获取 Sales 表中所有 sale_id 对应的 product_name 以及该产品的所有 year 和 price 。 准备数据 分析数据 题目&#xff1a;获取 Sales 表中所有 sale_id 对应的 product_name 以及该产品的所有 year 和 price 。 准备数据 ## 创建库 create database db;…

DNS查询服务器的基本流程以及https的加密过程

DNS查询服务器的基本流程&#xff0c;能画出图更好&#xff0c;并说明为什么DNS查询为什么不直接从单一服务器查询ip&#xff0c;而是要经过多次查询&#xff0c;多次查询不会增加开销么&#xff08;即DNS多级查询的优点&#xff09;&#xff1f; 用户发起请求&#xff1a;用户…

Linux 修改磁盘挂载的目录路径

确认新路径地址&#xff0c;能找到&#xff0c;或者mkdir新创建新路径&#xff0c;考虑权限 #查看当前挂载情况 df -h 卸载已经挂载的目录 umount /media/vdtest #挂载新目录 mount /dev/vdb /mnt #查询/dev/vdb的UUID blkid /dev/vdb #修改 fstab文件实现开机自动挂载&…

Spring源码解析(25)之AOP的BeanDefinitiion准备

一、AOP代码准备 aop.xml文件准备&#xff0c;代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance…