(十五)深入淺出TCPIP之Hello CDN

什么是CDN

CDN 其實是 Content Delivery Network 的縮寫,即“內容分發網絡”。CDN是將媒體資源,動靜態圖片(Flash) ,HTML, CSS, JS等等內容緩存到距離你更近的互聯網數據中心,從而讓用戶進行共享資源,實現縮減站點間的響應時間等等需求。

?

CDN的起源

CDN 誕生于二十多年前,隨著骨干網壓力的逐漸增大,以及長傳需求的逐漸增多,使得骨干網的壓力越來越大,長傳效果越來越差。于是在 1995 年,MIT 的應用數學教授 Tom Leighton 帶領著研究生 Danny Lewin 和其他幾位頂級研究人員一起嘗試用數學問題解決網絡擁堵問題。他們使用數學算法,處理內容的動態路由安排,并最終解決了困擾 Internet 使用者的難題。后來,史隆管理學院的 MBA 學生 Jonathan Seelig 加入了 Leighton 的隊伍中,從那以后他們開始實施自己的商業計劃,最終于 1998 年 8 月 20 日正式成立公司,命名為 Akamai。同年 1998 年,中國第一家 CDN 公司 ChinaCache 成立。在接下來的20年中,CDN行業歷經變革和持續發展,行業也涌現出很多云CDN廠商。阿里云CDN是2008年從淘寶CDN起家,在2014年正式發展成為阿里云CDN的,它不僅為阿里巴巴集團所有子公司提供服務,同時也將自身的資源、技術以云計算的方式輸出。

為什么要用 CDN 呢?

如果未做 CDN 之前跨洋跨國的長傳業務,用戶從西班牙訪問到美國紐約要經過北大西洋,直線距離6,000km 左右,按照光速300,000km/s 的傳輸速度,一束光從西班牙到紐約也至少需要 20ms 時間,一個往返就需要 40ms。如果是光纖傳輸數據,加上傳輸損耗、傳輸設備延時引入等,可能上百毫秒就出去了,即使用瀏覽器訪問一個再小不過的圖片,也會等個上百毫秒,積少成多,訪問一個美國購物網站會讓用戶無法接受。

如果使用CDN,網民實際訪問到的服務器不是位于美國的真實服務器,而是位于英國的 CDN 服務器。而 CDN 本身有緩存功能,把那些網頁里一成不變的內容,例如圖片、音樂、視頻等,都分發并緩存到了各個 CDN 服務節點上,這樣網民就不必從西班牙訪問到紐約,而是訪問距離自己較近的英國節點即可,從而節省了 80% 以上的時間。?

那 CDN 是如何將用戶的流量引入到 CDN 網絡中的呢?

在未做 CDN 時,我們訪問某個域名,直接拿到的是一個真實的服務器 IP 地址,這個顯示 IP 地址的 DNS 記錄信息叫 A 記錄,一般是下圖這個樣子。

當業務需要接入到 CDN 時,用戶只需調整自己的 DNS 配置信息,將 A 記錄改為 CNAME 記錄,將內容改為 CDN 廠商所提供的接入域名即可。

因此這里我們使用dig命令就能看到自己的域名實際指向的CDN地址:

這里我們能看到天貓商城的地址 www.tmall.com 通過CNAME解析到后邊的www.tmall.com.danuoyi.tbcache.com,而 www.tmall.com.danuoyi.tbcache.com則通過CDN加速,將A地址解析到了后百年的47.246.25.233和47.246.25.234地址上。

CDN的工作流程:

要使用CDN,就得知道CDN的工作流程,每個云服務商的CDN使用方式有差異,但是CDN的工作流程基本上沒有太大差別,我們來了解下:

有人在CDN域名加速配置了緩存策略,刷新了CDN,如果需要更新之前的資源,需要重新刷新CDN,對于一些比較大的資源比如超過50MB的,一般建議使用“預取”,模擬用戶首次請求下載資源的流程,將這些大資源同步到CDN。

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

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

相關文章

Redis:07---Redis數據結構

一、五大數據結構Redis可以存儲鍵與5種不同數據結構類型之間的映射,這5種數據結構類型分別為:STRING:字符串LIST:列表SET:集合HASH:散列ZSET:有序集合TYPE命令用來獲得鍵的數據類型,…

C++:14---虛繼承,虛函數,多態

一、多級混合繼承 下面先介紹菱形繼承 //菱形繼承 class A { public: int data; }; class B:public A { public: int data; }; class C:public A { public: int data; }; class D:public B,public C { public: int data; };int main() { D c; D.data=1; D.B::data=2;//訪問B中的…

(十四)nodejs循序漸進-高性能游戲服務器框架pomelo之開發Treasures游戲

#Tutorial 2 -- Treasures ##描述 Treasures 游戲是從 LordOfPomelo 中抽取出來,去掉了大量的游戲邏輯,用以更好的展示 Pomelo 框架的用法以及運作機制。 Treasures 很簡單,輸入一個用戶名后,會隨機得到一個游戲角色,…

leetcode243. 最短單詞距離(vip題)好像挺簡單?

給定一個單詞列表和兩個單詞 word1 和 word2,返回列表中這兩個單詞之間的最短距離。 示例: 假設 words ["practice", "makes", "perfect", "coding", "makes"] 輸入: word1 “coding”, word2 “practice”…

談談蘋果應用內支付(IAP)的坑

