阿里CDN技术

2023-11-08


构建高效、安全的CDN,阿里CDN核心技术揭秘
阿里云-核心系统部 朱照远(叔度)


大纲:总览,性能优化,安全防御,展望
 


阿里自身面对的技术挑战
2012年淘宝、天猫的交易额为11600亿元人民币,超过Amazon与eBay之和
三个网站流量在全球排名前100(Alexa统计),taobao.com(#9),tmall.com(#18),alibaba.com(#68)
2013年双11大促活动的一些数据:6分钟成交10亿;当天总销售额350.19亿,其中手机淘宝支付53.5亿;成交总笔数1.71亿;全天独立访客4.02亿。
 


阿里CDN概况:
全球20几个国家200多个节点
6Tbps服务能力储备
1机柜单节点40Gbps服务能力,20万QPS
2013年双11峰值流量3.4Tbps
处于业界技术前沿的开源技术研究及开发
从淘宝CDN到阿里云CDN
 


阿里云CDN特点:
稳定快速
安全防护
简单易用
节约成本
 


阿里CDN大图
 


阿里云CDN组件分层:
服务层(基础服务-静态文件分发,大文件分发,流媒体分发,应用加速;辅助服务-文件上传,内容刷新,日志分析)
应用层(全局负载均衡-Pharos,CMOS;本地负载均衡-LVS,Tengine;缓存-Swift,监控-Alimonitor,Tsar,Alibench,Kunlunjing;配置管理-Salt,Puppet)
系统层(RHEL,CentOS)
设备层(服务器,路由器,交换机,防火墙,其他专用设备)
 


性能优化
 


阿里CDN大脑:全局流量调度
LDNS,GSLB,CMOS,策略
 


DNS服务器:Pharos
自主研发的调度系统,可控性,协议扩展性都更好,节省采购商用设备成本
单机高性能,支持百万级别的域名
支持多级的策略调度,节点故障不会造成用户的不可用
支持EDNS扩展协议
多系统联动,与安全防御系统,刷新系统,内容管理系统联动
Portal,API,tcheck等多动管理方式
 


实时调度系统CMOS
数据化的调度:流量完全可控,降低抖动造成的带宽成本;LDNS级别、节点级别的流量预测,流量峰值到来前提前应对
精确、准实时的流量调度:平均误差小于15%,精度可到5M级别;单个Local DNS级别的调度;5分钟级的准实时
调度质量、准确度的提升,直接影响着用户体验
自动化的调度:只要描述高度场景,设定约束条件,自动计算,生成适应的策略,更新Pharos
 


Pharos+CMOS架构

 


调度准确性的重要基出:IP地址库
数据采集,多个数据源
数据运算与评估(加权投票、评估体系):对各个数据源的数据质量,设置不同的权重,进行投票;权重的设置,是根据数据源质量的评估结果进行设置,质量高,权重高,否则相反;根据淘宝包裹地址和IP做数据校验;根据上次的结果进行迭代

 


阿里CDN节点系统:内部架构

关键组件:
LVS做四层负载均衡
Tengine做七层负载均衡(安全、业务逻辑处理)
Swift做HTTP缓存(高性能CACHE,磁盘-SSD/SATA)
 


四层负载均衡:LVS
DR模式(IN的流量经过LVS,OUT的不经过
负载均衡算法采用wrr
双LVS做Active-Active互备,中间有心跳监测
 


七层负载均衡:Tengine
阿里基于Nginx开发的高性能HTTP服务器(已经开源于:http://tengine.taobao.org)
一致性Hash(提高命中率、降低抖动)
主动健康检查
SPDY V3支持
SO_REUSEPORT支持(提高worker进程之间的均衡性、降低CPU使用)
热点对象发现
 


阿里HTTP缓存服务器:Swift
基础功能(Http/1.1协议、proxy功能;内存缓存、磁盘存储;HTTPS协议关键特性支持)
业务功能(精确purge/dir purge/正则purge;鉴权X-Referer-Acl;ESI+gzip)
运维和配置相关功能(按照域名配置的功能;if、变量支持;磁盘容错:磁盘为只读不再进行写操作及磁盘不可读将磁盘摘掉;丰富的统计信息)

 


Swift总体架构图
核心组件(HTTP处理引擎;回源;存储;索引;内容管理子系统)

 


Swift性能优化点
多线程事件驱动网络模型
减小线程间上下文切换
内存命中,一个请求只需要一个线程来处理
消除在万兆网卡上网络处理的瓶颈
304的请求没有DISK I/O
使用trie树实现快速匹配,减少ACL字符串匹配
使用完美hash计算head id,实现批量拷贝、删除响应头
使用libaio(Linux内核AIO)优化IO操作
大文件分片不同片可以分到所有的磁盘上,可以按片做热点
七层负载均衡、热点cache
分级存储和热点迁移
 


Swift的文件存储系统
TCOSS(taobao Cyclic Object Storage System)
基于Squid的COSS系统做的定制开发
支持裸盘热拔插
COSS对象访问导致平均2.13次IO访问
TCOSS对象访问导致平均1次IO访问
 


TCOSS存储系统
没有open和close,尽量少的读写IO
 


Swift热点迁移算法
三层存储(内存、SSD、SATA)
根据对象热度决定到哪一层
 


Tengine+Swift性能优化
集群的大文件分片缓存功能
基于HTTP分段压缩算法
利用SPDY的多路复用技术(减少三路握手和慢启动的影响、减少对本地端口的占用)
 


TCP协议栈优化
改进措施
*基于时间序的丢包发现机制
*主动的丢包发现机制
*自适应的初始窗口
*更激进的拥塞避免算法
*更小的连接超时时间
 


TCP协议栈优化效果:抗抖动
 


TCP优化效果:减少连接时间
 


页面优化:
*Trim:去除页面的空格、回车换行、TAB、注释等,减少页面的大小
*智能Gzip:某些用户的浏览器实际支持gzip但是却被防火墙或者proxy给改掉。智能gzip功能会对这个过程进行测试,从而允许gzip,减少用户传输内容的大小
*SDCH:压缩算法优化,降低传输大小
*Combo:联合多个JavaScript/CSS文件成一个请求,从而减少请求数目
 


安全防御
 


阿里四层防攻击系统:AliGuard
基于DPDK之上的网络框架
支持集群部署
流量牵引
四层DDOS攻击防护
DNS攻击防护
 


阿里七层防攻击:TMD系统架构
 


TMD一些关键技术
模块化,如防CC模块、hotpatch模块等
socketpair实现多进程间配置更新知
共享内存hash表实现黑白名单
漏桶,令牌桶算法实现QPS限流
LRU、红黑树实现CC统计算法
多线程,libev实现网络通信框架
 


TMD防CC攻击的一个例子
原页面60KB
攻击9万QPS
计算带宽41Gbps
实际节省200倍
 


七层防攻击:Web应用防火墙
基于Tengine的模块(WAF),高效的规模匹配引擎
防止攻击(SQL注入、XSS、web shell、...)
 


运维性改进
海量域名管理
*Tengine不再依赖配置文件
*HTTP接口去configserver拿域名对应的配置
*lazy更新,只记录访问过的
*有cache时间
*失效接口
*不需要reload
 


展望
 


阿里CDN持续优化
核心应用软件开发
节点架构优化
调度系统的精细化调度
运维工具平台化、系统化
总目标(给阿里云用户提供稳定、安全、易用、低成本的CDN服务)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里CDN技术 的相关文章

  • 边缘计算节点是啥?边缘计算与CDN有什么关系?一文带你了解边缘计算节点BEC(1)

    边缘计算节点是基于CDN边缘节点构建 xff0c 覆盖全国大部分地区 xff0c 三大运营商全覆盖 将算力下沉到各城市级节点 xff0c 提供离用户更近的算力资源 那么可能有些小伙伴会问 xff0c CDN也是就近为用户提供服务 xff0c
  • 在google设置静态页面 CDN加速

    一 创建bucket xff0c 设置bucket 链接 xff1a https console cloud google com storage browser 创建bucket 设置bucket公开访问 在bucket列表中 xff0c
  • 前端js免费的CDN网站

    1 BootCDN http www bootcdn cn 目前前端开源的项目几乎都涵盖了 xff0c 支持http和https 2 百度静态资源公共库 http cdn code baidu com 一个是稳定 xff0c 快速 xff0
  • hexo next 博客,jsdelivr cdn报错无法访问

    一 博客环境 我的hexo版本是5 4 0 xff0c next版本是7 8 0 因 jsdelivr cdn报错导致博客首页无法访问 二 修改next cdn 首先进入hexo博客首页 xff0c F12查看报错的 jsdelivr 地址
  • 什么是CDN?CDN的原理和作用是什么?

    一 什么是CDN CDN全称Content Delivery Network 即内容分发网络 CDN是Content Delivery Network 内容分发网络 的缩写 是一种利用分布式节点技术 在全球部署服务器 即时地将网站 应用 视
  • CDN回源原理和CDN多级缓存

    一 CDN概念 CDN的全称是Content Delivery Network 即内容分发网络 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节 使内容传输的更快 更稳定 CDN是通过在网络各处放置节点服务器所构成的
  • Webpack 4.X 配置cdn加载资源

    众所周知 SPA单页应用 首次访问需要加载近全部资源 从而导致首页渲染速度很慢 继而 出现很多性能优化方案 图片 资源懒加载 减少http请求 减小请求资源大小 减少dom操作避免触发回流重绘 gzip压缩 cdn加载等等 今天 我们就具体
  • 阿里云CDN架构接入WAF应用防火墙案例实践

    文章目录 1 网站架构变化 2 配置WAF应用防火墙 2 1 配置网站接入WAF防火墙 2 2 WAF防火墙生成CNAME地址 2 3 配置WAF防火墙HTTPS证书 2 4 WAF防火墙开启HTTP回源SLB 3 配置CDN加速器回源WA
  • JQuery.Validate CDN 后备

    这个问题的一些后续内容 使用 Google 托管 jQuery 的最佳方式 但回退到我在 Google 上的托管库失败 因此我可以检测 JQuery CDN 是否已关闭并允许这样做
  • Bootstrap 3 Glyphicons CDN

    注意 Bootstrap 图标又回来了 after 这个拉取请求合并 经过过去几周的反复思考 我决定将 Glyphicons 图标字体恢复到主存储库 考虑到图标在 UI 中的流行程度 如果不将它们 或其他一些图标字体 包含在与 CSS 和
  • 使用 Cloudfront 预签名 S3 URL

    我想将我的预签名 URL 附加到 CloudFront URL 中以供使用 知道如何实现这一目标吗 Use an Amazon CloudFront 签名 URL而不是尝试将 Amazon S3 预签名 URL 与 CloudFront 结
  • 间歇性 Cloudfront CDN 故障(监控)- CDN 故障转移

    在过去的 2 个月中 我遇到了 Amazon Cloudfront 间歇性故障 每周 2 3 次 页面将从我的 Web 服务器加载 但来自 CDN 的所有资产当时都会阻塞等待几分钟 我确认使用来自不同数据中心的 shell 卷曲 有些可以工
  • 无法在 CDN 上加载资源:net::ERR_CONNECTION_RESET

    最近 在我正在开发的网站上 我注意到 Chrome 控制台中出现以下错误 无法加载资源 net ERR CONNECTION RESEThttp maxcdn bootstrapcdn com font awesome 4 4 0 css
  • 我可以使用 CDN 中的 ES 模块库吗?

    我想通过 CDN 使用这个库 https www jsdelivr com package npm lit element https www jsdelivr com package npm lit element 我的js代码在这里 i
  • 从 CDN 包中删除 Babel(StandAlone) 警告消息

    我们在项目的某些部分使用 React JS CDN 出于质量目的 我们希望向客户提供无警告的代码 我们正在使用以下库 问题是我们在控制台中收到以下警告消息 您
  • Google 应用引擎和 CDN

    使用 Google 应用引擎时 如果我希望我的文件资源更接近用户 那么使用 CDN 有什么好处吗 嗯 这完全取决于您的预算 地理位置和概况 Google 应用程序引擎是免费的 如果配置正确 它可以很好地向世界各地的不同地点提供您的内容 很多
  • django图像存储cdn

    过去几个月我一直在使用rackspace CDN 以及 django imagekit 和 django cumulus 我对结果并不满意 由于超时等原因 我似乎收到了很多错误 File www django test1 omu2 src
  • jQuery 通过 Google CDN 最佳实践

    我使用以下代码通过 Google 的 CDN 加载 jQuery 我的主要问题是 如果用户访问我的网站并且尚未预缓存 jQuery 将会发生什么情况 他会下载 Google 版本和我自己的版本吗 这里的并发是如何工作的
  • 具有云功能的 Firebase 托管 - 如何清除/刷新 CDN 缓存?

    我按照该视频中的说明进行操作 到目前为止 一切都运行良好 直到我需要清除 CDN 中的旧 HTML https www youtube com watch v 7 2CJs VZk4 https www youtube com watch
  • 为什么 Facebook 不合并它的 CSS/JS 文件?

    我很好奇为什么 Facebook 开发人员选择不将他们的脚本和样式表合并到单个文件中 相反 它们通过 CDN 按需加载 Facebook 显然是一个非常复杂的应用程序 我可以理解这种模块化如何使 Facebook 更易于维护 但是通常的优化

随机推荐

  • linux查看磁盘IO,网络IO 总结

    一 linux查看磁盘IO 网络 IO可用的命令 1 top 监控整体服务器 cpu 内存 磁盘 网络等 2 dstat d 查看当前磁盘每秒的读取 写入量 单位K 3 dstat r 查看当前磁盘随机的读IOPS 写IOPS 4 dsta
  • 一款简单的角度计算Python包:PyAngle

    一款简单的角度计算Python包 PyAngle GitHub仓库 gzn00417 PyAngle PyPI项目 PyAngle A simple package for angle calculation Use pip install
  • ubuntu下载的国内镜像

    阿里云镜像
  • 惊爆GPT OpenAPI的调用以及API内的参数详解

    开篇 随着人工智能技术的飞速发展 自然语言处理技术 NLP 在过去几年也取得了突飞猛进的突破 在这个过程中 一个重要且可称为颠覆者的模型 GPT 3 第三代生成式预训练 Transformer 模型 的诞生 无疑大大加速了 NLP 领域的前
  • 以太坊智能合约安全编程最佳实践smart-contract-best-practices

    https github com ConsenSys smart contract best practices Ethereum Contract Security Techniques and Tips The recent attac
  • Web UI自动化测试之Selenium工具篇

    本文大纲截图 一 自动化测试介绍 1 基本介绍 1 1 自动化 概念 由机器设备代替人工自动完成指定目标的过程 优点 1 减少人工劳动力 2 提高工作效率 3 产品规格统一标准 4 规模化 批量生产 1 2 自动化测试 软件测试 校验系统是
  • 今天我抓了个 HTTPS 的包

    之前写过一篇讲 HTTPS 的思想的文章 破玩意 用 HTTPS 传纸条 后来又写了篇用更凝练的语言总体描述了 HTTPS 的主干 叮咚 HTTPS 的分支和主干 想必通过这两篇文章 HTTPS 为什么要这么设计 以及它是用来解决什么问题的
  • Android 使用retrofit解析接口返回的xml格式数据

    直接入正题 需要解析的数据格式为 从数据格式上看 上面都是单个字段的解析 下面则是一个数组 解析过程 1 添加retrofit预返回数据处理类型 2 添加返回数据处理类 也就是后面会用的 在上图中可以看到将xml的数据结构在XmlLogin
  • Matlab实现神经网络(附上100个完整仿真源码+说明文档+数据)

    神经网络是一种模仿人类神经系统 以处理信息为目的的计算模型 它由大量节点 或称神经元 和连接它们的边组成 每个节点代表一个变量 边表示变量之间的关系 在神经网络中 信息通过节点之间的连接传递 并在各个节点之间进行处理和转换 Matlab是一
  • 算法:求最长回文数

    题目 给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 eg 输入 babad 输出 bab 注意 aba 也是一个有效答案 eg 输入 cbbd 输出 bb C 采用动态规划 是学习别人的 但在lee
  • 视频清晰度、色偏以及亮度异常检测

    转自 http blog csdn net kklots article details 12720359 昨天老板临时交代一个活 要求通过算法检测监控设备是否存在失焦 偏色 亮度异常等问题 问题本身不难 在网上查看了一些资料 自己也做了一
  • 谈谈深度学习中的模型集成

    前文已经给出了三种可提升模型性能的方法论 残差连接 正则化和深度可分离卷积 本文提出另一种强大的技术是模型集成 model ensembling 集成是指将一些列不同模型的预测结果汇集到一起 从而得到更好的预测结果 集成依赖于这样的假设 即
  • adb push安装系统应用(并自启)

    1 有root权限 adb push 安装应用 system app或者system priv app 法一 对于多设备连接时用 s devicename选择设备 当adb启动失败时 用adb kill server 和adb start
  • 如何在一台电脑安装多个版本的JDK

    如何在一台电脑安装多个版本的JDK 一 打开JDK下载官网网址 下载链接 在里面选择你想要的版本进行下载 下载方式参考我的上一篇笔记 二 JDK安装路径 我这里装了1 8和17两个版本 可以把这两个不同版本放在一个大的文件夹里 方便操作 也
  • JMETER接口测试_用户登录(MD5加密)

    JMETER接口测试 用户登录 密码MD5加密 1 给整个线程组 添加全局变量 TestPlan gt 线程组 gt 右键 gt ADD Config Element gt User Defined Variables 全局变量的意思 整个
  • Hbuildx创建vue3项目

    静态网站 H5 跳小程序 微信开放文档 一 vue3的试水学习 vue3的项目 可以先尝试普通项目的vue3应用 根据示例来看 是vue3的语法没错了 可以先在这儿试一下基础的的vue3语法 vue的setup 单文件组件 这是vue3的s
  • 英特服务器的spec整数性能,单线程整数运算性能:SPEC CPU2006_商用-中关村在线

    即使在服务器市场也是高核心数的CPU称雄 单线程高性能表现依然值得拥有 它确保在任何情况下都能保证一定的性能发挥 而不是仅仅为了 embarrassingly parallel 易并行计算 软件的 throughput situations
  • Unity遮罩实现汽车后视镜(附效果图)

    话不多说 先上效果图 最近项目有用到Unity实现汽车后视镜功能 网上找了很多例子 比如这篇文章 原理确实如此 但只是在平面上实现 我想改变平面改成汽车后视镜形状 这就出现了问题 镜子效果变扭曲 我想是因为相机投射是矩形 如果你改变平面形状
  • 机器学习之梯度下降(BGD,SGD, MBGD)

    梯度下降 批量 梯度下降法 BGD 随机梯度下降 SGD 小批量梯度下降法 MBGD 梯度下降 批量 梯度下降法 BGD 1 递推公式推导过程 通过多项式对函数进行逼近的方法得到 f x f
  • 阿里CDN技术

    构建高效 安全的CDN 阿里CDN核心技术揭秘 阿里云 核心系统部 朱照远 叔度 大纲 总览 性能优化 安全防御 展望 阿里自身面对的技术挑战 2012年淘宝 天猫的交易额为11600亿元人民币 超过Amazon与eBay之和 三个网站流量