成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CDN 原理入門,你學會了嗎?

開發 前端
CDN 的 基本原理為反向代理,反向代理(Reverse Proxy)方式是指以代理服務器來接受 Internet 上的連接請求,然后將請求轉發給內部網絡上的服務器, 并將從服務器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理服務器對外就表現為一個節點服務器。通過部署更多的反向代理服務器,來實現 多節點 CDN 架構。

概述

CDN? 的全稱是 Content Delivery Network,即內容分發網絡,基本思路是: 盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節, 使內容傳輸得更快更穩定。

圖片

圖片來源: https://www.researchgate.net/figure/Content-Delivery-Network_fig1_221632001

CDN 技術原理

CDN? 的 基本原理為反向代理,反向代理(Reverse Proxy)方式是指以代理服務器來接受 Internet? 上的連接請求,然后將請求轉發給內部網絡上的服務器, 并將從服務器上得到的結果返回給 Internet? 上請求連接的客戶端,此時代理服務器對外就表現為一個節點服務器。通過部署更多的反向代理服務器,來實現 多節點 CDN 架構。

CDN? 主要使用了 負載均衡、動態路由? 和 內容壓縮 來提高其性能和可靠性:

? 分布式存儲: 采用可擴展的系統架構,利用多節點、多位置、多種方式存儲數據

? 負載均衡: 可以將流量均勻地分配到多個節點服務器上,從而避免某些服務器過度負載而導致響應時間延遲

? 動態路由: 可以根據網絡流量和服務器負載情況來選擇最優的路徑和服務器來響應用戶請求

? 內容壓縮: 可以將內容文件壓縮到更小的體積,以減少網絡傳輸的時間和成本

簡單地理解,CDN 就是客戶端和真實服務器之間的一層高效的緩存。

傳統網站訪問過程

在說明 CDN? 的技術優勢之前,我們先來看看傳統網站的 HTTP 請求 訪問過程。大部分開發者應該都熟悉 HTTP 協議基礎流程,下面以請求一個圖片文件來舉例說明。

1.客戶端瀏覽器輸入網址,如 https://www.example.com/logo.png

2.瀏覽器請求 DNS? 服務器,查詢 https://www.example.com/logo.png? 對應的源服務器 IP 地址

3. DNS 服務器返回對應的 IP 地址

4. 瀏覽器向服務器發起 TCP 連接

5. 瀏覽器通過建立的 TCP? 連接發送 HTTP 請求圖片文件

6. 服務器向瀏覽器發送圖片文件

7. 瀏覽器將接收到的圖片文件渲染,完成本次請求

圖片

傳統網站訪問過程

如果我們要加入 CDN 的話,是加到哪個步驟呢?

根據上面描述的步驟不難發現,從第 3 步開始,客戶端瀏覽器就和真實的服務器開始建立連接了,連接建立完成后,客戶端瀏覽器就直接從服務器獲取數據, 這顯然不是我們需要的,因為這樣所有的客戶端都會直接連接服務器,會嚴重增加服務器的負載。

我們再來看第 2 步,瀏覽器在訪問真實的服務器之前,會先通過 DNS? 查詢域名對應源服務器的 IP? 地址,如果 DNS? 返回的是 CDN? 服務器的 IP? 地址, 那么后面的流程就會變為: 客戶端瀏覽器就直接從 CDN? 服務器獲取數據,接下來的工作就會全部轉交給 CDN 了,如何完成這項工作呢?

將域名 www.example.com 的 CNAME 記錄解析到 CDN 服務商即可,CDN 服務商的 DNS 服務器也稱為權威服務器 (細節請看上篇文章: DNS 原理)。

接入 CDN 網站訪問過程

1. 客戶端瀏覽器輸入網址,如 https://www.example.com/logo.png

2. 瀏覽器請求 DNS? 服務器,查詢 https://www.example.com/logo.png? 對應的服務器 IP 地址

