域名解析和cdn 原理
1)、用户向浏览器提供要访问的域名;
2)、浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
3)、浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;
4)、浏览器根据域名主机返回的数据显示网页的内容。
使用了CDN缓存后的网站的访问过程变为:
1)、用户向浏览器提供要访问的域名;
2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
实现CDN的主要技术手段是高速缓存、镜像服务器。可工作于DNS解析或HTTP重定向两种方式,通过Cache服务器,或异地的镜像站点 完成内容的传送与同步更新
CDN网络架构主要由两大部分,分为中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。
当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。
每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。
相关文章:

首批 iPhone 13 用户直呼太“坑”:拍照有马赛克、不能用高刷、还与 Apple Watch “失联”?...
整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)iPhone 13 到底香不香,早在 9 月 15 号的苹果秋季发布会上给了我们答案。对此,自然是仁者见仁智者见智:有人认为 iPhone 13 “加量不加价”挺划算,有人则…

《javascript语言精粹》读书笔记(一)
为什么80%的码农都做不了架构师?>>> 第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多。但javascript的流行却不受他的质量影响。javascript为何如此流行?因为他是web浏览…

WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇
最近比较懒惰一直都没写东西,再不写笔里的墨水就快干了。看过前面关于LibraryStack 和LibraryBar 的介绍后,大家可能已经对Library 控件系列有了进一步了解,本篇将继续介绍LibraryContainer,它其实就是LibraryStack、LibrayBar 的…

Transformer 代码完全解读!
作者 | 安晟&闫永强来源 | Datawhale本篇正文部分约10000字,分模块解读并实践了Transformer,建议收藏阅读。2017年谷歌在一篇名为《Attention Is All You Need》的论文中,提出了一个基于attention(自注意力机制)结构来处理序列相关的问题的模型&am…

php后台开发(二)Laravel框架
php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常类似。 Laravel框…

Redis的介绍
Redis的介绍数据库主要类型有对象数据库,关系数据库,键值数据库等等,对象数据库太超前了,现阶段不提也罢;关系数据库就是平常说的MySQL,PostgreSQL这些熟的不能再熟的东西,至于键值数据库则是本…

从源代码编译里程碑的 ICS ROM
从源代码编译里程碑的 ICS ROM 操作系统选择 Ubuntu 10.04, 可以用虚拟机;安装 Android SDK , 并更新;打开命令行窗口, 输入下面的命令, 准备编译环境: sudo apt-get install git-core gnupg f…

Varnish purges 缓存清除
Varnish的缓存清除非常复杂。无论是Varnish的清除方式还是清除时候使用的语法规则等,都是比较复杂。为了理解他,我花费了不少时间,现在我很高兴我知道怎么来解释给大家听了。 1、Varnish有两种方式来清除缓存,其中一种方式是通过命…

如何快速搭建智能人脸识别系统
作者 | 小白来源 | 小白学视觉网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一。这是为了确保我们的隐私得到维护,只有真正的所有者才能访问他们的设备。基…

全局唯一ID生成方案
2019独角兽企业重金招聘Python工程师标准>>> 全局唯一ID生成方案对比 - http://cenalulu.github.io/mysql/guid-generate/ 转载于:https://my.oschina.net/meilihao/blog/386264

大型互联网 b2b b2c o2o 电子商务云平台
技术解决方案 开发语言: java、j2ee 数据库:mysql JDK支持版本: JDK1.6、JDK1.7、JDK1.8版本 核心技术:分布式、云服务、微服务、服务编排等。 核心架构: 使用Spring Cloud分布式微服务云架构进行服务化开发࿰…

Linux下redis安装部署
1、下载源代码 http://code.google.com/p/redis/downloads/list 下载redis-1.2.6.tar.gz 将下载包拷贝到/usr/local/webserver/redis-1.2.6/下 2、安装 tar -zxvf redis-1.2.6.tar.gzce redis-1.2.6make 3、调整内存 如果内存情况比较紧张的话,需要设定内核参数&am…

阿里无人车配送快递突破 100 万单,小蛮驴牵引的自动驾驶战略布局
作者 | 张昊 出品 | AI科技大本营(ID:rgznai100) 从物流的“最后”三公里中,我们看到了自动驾驶技术的“最前”沿 在9月27日举办的达摩院媒体沟通会上,阿里巴巴集团副总裁、达摩院自动驾驶实验室负责人王刚宣布,达摩院…

[Python] 中文路径和中文文本文件乱码问题
情景: Python首先读取名为log.txt的文本文件, 其中包含有文件名相对路径信息filename. 随后Python调用shutil.copy2(src, dst)对该filename文件进行复制操作. 由于filename为相对路径信息, 所以我们需要硬编码写入父目录, 假设为"C:\\源目录\\", 同时还有目标目录信息…