一、請求商品 下面是請求商品的代碼: - (void)validateProductIdentifier:(NSArray *)productIdentifier {SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifier]];self.request = productRe…

leetcode204. 計數質數(vip題)

統計所有小于非負整數 n 的質數的數量。 示例: 輸入: 10 輸出: 4 解釋: 小于 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。 思路:篩法,見代碼。 class Solution {public int countPrimes(int n) {// 1. 給數加上標記byte[] nums new byte[n];for (i…

如何使得客戶端和服務器端完美配合做IOS應用內付費

配置Developer.apple.com 登錄到Developer.apple.com,然后進行以下步驟: 為應用建立建立一個不帶通配符的App ID用該App ID生成和安裝相應的Provisioning Profile文件。配置iTunes Connect 登錄到iTunes Connet,然后進行以下步驟: 用該App ID創建一個新的應用。在該應用中…

IOS內購流程從0-1手把手教會

蘋果掌握著可能是全球最重要的APP分發渠道,然而30%的抽成近年來也被人批評,現在蘋果似乎也看到反對意見了,從2021年1月1日開始,部分小型企業的分成費用降低到15%。 據報道,蘋果將于2021年1月1日啟動App Store小企業項目,會降低他們的抽成費用。針對年收入不足100萬美元的…

leetcode217. 存在重復元素(vip題)超簡單

給定一個整數數組,判斷是否存在重復元素。 如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。 示例 1: 輸入: [1,2,3,1] 輸出: true 示例 2: 輸入: [1,2,3,4] 輸出: false 示例 3: 輸入: [1,1,…

訂單數據持久化和驗證相關解決方案

訂單數據持久化 有時候蘋果支付在支付完成后,從蘋果服務器返回收據的過程中可能會掉單(可能是網絡問題,可能是蘋果BUG,也有一部分是開發者自身埋的坑),因此我們需要一個訂單持久化的機制來保障。 首先根據內購商品ID(此商品ID是在蘋果后臺建好的內購商品)、用戶信息(…

IOS iap處理邏輯流程圖再次梳理

序言: 本文補全一下iOS iap處理邏輯。 iap處理邏輯 蘋果退單wiki:https://developer.apple.com/documentation/storekit/in-app_purchase/handling_refund_notifications 一、上圖主要處理了以下業務: 普通購買 自動續訂訂閱 補單處理 預防黑產 退單處理 二、除了上述業…

(十七)深入淺出TCPIP之HTTP和HTTPS

超文本傳輸協議HTTP協議被用于在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此&…

leetcode283. 移動零 比官方更好的解法。

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 示例: 輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 必須在原數組上操作,不能拷貝額外的數組。 盡量減少操作次數。 思路:記錄0的個…

C++:15---異常機制

1.概念:異常處理是一種允許兩個獨立開發的程序組件在程序執行時遇到不正常的情況相互通信的工具 2.異常檢測和異常處理的方式throw表達式:程序遇到了錯誤或者無法處理的問題,使用throw引發異常try、catch語句塊:以關鍵字tyr開始,并以一個或多個catch子句結束。它們也被稱為…

Redis:08---字符串對象

一、字符串對象概述字符串類型是Redis最基礎的數據結構。首先鍵都是字符串類型,而且其他幾種數據結構都是在字符串類型基礎上構建的,所以字符串類型能為其他四種數據結構的學習奠定基礎字符串就是一個由字節組成的序列如下圖所示,字符串類型的…

leetcode252. 會議室

給定一個會議時間安排的數組&#xff0c;每個會議時間都會包括開始和結束的時間 [[s1,e1],[s2,e2],...] (si < ei)&#xff0c;請你判斷一個人是否能夠參加這里面的全部會議。 示例 1: 輸入: [[0,30],[5,10],[15,20]] 輸出: false 示例 2: 輸入: [[7,10],[2,4]] 輸出: tr…

(十八)深入淺出TCPIP之epoll的一些思考

Epoll基本介紹在linux的網絡編程中&#xff0c;很長的時間都在使用select來做事件觸發。在linux新的內核中&#xff0c;有了一種替換它的機制&#xff0c;就是epoll。相比于 select&#xff0c;epoll最大的好處在于它不會隨著監聽fd數目的增長而降低效率。因為在內核中的select…

leetcode292. Nim 游戲

你和你的朋友&#xff0c;兩個人一起玩 Nim 游戲&#xff1a;桌子上有一堆石頭&#xff0c;每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最后一塊石頭的人就是獲勝者。你作為先手。 你們是聰明人&#xff0c;每一步都是最優解。 編寫一個函數&#xff0c;來判斷你是否可以在給定石頭…

C++:16---強制類型轉換和類型轉換

舊式的強制類型轉換 在早期C/C++中,顯式地進行強制類型的轉換有以下兩種形式:type (expr) ; //函數形式的強制類型轉換(type) expr; //C語言風格的強制類型轉換比如: char c = 12; int b = (int)c; float f = float(b); C++的新式強制類型轉換…

Nginx不停機優雅升級

最近線上運行的游戲越來越多,云服務商也給我推送提示系統升級,漏洞補丁升級,也有nginx更新的。 有一些比較關鍵性的系統補丁需要立即更新處理,有一些可以換一換不用升級,但此nginx升級的需求比較迫切,但更新可能需要重啟nginx。 這將會影響到我們這樣的一個登錄業務邏輯…