<commit_before>---
layout: post
title: "CDN技术原理"
description: ""
category: 
tags: []
---
{% include JB/setup %}

# CDN技术原理

## 概述

CDN的全称Content Delivery Network，(缩写：CDN)即内容分发网络。

CDN是一个经策略性部署的整体系统，从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的根本原因。

CDN目的是通过在现有的Internet中增加一层新的网络架构，将网站的内容发布到最接近用户的网络“边缘”，使用户可以就近取得所需的内容，解决Internet 网络拥塞状况，提高用户访问网站的响应速度。

## CDN组成部分

CDN是一种组合技术，其中包括源站、缓存服务器、智能DNS、客户端等几个重要部分。

### 源站
源站指发布内容的原始站点。添加、删除和更改网站的文件，都是在源站上进行的；另外缓存服务器所抓取的对象也全部来自于源站。

### 缓存服务器
缓存服务器是直接提供给用户访问的站点资源，有一台或数台服务器组成；当用户发起访问时，他的访问请求被智能DNS定位到离他较近的缓存服务器。如果用户所请求的内容刚好在缓存里面，则直接把内容返还给用户；如果访问所需的内容没有被缓存，则缓存服务器向邻近的缓存服务器或直接向源站抓取内容，然后再返还给用户。

### 智能DNS
智能DNS是整个CDN技术的核心，它主要根据用户的来源，将其访问请求指向离用户比较近的缓存服务器，如把广州电信的用户请求指向到广州电信IDC机房中的缓存服务器。通过智能DNS解析，让用户访问同服务商下的服务器，消除国内南北网络互相访问慢的问题，达到加速作用。智能DNS的出现，颠覆了传统的一个域名对应一个镜像的做法，让用户更加便捷的去访问网站。

### 客户端
客户端或称用户端即发起访问的普通用户，一般的访问方式是浏览器。这里就不再做详细说明。

### CDN技术实现原理

下图为CDN用户访问流程：
 ![image](https://raw.githubusercontent.com/yuzujin/yuzujin.github.com/master/images/cdn.bmp)<commit_msg>cdn实现原理 add<commit_after>---
layout: post
title: "CDN技术原理"
description: ""
category: 
tags: []
---
{% include JB/setup %}

# CDN技术原理

## 概述

CDN的全称Content Delivery Network，(缩写：CDN)即内容分发网络。

CDN是一个经策略性部署的整体系统，从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的根本原因。

CDN目的是通过在现有的Internet中增加一层新的网络架构，将网站的内容发布到最接近用户的网络“边缘”，使用户可以就近取得所需的内容，解决Internet 网络拥塞状况，提高用户访问网站的响应速度。

## CDN组成部分

CDN是一种组合技术，其中包括源站、缓存服务器、智能DNS、客户端等几个重要部分。

### 源站
源站指发布内容的原始站点。添加、删除和更改网站的文件，都是在源站上进行的；另外缓存服务器所抓取的对象也全部来自于源站。

### 缓存服务器
缓存服务器是直接提供给用户访问的站点资源，有一台或数台服务器组成；当用户发起访问时，他的访问请求被智能DNS定位到离他较近的缓存服务器。如果用户所请求的内容刚好在缓存里面，则直接把内容返还给用户；如果访问所需的内容没有被缓存，则缓存服务器向邻近的缓存服务器或直接向源站抓取内容，然后再返还给用户。

### 智能DNS
智能DNS是整个CDN技术的核心，它主要根据用户的来源，将其访问请求指向离用户比较近的缓存服务器，如把广州电信的用户请求指向到广州电信IDC机房中的缓存服务器。通过智能DNS解析，让用户访问同服务商下的服务器，消除国内南北网络互相访问慢的问题，达到加速作用。智能DNS的出现，颠覆了传统的一个域名对应一个镜像的做法，让用户更加便捷的去访问网站。

### 客户端
客户端或称用户端即发起访问的普通用户，一般的访问方式是浏览器。这里就不再做详细说明。

### CDN技术实现原理

下图为CDN用户访问流程：

 ![image](https://raw.githubusercontent.com/yuzujin/yuzujin.github.com/master/images/cdn.bmp)
{'fraction_non_alphanumeric': 0.11238189955246146, 'fraction_numerical': 0.0, 'mean_word_length': 11.815286624203821, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3915117', 'n_tokens_mistral': 1646, 'n_tokens_neox': 2002, 'n_words': 62}