3. 由于域名的 CNAME? 記錄解析到了 CDN? 服務商,所以這里 DNS? 服務器會返回 CDN? 服務商提供的 CDN 節點服務器的地址

4. 瀏覽器向 CDN? 節點服務器發起 TCP 連接

5. 瀏覽器通過建立的 TCP? 連接發送 HTTP 請求圖片文件

6. CDN? 節點服務器使用內部專用 DNS? 解析出域名對應的源服務器 IP 地址

7. CDN 節點服務器向源服務器發起TCP連接

8. CDN? 節點服務器通過建立的 TCP? 連接發送 HTTP 請求圖片文件

9. CDN 服節點務器接收到圖片文件后,在本地保存一份,作為緩存使用,減少源服務器的回源流量

10. CDN 節點服務器向瀏覽器發送圖片文件

11. 瀏覽器將接收到的圖片文件渲染,完成本次請求

圖片

接入 CDN 網站訪問過程

中央節點如何選擇提供服務的 CDN 節點

一般會綜合考慮以下幾個方面:

  • ? 網絡成本
  • ? 流量分布
  • ? 源站負載
  • ? 地理位置

這里以 地理位置 舉例說明:

  1. 1. 用戶訪問 CDN? 服務商的權威 DNS 服務器
  2. 2. DNS? 服務器獲取用戶的 IP 地址
  3. 3. 根據用戶 IP 地址查詢用戶所在地
  4. 4. 返回離用戶最近的 CDN? 節點的 IP? 地址,比如用戶離北京近,就返回北京的 CDN? 節點的 IP 地址

圖片

按照地理位置訪問 CDN 節點過程

如何提高 CDN 緩存命中率

  • ? 在流量高峰來臨前,將熱門資源提前預熱到 CDN 節點
  • ? 合理配置文件緩存過期時間,如將靜態文件緩存過期時間設置為 1 個月甚至更久
  • ? 消除 URL 中文件名稱后面的參數,如 https://www.example.com/logo.png? 和 https://www.example.com/logo.png?versinotallow=123 應該被視作同一個文件處理
  • ? 超大文件設置分片回源策略,如 視頻文件?, APP 安裝包 等

不適合使用 CDN 的場景

  • ? 請求客戶端和服務器物理距離很近,比如同機房、同機架的內網服務
  • ? 用戶分布在同一地理區域,如同城服務、本地門戶網站
  • ? 動態文件或接口,比如更新很頻繁的文件,使用 CDN 反而會增加響應耗時

數據如何回源

還是以剛才的 https://www.example.com/logo.png? 為例,CDN 節點服務器會先把這張圖片緩存起來,下次有相同的請求到達時,直接返回緩存的圖片,從而減少回源流量。

這里提到的 緩存? 是一個很復雜的功能,下面是阿里的 HTTP 緩存服務器,名字叫 Swift。

圖片

阿里 - CDN 節點

圖中是一個 CDN? 節點,用戶的請求從 LVS?(LVS是一個四層的負載均衡組件)的入口來,先由 LVS? 做一次 4 層的負載均衡, 然后轉到一臺 Tengine?(阿里在 Nginx? 的基礎上開發的服務器)上,Tengine? 做一致性哈希,選擇一臺 Swift 服務器去做緩存數據回源。

圖片

阿里 - Swift 架構

首先可以看到,Swift? 是一個多線程的程序,每個線程啟動一個 epoll? 來充分發揮多核的處理能力,并且盡量減少線程間的上下文切換,一個請求盡量在一個線程處理。除此之外,還能看到 內存緩存,SSD 緩存,SATA 緩存。Swift? 有熱點淘汰和提升機制,將熱文件放在內存里,次熱文件放在 SSD 上,最后才是 SATA 盤。叔度 (阿里 CDN 負責人) 指出,Tengine? 和 Swift? 是通過 Spdy 協議 來通信的,從而優化 HTTP 的傳輸效率。

