乾貨 | CDN搭配OSS最佳實踐 ——搭建動靜態分離的應用架構
一、傳統架構及痛點
傳統的網站產品應用架構,所有資源部署在應用伺服器本地儲存或掛載的資料儲存區,對於動靜態資源不作分離, 產品架構如下圖所示:
該架構存在諸多問題:
-
系統效能會隨著系統訪問量的增長而受到限制甚至遭遇瓶頸;
-
靜態資源訪問量巨大時,佔用出口頻寬,影響動態請求響應;
-
使用者請求分散時,回源距離長,影響使用者體驗(單純使用CDN仍然需要回源拉取)。
二、CDN+OSS架構方案:
該架構充分利用到“OSS頻寬/流量成本低、獨立響應、儲存空間無上限”的特點,結合CDN分發網路,實現資源動靜分離,支援海量使用者訪問。
最佳化後產品架構如下圖所示:
1、適用場景
-
靜態檔案儲存量大,檔案數量多,檔案體積較大,伺服器儲存空間不夠;
-
靜態檔案訪問量大,佔用頻寬負載或伺服器負載,I/O問題導致使用者訪問卡頓;
-
使用者分佈較為分散,分佈在全國各地、各運營商;
-
對檔案下載速度要求較高,且併發下載量高。
2、架構描述
涉及產品介紹:
-
物件儲存服務(OSS: Object Storage Service)是京東雲自主研發的大規模分散式物件儲存服務,面向企業和個人開發者提供高可用、低成本、強安全的雲端儲存服務。您可以實現對資料的統一管理,滿足各類儲存需求。支援標準的 RESTfulAPI 介面,您只需按實際用量付費,無最低使用限制。支援流式寫入和檔案寫入兩種方式。面對冷資料儲存的場景,對於那些訪問頻率比較低,同時對訪問速度要求不高的資料,可以將資料以低頻訪問的方式進行儲存,為您儲存和備份資料提供了一個海量低價的空間。
-
京東雲CDN(Content Delivery Network),基於京東優質網路基礎設施和智慧雲端計算技術,向使用者提供低成本、高效能、可擴充套件的網際網路內容分發服務。利用廣泛的節點覆蓋和先進的雲排程、雲端儲存技術,將海量內容更快、更可靠地投遞給網際網路終端使用者,降低網站運營成本,提升使用者網際網路應用體驗。京東雲 CDN 的前身是服務於京東商城的自建 CDN 平臺,歷經多年 618 和 11.11等大促業務活動考驗,京東雲 600+ 節點廣泛覆蓋於全國各區域和運營商,精選全網優質基礎設施,邊緣節點覆蓋全網、全地域,真正實現就近接流、就近推流。
將 京東雲的物件儲存和CDN服務搭配使用,使用京東自建的全網CDN加速節點,為您提供上傳下載雙向加速,實現全網覆蓋、快速高效的內容分發。
架構優勢:
-
降低Web/應用伺服器負載,靜態資源響應壓力轉移到CDN,避免效能影響;
-
費用最低,OSS的儲存費用遠低於雲主機磁碟費用;
-
超大容量儲存空間,大頻寬上傳通道,無需擔心儲存空間上限;
-
降低流量費用,正常訪問熱度情況下,相比直接訪問OSS,減少95%回源流量。
三、實際案例
以一個常見的Web站點為例。是一個新聞入口網站,有500GB的新聞圖片、新聞影片、JS檔案等靜態內容,使用了LAMP架構,目前站點全套架構部署在京東雲上。隨著使用者業務發展,訪問量的不斷增長,不少使用者反映,訪問網站的速度越來越慢,圖片、影片載入慢,卡頓率高,網站響應慢。客戶工程師發現使用者上傳的圖片越來越多,業務高峰期,頻寬峰值很高,伺服器I/O經常被佔滿。
對於以上案例我們可以利用以上介紹的OSS+CDN架構對網站進行最佳化,實現動靜分離的產品架構,提升使用者訪問體驗,同時成本可控。
解決方案及步驟如下:
1、對網站應用架構進行整理,區分動態程式部分和靜態部分到不同的目錄進行管理,建立image、video、js目錄,分別放置所有網站圖片素材;
2、京東雲控制檯進入OSS產品,新建一個Bucket。根據雲主機所在的區域選擇bucket所在區域,許可權選擇“公共讀”,bucket名稱與雲主機新建的目錄的名稱對應,如“abc-image-bucket”、“abc-video-bucket”和“abc-js-bucket”;
3、分別繫結域名image.abc.com、video.abc.com、js.abc.com並進行CDN加速。
4、上傳檔案:提供控制檯上傳和表單上傳兩種方式。
-
控制檯上傳 :可以透過物件儲存控制檯上傳小於1GB 的檔案。如您要上傳的檔案大於1GB,請透過物件儲存 API或SDK的方式上傳。
-
表單上傳:表單上傳指使用者使用OSS API中的Post Object請求來完成檔案的上傳,非常適合嵌入在HTML網頁中來上傳檔案;
5、修改DNS排程,增加CNAME解析,將原本訪問源站的請求,排程到CDN加速域名,以後使用者訪問您的網站的靜態檔案就全部透過OSS+CDN的方式訪問,不再佔用您雲主機的資源。
四、典型應用場景
-
新聞入口網站
-
應用分發市場
-
線上音樂、線上K歌
-
影片、短影片(UGC/PGC)
-
電影院線
-
線上教育
歡迎點選“ 京東雲 ”瞭解更多精彩內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2649452/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【乾貨】分庫分表最佳實踐
- 最佳實踐:使用阿里雲CDN加速OSS訪問阿里
- 網際網路動靜分離架構架構
- Tomcat+Nginx實現動靜分離和負載均衡架構部署TomcatNginx負載架構
- 前端乾貨之JS最佳實踐前端JS
- HAproxy企業應用,TCP/HTTP動靜分離TCPHTTP
- 一次前後端分離架構的實踐後端架構
- mysql讀寫分離的最佳實踐MySql
- Laravel5.6 + 阿里雲 OSS 完成圖文分離架構Laravel阿里架構
- Laravel頁面靜態化最佳實踐Laravel
- 乾貨|EasyMR 基於 Kubernetes 應用的監控實踐
- React/Vue 實現的前端應用, java/Go/Python 實現的後端應用,前後端分離的應用部署的最佳實踐ReactVue前端JavaGoPython後端
- 乾貨 | 京東雲部署Wordpress最佳實踐
- 微服務架構最佳實踐微服務架構
- 手淘架構組最新實踐 | iOS基於靜態庫插樁的⼆進位制重排啟動最佳化架構iOS
- 乾貨分享:容器 PaaS 新技術架構下的運維實踐架構運維
- Java Web應用的程式碼分層最佳實踐。JavaWeb
- Android應用架構的發展和實踐Android應用架構
- Java最佳實踐經驗第1條:用靜態工廠方法代替構造器Java
- 貨拉拉貨運iOS使用者端架構最佳化實踐iOS架構
- 構建高效的 Python Web 應用:最佳實踐指南PythonWeb
- 天翼雲CDN最佳實踐
- Nginx+Tomcat實現動靜分離NginxTomcat
- 編寫架構文件的最佳實踐 - Singh架構
- 編碼最佳實踐——介面分離原則
- Aggregated APIServer 構建雲原生應用最佳實踐APIServer
- Shopee ClickHouse 冷熱資料分離儲存架構與實踐架構
- 乾貨 | 京東雲賬號安全管理最佳實踐
- 11,nginx動靜分離Nginx
- 微服務架構十條最佳實踐微服務架構
- Unity應用架構設計(12)——AOP思想的實踐Unity應用架構
- 乾貨:排程演算法的價值與阿里的應用實踐演算法阿里
- Nginx 動靜分離與負載均衡的實現Nginx負載
- 使用Docker Compose構建生產應用的最佳實踐 — NickDocker
- Kubernetes 部署 Laravel 應用的最佳實踐Laravel
- 【BGP乾貨】BGP線路原則詳解:是什麼?(動態/靜態)
- 013.Nginx動靜分離Nginx
- ABP vnext模組化架構的最佳實踐的實現架構