阿里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技术 的相关文章

  • 前端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加速react webpack打包后的文件

    此文不介绍webpack基本配置 如果对基本配置有疑问请查阅官方文档 1 配置webpack config js 将output publicPath改成上传到的cdn地址 例 对应上面上传配置 publicPath https your
  • CDN是做什么用的,怎么一直有人在推荐使用?

    CDN 内容分发网络 的作用与不断的推荐使用背后有着深刻的原因 这是因为CDN在互联网领域发挥着重要且多方面的作用 为许多网站和在线业务提供了显著的优势 首先 让我们来了解CDN的作用是什么 CDN是一种网络架构 旨在将网站的静态资源 如图
  • 负载均衡部署方式《CDN技术详解》

    1 负载均衡部署方式 负载均衡设备在具体实现中分直连和旁挂两种部署方式 此外 为了提高网络可用性 负载均衡设备的双机热备部署也是十分必要的 常用负载均衡部署方式 1 直连部署方式 直连部署方式比较简单 就是将负载均衡设备直接部署在报文必经之
  • Vue线上部署之cdn加速(终极加速)

    文章目录 1 概述 3 cdn gzip vs gzip 1 概述 之前做过服务器nginx开启gzip压缩 速度缩减了很多 加载时间在1秒多 会出现白屏 原因是好多依赖被打包到js中了 体积太大 加载很慢 今天加了下cdn 速度真正起飞
  • 什么是高防CDN?

    高防CDN是为了更好的服务网络而出现的 是通过高防DNS来实现的 高防CDN是通过智能化的系统判断来路 再反馈给用户 可以减轻用户使用过程的复杂程度 通过智能DNS解析 能让网站访问者连接到响应的服务器上 以避免某个服务器因访问者过多而瘫痪
  • CDN 服务器

    cdn的两种方式 推送和回源区别 DNS解析的时候 返回给最近的CDN的地址 然后应用从最近的CDN读取静态文件css js image等信息 然后如果从CDN拿不到信息的话 让请求 回源站 后端应用服务器 回源地址获取静态文件 然后返回给
  • 高防CDN和高防IP防护的不同之处

    网站的运行离不开服务器 服务器在使用的过程中不可避免的会遇到一些攻击 需要做好相应的安全防护 那么 在安全防护上 服务器使用CDN与高防IP具体有什么不同之处呢 一 IP数量 CDN是一组ip的防护 是共享的ip 高防ip独享的ip防护 二
  • vue项目中用 cdn 优化

    在我们写项目中 优化问题是不容忽视的 尤其是首屏优化更是重中之重 这里介绍两种方法优化方法 cdn和异步加载 异步请看 http blog csdn net gang456789 article details 78224751 1 cdn
  • Webpack 4.X 配置cdn加载资源

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

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

    我想用react min js来自生产中的 CDN 例如https unpkg com 电子邮件受保护 dist react min js https unpkg com react 15 3 1 dist react min js 让 W
  • CDN如何访问数据库?

    具体来说 我将使用的数据库是 mongodb 有问题的文件是图像 我的问题是 如果您将图片存储在数据库中而不是常规的静态文件结构中 这是如何工作的 我想您可以将 CDN 文件的链接与图片一起存储在数据库中 所以 image cdnurl f
  • NextJS:如何通过 CDN 添加引导程序

    我是 nextJS 的新手 我在通过 CDN 在应用程序中包含 bootstrap 时遇到了麻烦 在应用程序中的何处添加链接是最佳实践 要覆盖默认文档 请创建文件 pages document js并扩展 Document 类 如下所示 并
  • 在 s3 + cloudfront 和 Rails 3.1 中使用 CDN 和 CarrierWave + Fog

    我在用着fog with 载波在我的网站上 但图像加载速度非常非常慢 然后我想用CDN加速图像的加载 我已按照本教程为图像创建 CDN http maketecheasier com configure amazon s3 as a con
  • 加载 DOM 后如何运行 jQuery 的后备副本?

    以下是a中的第一行代码
  • 如何查看远程脚本被阻止时返回的内容

    我在我的 web 应用程序中使用 Google 托管的 jQuery ajax googleapis com ajax libs jquery 1 8 3 jquery min js 作为错误诊断的一部分 我有一个 window onerr
  • Cloudfront CORS 阻止字体

    除了字体之外的所有资源都加载得很好 每当我访问我的网站时 我都会收到这样的消息 访问字体 https xxxxxxxxxx cloudfront net assets fontawesome webfont woff2 https xxxx
  • React 包的 CDN 链接以及在使用 React 时如何使用 CDN 中的脚本导入它

    我尝试在没有 NPM 和其他工具的情况下使用 React 而是通过添加 CDN 链接来使用它 但是如何导入依赖包 例如useState hook 如果它是通过另一个脚本标签添加的 那么它的 CDN 链接是什么 下面是我的代码

随机推荐

  • 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之和 三个网站流量