后臺系統可擴展性學習筆記(四)CDN機制原理

文章目錄

  • 概念梳理
  • CDN拓撲結構
  • CDN內容分發方式
  • 架構原理
    • 工作原理
    • 實現原理

概念梳理

CDN(Content Delivery Network,內容分發網絡)是由分布在不同地理位置的代理服務器及其數據中心組成的網絡,希望在空間距離上為用戶就近提供服務,以提高可用性和性能。(空間距離體現在網絡傳輸上就是跳數(hop),從客戶端到服務器所經過的跳數越多,距離越遠,一般延遲也越大)
CDN 一般用來托管 Web 資源(包括文本、圖像和腳本),可供下載的資源(媒體文件、軟件、文檔等),應用程序(電子商務、門戶網站等),以及流媒體和社交媒體網站,加速這些資源的訪問,例如在使用Bootstrap-table創建表單,并且與flask后臺進行數據交互中淺嘗了一下Bootstrap-table組件,但是并未下載其資源而是直接通過cdn直接獲取。
性能方面,引入 CDN 的作用在于:

  • 用戶收到的內容來自最近的數據中心,延遲更低,內容加載更快
  • 部分資源請求被外包給了 CDN,減少了服務器負載
    使用CDN的優勢
    1、一方面縮短了內容與最終用戶之間的距離,另一方面,內容不直接從服務器獲取,節省了服務器的計算資源,分擔了源站壓力。
    2、安全性上,CDN 有助于防御 DDoS、MITM 等網絡攻擊:
  • DDoS(Distributed Denial of Service):通過監控分析異常流量,限制其請求頻率
  • MITM(Man-In-The-Middle):從源服務器到 CDN 節點到 ISP(Internet Service Provider),全鏈路 HTTPS 通信

3、作為一種基礎的云服務(IaaS),CDN 同樣具有資源托管、按需擴展(能夠應對流量高峰)等方面的優勢,這降低了內容提供商的基礎設施需求,讓他們能夠更快、更輕松地部署或擴展服務。

CDN拓撲結構

拓撲結構上,CDN 分為分散式(Scattered CDN)和整合式(Consolidated CDN)兩種。
在世界各地部署盡可能多的服務器,稱為分散式 CDN。早期的 CDN 用大量的中低性能服務器密集地填滿選定的地理區域,這些小節點易于部署,尤其適用于低連接性(low-connectivity)的區域。
隨著全球連接性的不斷提高,縮減物理距離的收益逐漸減少,大量節點的維護成本也凸現出來,于是出現了整合式 CDN。
整合式 CDN 只在主要的數據中心有少量節點,但節點性能更強大,包括網絡、吞吐量以及抗 DDoS 的能力,這種集中式的結構有助于提升整體響應能力,為用戶和網絡運營商提供更多的控制,但部署相對復雜,而且在低連接性區域效果較差。

圖1 分散式
圖2 整合式

CDN內容分發方式

CDN 按內容分發方式分為 Push CDNPull CDN
前者由內容服務器提前把內容“推”到 CDN 緩存起來,后者在用戶訪問內容時 CDN 才去“拉”目標資源并緩存起來。
Push CDN
每次內容發生變化時,都把新內容上傳到 Push CDN。由于只需要上傳新增的內容和發生變化的內容,用于傳輸的流量相對較少,但要存儲的內容相對較多
因此,Push CDN 適用于小流量,或內容更新不頻繁的站點,內容一次性放到 CDN,無需周期性地重新拉取。如果流量負擔本就很重,或者內容改動頻繁,Push CDN 會給服務器帶來額外的壓力。
Pull CDN
Pull CDN 無需手動上傳,在用戶首次訪問時自動從服務器拉取新內容,并緩存起來。按需緩存節省了 CDN 存儲空間,但在文件過期或在未發生變化時重新拉取也會造成不必要的流量開銷

因此,Pull CDN 適用于大流量站點,只緩存最近使用(最受歡迎)的內容,一旦配置好就能按需緩存內容,維護成本較低。
關于CDN緩存的策略,請看之前的筆記:DN緩存替代算法

架構原理

