Bilibili资深运维工程师:DCDN在游戏应用加速中的实践
日前,云栖大会新一代CDN的技术突破与应用实践专场中,bilibili资深运维工程师李宁进行了《DCDN在游戏应用加速中的实践》主题分享,从bilibili游戏应用CDN的效果和成本入手,深入浅出地分享DCDN全站加速在游戏加速场景中的应用。
bilibili的业务部署架构及CDN的应用
bilibili一直以来是作为中国Z世代高度聚集的文化社区而被大家熟知,已经成为了国内二次元游戏的主要分发渠道和发行方。在公司不断发展过程中,CDN扮演着不可或缺的角色。
简单的七层应用游戏的部署架构如下图所示,业务的后端以中心化部署的方式完全隐藏在公共云的网络内,出向网络经过NAT转发,业务的入口只通过公网负载均衡进行暴露,静态资源存放在对象存储上,然后从用户动静态的请求全部经过CDN进行转发,这样的方式不仅能进行常规静态资源的缓存加速,也能帮助隐藏源站,并进行相应的DDoS防护。
李宁介绍到:bilibili对CDN的使用大概分三个阶段,初期业务规模比较小,主要通过基于云内专线自建代理的方式实现区域加速;随着业务规模增加,运维管理问题和安全问题暴露, bilibili基于不同的缓存策略,在商业静态CDN上去实现动静态请求的分发,虽然解决了自建带来的管理和安全问题,但是也带来了新问题,比如静态CDN中间源大量回源过载、静态CDN链路过长,多级代理导致响应耗时增加等等;直到近两年,市场上出现了专门针对动态请求加速的产品,在原有CDN功能丰富度提升的基础上,通过智能路由带来了更好的加速质量提升。
游戏应用运维工作对CDN的核心诉求
在游戏运维的日常工作里经常会遇到以下场景:静态突发流量报备不及时,单一厂商无法全部承接,导致业务进退两难,业务和运维背着上线;游戏热更中大量的刷新预热需求,带给运维带来繁重的工作;热点游戏海外用户访问质量如何保障;国内小运营商环境中各种劫持与弱网传输;游戏业务突发式增长对弹性伸缩、快速交付的挑战等等。
简单总结,业务对运维的需求就是:
a) 热点资源、导致流量突发运维需要做好保障
b) 保障业务发展过程中快速交付、并且保障易用性
c) 业务的基础网络链路实现跨境优化
d) 要能覆盖国内的小运营商
e) 需要有政企关系,具备推进运营商快速处理问题的能力
基于上述需求综合考虑,bilibili选择使用公共云CDN,而非自建的形式。其业务对云CDN的使用运维有以下诉求:
a) 业务接入的时候控制台要快、简单,接口要完善、可编程,功能丰富、不支持的功能也要支持定制化
b) 产品需要支持自动调度、方便的配置和内容管理,底层要对跨境网络进行优化
c) 针对海量的CDN数据有简化分析的方案,以便数据管理运营
d) 要有丰富的报警指标、在业务报障的时候辅助运维进行决策
bilibili选择使用阿里云全站加速进行业务分发
为了解决以上问题,bilibili使用阿里云全站加速产品支持游戏应用内容的分发加速。在接入之后,质量有明显的提升,平响耗时降低了32%,首包的耗时降低了18.6%。同时,当异常发生的时候,CDN告警的收敛聚合,可以与源站监控报警进行比对,用于快速的排除故障。
全站加速是阿里云自主研发的融合了动态加速和静态加速技术的CDN产品,解决了页面动静态资源混杂、跨运营商、网络不稳定、单线源站、突发流量、网络拥塞等诸多因素导致的响应慢、丢包、服务不稳定的问题,提升全站性能和用户体验。对于源站的适配,全站加速产品无需对服务器资源进行调整,会智能的区分动态和静态内容并分别加速,这也是目前比较适合游戏应用的加速方案。
全站加速可以提供传输加速、稳定均衡、HTTPS、基础防护和管控灵活五大价值。
传输加速:一站式静态、动态资源分离,静态资源可以基于遍布全球的边缘节点缓存进行加速,动态资源利用智能路由、传输协议优化、压缩传输、链路复用等技术实现回源加速;
稳定均衡:通过全网节点的负载均衡,以及主备源站、有序回源、源站健康检查等多重策略,确定高并发情况下的业务稳定运行以及加速效果平稳。
HTTPS:国内运营商环境复杂,网站被劫持,站点内容遭篡改,仅使用HTTP协议传输可能会有用户动态内容泄露风险,需要寻求更安全高效的网络链路和内容分发途径,那么阿里云支持全链路HTTPS安全加速,提供多种证书格式,支持keyless方案,满足客户对于安全访问的不同场景需求。
基础防护:在DCDN之上逐渐集成云安全能力,打造边缘安全能力。在更接近攻击源产生的位置,通过覆盖全球各地的DCDN边缘节点进行防劫持、防篡改、防DDoS攻击,减轻源站压力。
管控灵活:基于缓存多源优化,可以控制每个回源量,从而能够对节省源站的带宽,以此保护源站,有序回源这一块,当活动突发的时候,DCDN可以通过有序回源的策略来明确哪些请求优先返还源站,哪些可以通过队列的方式来控制源站的回源量,从而能达到稳定均衡的一个效果。
bilibili实践经验
针对使用CDN的效率以及成本几大问题,bilibili具备以下实践经验:
第一,在交付效率上,bilibili通过gitops加基础设施及代码实现了一套资源编排,CDN也包含其中,研发通过选择CDN的配置模板(比如CDN多线策略,缓存配置模板)生成资源堆栈,再结合流程审批实现分钟级别的资源交付,在交付过程中我们力求让使用者只做选择题,少做问答题,减少反复沟通的成本;当然平台也集成了很多的小工具,比如最高频的刷新预热操作,我们将不同云平台的需求收敛到统一的界面,提供给研发自助进行操作;还有ip归属查询这类小工具,尽量实现研发自助,以减少沟通提升人效。
第二,针对成本的问题,强调可计价,可度量;在CDN成本优化方面,首先要先知道钱花到了哪里,通过云计费api拿到实时数据,进行简单地同比环比,对成本突发进行预警,然后人工干预及时止损;第二是花一样的钱做更多的事,通过业务数据压缩以及开启云厂商的智能压缩功能进行技术优化,同时,提升静态缓存命中率,降低对象存储回源;第三是做一样的事情花更少的钱,就需要更优的计费策略和更优的核算策略。
对未来游戏CDN的思考
李宁表示:我理解的运维工作的主要目标之一就是可控,CDN可控就是实现智能调度,未来会围绕着数据治理进行一些尝试:
a) 通过第三方拨测、客户端数据上报、业务全链路监测,收集到完善的业务数据
b) 在此基础上进行多维度的分析,比如异常情况下,进行多维度的数据关联聚合,减少多个运维监控组件之间切换排查
c) 最终结合少量的人工辅助决策,去实现智能调度
原文链接
本文为阿里云原创内容,未经允许不得转载。
Bilibili资深运维工程师:DCDN在游戏应用加速中的实践的更多相关文章
- Linux系统资深运维工程师的进阶秘籍
2010年毕业,从事IT行业已经接近7个年头,一路走来有很多不足,不论是技术上的还是工作当中的待人接事等,但正是这些不足让我有了现在的进步,技术上从最初的做水晶头,综合布线到服务器上架,网络设备调试, ...
- Linux运维工程师成长必经之路
本路线图是从0基础开始,全方位由浅入深,按照多年Linux培训经验和优秀教学方法制定的学习思路和学习方法,路线图包括初级入门.中级进阶.高级提升和资深冲刺四个阶段,每阶段对应着不同优秀的课程和学习方法 ...
- 阿里云“网红"运维工程师白金:做一个平凡的圆梦人
他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...
- 阿里云“网红"运维工程师白金:做一个平凡的圆梦人
他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”:他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路:他爱好清奇,练就了能在 20 秒 ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- 转:linux运维工程师
运维中关键技术点解剖:1 大量高并发网站的设计方案:2 高可靠.高可伸缩性网络架构设计:3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案:5 海量数据存储架构 一.什么是大型网站运 ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
- 高级Linux运维工程师必备技能(扫盲篇)
高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...
- 如何快速成为一名Linux运维工程师
如今的互联网,绝大多数的网站.服务.游戏均是跑在Linux上面的,虽说Linux发行版众多,只要玩熟了一种发行版,了解了Linux精髓.基本架构.设计原理,其他都是触类旁通的,千万不要在选择哪一发行版 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
随机推荐
- Uni-App 实现资讯滚动
项目需要实现资讯的滚动,使用了Swiper组件,实现了首页头部的资讯滚动,简单地做下笔记 效果 实现说明 主要是使用了Swiper可以自动滚动的特性来实现,左边是一个图片,右边则是Swpier,且姜S ...
- 29_SDL多线程与锁机制
目录 一.简介 二.代码实现: 2.1.声明 2.2.创建锁.消费者 2.3.销毁 2.4.实现生产者逻辑 2.5.实现销毁者逻辑 2.6.创建生产者 三.分装SDL锁机制 condmutex.h c ...
- awk第一天
awk第一天 1.用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt) awk '{print}' test.txt [root@master ~]# awk ' ...
- 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位
2022年7月19日,5G应用"海上扬帆"行动计划云启航大会暨"海上扬帆"融合应用专委会成立大会在沪成功举办. 受上海信通院工创中心邀请和信任,深圳市瑞云科技有 ...
- 02.Android之IPC机制问题
目录介绍 2.0.0.1 什么是Binder?为什么要使用Binder?Binder中是如何进行线程管理的?总结binder讲的是什么? 2.0.0.2 Android中进程和线程的关系?什么是IPC ...
- openApi generator总是生成类名为 defaultApi
生成器可以开启 useTags 设置,开启之后会根据 api 文档中的 tags 生成前缀类名,因此,要不生成 defaultApi 需要以下操作: 1.openApi 文档中每个 url 必须要有 ...
- eviacam在Arch/Manjaro Linux下的安装
安装base-devel 安装编译工具,默认的依赖里没有编译工具 sudo yay -S base-devel 如果安装编译工具,会报类似下面的错误: 安装eviacam yay -S eviacam ...
- 记录--怎么实现一个3d翻书效果
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本篇主要讨论以下两种翻书动画的实现: 第一种是整页翻转的效果: 这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性 ...
- KingbaseES 对象重命名需要注意的事项
前言: Oracle 对视图或同义词依赖的底层对象表,如果被重命名,则视图或同义词失效.Oracle DBA 经常利用这个特点,对表进行重建,在重建过程中,无法通过视图或同义词访问,这就保证了数据的安 ...
- archlinux xfce 设置fcitx5中文输入法详细教程
1.安装fcitx5 sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-im 包含fcitx5的一些 ...