小結

CDN 的原理是: 基于分布式架構,通過將源服務器上的內容分發到多個節點服務器上,使用戶能夠從最近的服務器中獲取所需內容。這些節點服務器被稱為 邊緣服務器,它們通常位于不同的地理位置,并通過高速互聯網連接互相交換數據。用戶通過接入離他們最近的 邊緣服務器 來獲取所需的內容,從而降低了響應時間和延遲,提高了網站的訪問速度。

Reference

  • ? 如何自建低成本 CDN ?[1]
  • ? 阿里云 - DCDN[2]
  • ? 阿里云 - 提高CDN緩存命中率[3]
  • ? 騰訊云 - CDN[4]
  • ? 騰訊云 - SCDN[5]
  • ? 百度百科 - CDN[6]
  • ? CDN的原理以及其中的一些技術[7]

引用鏈接

[1]? 如何自建低成本 CDN ?: ??https://www.v2ex.com/t/877718??

[2]? 阿里云 - DCDN: ??https://www.aliyun.com/product/dcdn?spm=5176.7933777.J_3207526240.59.329a496e4a1hku??

[3]? 阿里云 - 提高CDN緩存命中率: ??https://help.aliyun.com/document_detail/123330.html??

[4]? 騰訊云 - CDN: ??https://cloud.tencent.com/product/cdn??

[5]? 騰訊云 - SCDN: ??https://cloud.tencent.com/product/scdn??

[6]? 百度百科 - CDN: ??https://baike.baidu.com/item/內容分發網絡/4034265??

[7]? CDN的原理以及其中的一些技術: https://colobu.com/2016/09/23/CDN-introduction/

責任編輯:武曉燕 來源: 洋芋編程
相關推薦

2023-03-30 08:26:31

DNSTCPUDP

2023-10-06 14:49:21

SentinelHystrixtimeout

2023-05-05 06:54:07

MySQL數據查詢

2022-11-02 07:37:07

WebAssembl瀏覽器服務器

2022-10-24 09:55:32

ESLintJavaScript

2024-03-12 08:37:32

asyncawaitJavaScript

2023-04-14 09:04:07

測試TDBF單元測試

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2023-03-10 22:08:20

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2024-03-01 08:13:45

Shell編程解釋器

2022-08-09 08:25:44

Stream創建流流計算

2024-03-06 08:28:16

設計模式Java

2022-06-16 07:50:35

數據結構鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-01-31 08:02:18

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜影院官网 | 国产真实乱对白精彩久久小说 | 99re热精品视频| 国户精品久久久久久久久久久不卡 | 国产欧美综合在线 | 午夜无码国产理论在线 | 国产美女黄色片 | 国产传媒毛片精品视频第一次 | 国产福利在线播放 | 欧美一区二区三区小说 | 国产精品久久久久aaaa樱花 | 日韩三区在线观看 | 国产成人精品区一区二区不卡 | 国产精品成人一区二区三区夜夜夜 | 伊人成人免费视频 | 午夜视频在线观看一区二区 | 欧美日韩三级视频 | 国产精品99久久久久久www | 成年网站在线观看 | 日韩免费福利视频 | 中日字幕大片在线播放 | 曰韩三级| 99在线免费观看视频 | 成人在线免费 | 亚洲一区电影 | 日韩欧美一区二区三区免费观看 | 成人av网站在线观看 | 成人亚洲视频 | 久久精品色欧美aⅴ一区二区 | 国产精品呻吟久久av凹凸 | 国产精品视频一区二区三区 | 亚洲综合视频一区 | 亚洲一区国产 | 成人免费共享视频 | 国产区高清 | 羞羞网站在线观看 | 91麻豆产精品久久久久久夏晴子 | 久久狼人天堂 | 四虎影视1304t| 一级高清 | 北条麻妃99精品青青久久主播 |