在這里插入圖片描述

  • 源服務器(Origin server):提供內容(數據)源的服務器
  • 邊緣服務器(Edge server):用來緩存來自源服務器的內容的服務器
  • 入網點(Point of Presence,PoP):邊緣服務器所在的物理位置,一個入網點可能存在多個邊緣服務器
  • CDN 反向代理(CDN Reverse Proxy):將用戶請求轉發到源服務器,并緩存來自源服務器的響應,用于 Pull CDN
  • 回源(Back-to-source):CDN 節點未緩存請求資源或緩存資源已到期時,回源站獲取資源,返回給客戶端

工作原理

以 Pull CDN 為例,特定地區的用戶首次訪問資源時,從源服務器取,內容響應給用戶之后,資源會被緩存在該地區的邊緣服務器上,如果同一地區的用戶再次請求相同資源,則從邊緣服務器響應:
在這里插入圖片描述
可以通過響應頭的特定字段來區分內容響應來自源服務器還是 CDN 緩存,例如:

  • X-Cache: HIT:命中緩存,響應內容來自 CDN 緩存
  • X-Cache: MISS:未命中緩存,響應內容來自源服務器

實現原理

實現上,將子域名的解析權通過CNAME 記錄交給 CDN,接著通過基于地理位置臨近程度的路由策略,將請求映射到距用戶最近的邊緣服務器。
對于 Push CDN,邊緣服務器僅提供緩存服務,未命中緩存就返回 404,而對于 Pull CDN,邊緣服務器提供反向代理服務,未命中緩存時回源去取。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376586.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Javascript 基礎—變量 運算符

經過找工作筆試的洗禮,感覺自己js語法方面掌握的不是很系統,今天來梳理下——變量以及運算符。 基礎篇 和C語言的不同點:是一種弱類型語言,申明變量時不需要指定類型;變量名的命名方法也有不同;簡單類型種類…

后臺系統可擴展性學習筆記(五)負載均衡

文章目錄Load balancer(負載均衡器)請求傳輸拆解DNS 負載均衡客戶端負載均衡OSI 七層模型回顧2 層、3 層負載均衡3/4 層負載均衡7 層負載均衡在 第一節談到了系統的橫向擴展在于從單機擴展到多機,那么面臨的第一個問題就是這些機器如何協同工作,即如何調…

Struts2第一個工程helloStruts極其基本配置

前面已經準備好了Struts-2.3.15,現在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有對Struts-2.3.15的準備工作的詳述。 首先打開MyEclispe新建一個Web Project,名字就叫Struts2_0100_Introduction…

[LeetCode]Find Minimum in Rotated Sorted Array

題目描述: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 解題方案: 直接貼代碼&…

后臺系統可擴展性學習筆記(六)反向代理

文章目錄Web代理服務反向代理反向代理作用Web代理服務 Web 代理服務指的是在客戶端資源請求和提供這些資源的 Web 服務之間充當中介的角色,代理服務可以實現在客戶端,或者從客戶端到目標服務器中間的任意環節。 例如,客戶端不直接向提供目標…

(C)單鏈表

老師版 1 #include <stdio.h>2 #include <stdlib.h>3 4 // 定于Node數據類型5 struct Node6 {7 int data; // 數據域8 struct Node *next; // 指針域9 };10 11 // 創建一個單鏈表&#xff0c;并把head節點返回&#xff1b;…

實驗:sigsuspend(),sigprocmask()

實驗&#xff1a;sigsuspend(),sigprocmask()源代碼&#xff1a;/* * Program: pause_suspend.c * To test the difference between sigsuspend() and paus(). * Author: zsl * Date: 2014-10-17 * First release. * 參見網頁&#xff1a;http://blog.csdn.net/liwentao1091/ar…

后臺系統可擴展性學習筆記(七)Service Discovery與微服務

文章目錄應用層微服務架構服務注冊查詢 Service Discovery客戶端 Service DiscoveryDNS-SD DNS-based Service Discovery服務端 Service Discovery服務注冊與注銷自注冊模式第三方注冊模式總結參考應用層 在簡單的 3 層結構中&#xff0c;Web 服務層既要處理請求&#xff0c;又…

很久沒寫代碼了,這(那)幾天真是累死了。。。先寫一個幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //雙偶的最基本類型&#xff0c;4階雙偶6 #define SCREEN_SIZE 19 //屏幕顯示不變形的最大尺寸&#xff08;主要是因為窗口大小限制&#xff09;7 #defi…

#pragma once