kubernetes Helm
Helm产生原因利用Kubernetes部署一个应用,需要Kubernetes原生资源文件如deployment、replicationcontroller、service或pod 等。而对于一个复杂的应用,会有很多类似上面的资源描述文件,如果有更新或回滚应用的需求,可能要修改和维…

造车新势力“围猎”秋招,应届生如何拿下高薪 offer ?
作者 | 易璜珵 出品 | 《新程序员》近年来,互联网大厂的秋招开启得越来越早,只为先人一步将优秀的毕业生纳入麾下。所谓“金九银十”,九月即将结束,许多大厂的秋招正式批也逐渐进入笔试和面试环节。在新能源汽车领域…

云评测、云监测、云加速,性能魔方mmTrix全球速度最快
在移动互联网高速发展的今天,互联网企业如果要实现业务增长,在激烈的市场竞争中站稳脚跟,必须要尽可能的提高用户体验和产品影响力。而要达实现这个目标,产品应用性能质量的好坏往往起到重要作用,APM服务受到了越来越多…

水平切分与垂直切分
数据库优化无非水平切分与垂直切分! 1.水平.就是按记录分. 一个数据库有3000W用户记录.处理速度比较慢.这时可以把3000W.分成三份.每份都是1000W.分别放在不同的机器上. 2.垂直分割就是按字段分. 一个数据库有3000W用户记录.包括字段id,user,password,first_name,l…

iOS 设计模式浅析 1 - 策略
本篇文章主要讲三个点: 1. 什么是策略模式.2. 策略模式的优缺点.3. demo .1. 策略模式定义一系列算法, 并且将每个算法封装起来, 算法之间可以互相替换. 使用前提: 输入已知, 好比你渴了, 可以喝可乐, 可以喝牛奶, 也可以喝水. 在我们项目中比较常见的使用情况: 1. 切换主题, 要…

何崚谈阿里巴巴前端性能优化最佳实践
转载:http://www.infoq.com/cn/interviews/hl-alibaba-front-end-performance-optimization 大家好,我现在在阿里巴巴园区采访阿里巴巴中文站架构师,兼B2B网站优化领域的负责人何崚。何崚你好,请简单介绍一下你自己。 我叫何崚&am…

java基础_04
2019独角兽企业重金招聘Python工程师标准>>> 1、java语言的程序结构。Java语言支持3种程序结构:顺序结构、选择结构(分支结构)、循环结构2、顺序结构是最简单、最普遍的一种。java程序如果没有意外都是按照从前到后、从左到右的顺…

会唱歌、会弹琴,清华大学 AI 学生华智冰火了
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 清华大学计算机系知识工程实验室,开发的中国首个原创虚拟学生——华智冰,与近日亮相。她的声音、肢体动作全部由人工智能完成。 今年6月,清华大学计算机系录取了一位…

22. Node.Js Buffer类(缓冲区)-(二)
转自:https://blog.csdn.net/u011127019/article/details/52512242转载于:https://www.cnblogs.com/sharpest/p/8046463.html

linux安装sphinx
从sphnix网站下载sphinx源码包,当前最新版本是: http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz。当然,还需要保证你的系统已经安装了mysql。其次,就是依照官方的安装指导进行安装了,基本步骤如下:解压…

机器人越像人越好?被机器人盯着会变『蠢』
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 摘要:人形机器人的凝视会影响人们对社会决策任务的反应方式。 资料来源:IIT 你是否遇到过这种问题,跟别人对是不超过三秒?当你直视别人眼睛的时候&#x…

SQL Server 储存过程的output 参数
要做的参数的回传一方面要做到有储存过程的配合,再一方面也要有调用方法的配合,也就是说错误的调用方法是没有办法把值回传的。 下面是例子 --1、储存过程方面的配合 create procedure dbo.usp_C i as int output ---**注意这里要用output 关键字**--…
JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合js简介 js是脚本语言。浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在<script>、</script>之内。 <script>可放置在<head>、<body>里 和css一…

Xapian安装
Xapian是一个用C编写的全文检索程序,他的作用类似于Java的lucene。Xapian除了提供原生的C编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你可以直接从自己喜欢的脚本编程语言当中使用Xapian进行…

IOS开发中多线程的使用
一、创建多线程的五种方式1.开启线程的方法一 NSThread * thread[[NSThread alloc] initWithTarget:self selector:selector(_update) object:nil]; 2.开启线程的方法二 [NSThread detachNewThreadSelector:selector(_update) toTarget:self withObject:nil]; 3.开启线程的方法…

介绍如何用 Python 来绘制高清的交互式地图,建议收藏
作者 |俊欣来源 |关于数据分析与可视化今天小编来为大家介绍一个叫做Folium的模块,我们可以用它来绘制高清的交互式地图,并且标注出重要的地理位置等等,读者在看过本篇文章之后,读者大致会掌握1. 使用Folium来进行交互式地图的绘制…