http://baike.baidu.com/view/1276747.htm?fraladdin 轉載于:https://www.cnblogs.com/prayer521/p/4069040.html

后臺系統可擴展性學習筆記(八)Service Mesh

文章目錄網絡傳輸可靠性將微服務控制下沉到網絡棧&#xff1f;Sidecar從 Sidecar 到 Service MeshService Mesh 部署平臺參考網絡傳輸可靠性 從計網的學習過程中我們可以知道數據在網絡傳輸中可能會出現一些異常狀況&#xff1a; 數據丟失&#xff1a;數據包可能會到達一個緩…

關于Spring batch的學習之CSV2DB

最近在學習Spring batch相關的內容&#xff0c;網上也有不少Spring Batch相關的知識&#xff0c;不過大多都是使用xml進行配置的。這里是我用注解的方式進行相關的學習心得。 首先我們來看如何將一個文本文件中的內容導入到數據庫中。 我們先來看一下我們所需要的環境。我們這里…

后臺系統可擴展性學習筆記(九)Database Replication

文章目錄數據庫擴展一致性問題Replication &#xff08;復制&#xff09;異步復制同步復制半同步復制拓撲結構單主結構多主結構無主結構復制具體措施參考數據庫擴展 之前在第一章后臺系統可擴展性學習筆記&#xff08;一&#xff09;概要談到&#xff1a;理論上&#xff0c;有…

python中的sum函數.sum(axis=1)

看起來挺簡單的樣子&#xff0c;但是在給sum函數中加入參數。sum&#xff08;a&#xff0c;axis0&#xff09;或者是.sum(axis1) 就有點不解了 在我實驗以后發現 我們平時用的sum應該是默認的axis0 就是普通的相加 而當加入axis1以后就是將一個矩陣的每一行向量相加 例如&…

后臺系統可擴展性學習筆記(十)Database Partitioning

為了提升數據庫的處理能力&#xff0c;我們把單庫擴展成多庫&#xff0c;并通過更新同步機制&#xff08;即Replication&#xff09;來保證多份數據的一致性。然而&#xff0c;在 各種復制方案下&#xff0c;每個數據庫都持有一份完整數據&#xff0c;基于全量數據提供增刪改查…

基于FPGA的HDTV視頻圖像灰度直方圖統計算法設計

隨著HDTV的普及&#xff0c;以LCD-TV為主的高清數字電視逐漸進入蓬勃發展時期。與傳統CRT電視不同的是&#xff0c;這些高清數字電視需要較復雜的視頻處理電路來驅動&#xff0c;比如&#xff1a;模數轉換&#xff08;A/D Converter&#xff09;、去隔行&#xff08;De-interla…

后臺系統可擴展性學習筆記(十一)Database Denormalization

之前的兩篇筆記中談到了從單庫擴展到多庫以承載更多的請求量以及單庫&#xff08;表&#xff09;拆分成多庫&#xff08;表&#xff09;&#xff0c;打破單庫的性能瓶頸。 這都是為了應對大數據量下的措施。 然而&#xff0c;除卻數據量外&#xff0c;還有一個極其影響單庫性能…

Java Swing 影樓管理系統之登錄功能

開頭打廣告&#xff0c;Java1234.com。 首先&#xff0c;來個效果圖。 關鍵代碼 1&#xff0c;界面層 private void Jb_DengLuActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:String UserName this.Jb_UserNameTxt.getText();String …

Bdsyn百度手機助手是何物,它是怎樣神不知鬼不覺地安裝到你的電腦里的?

【電腦軟件管理中Bdsyn手機助手的問題】Bdsyn手機助手 is developed by Baidu, Inc. and is used by 10 users of Software Informer. 并不是本人安裝的&#xff08;應該是自己自己主動安裝的&#xff09;&#xff0c;卸載以后過幾天又會出如今軟件列表里。百度搜索卻無法搜索出…

后臺系統可擴展性學習筆記(十二)NoSQL

文章目錄NoSQL定義NoSQL種類鍵值存儲文檔存儲寬列存儲圖形數據庫NoSQL 意味著什么ACID vs. BASESQL or NoSQLNoSQL定義 不同于關系型數據庫&#xff0c;NoSQL 數據庫&#xff08;也叫非 SQL 或非關系型數據庫&#xff09;提供的數據存儲、檢索機制并不是基于表關系建模的。沒有…