開源CDN產品-GoEdge

一、背景

? ? ? ? 上篇文章分析了一下CDN的基本原理以及使用代碼實現了一個乞丐版的智能DNS調度器。從整個例子我們可以清晰了解到CDN原理,也就那么回事。

? ? ? ? 但是,之前也講過了,CDN產品融合的技術比較雜、也比較多。所以我就想著,萬物皆有開源競品。試著找找有沒有現成的開源解決方案。例如Web服務器,我們要構建站點就有開源的Nginx。那我想做CDN的話,也會有對整套的開源解決方案嗎?

? ? ? ? 找了半天,發現能用的很少。我猜測原因可能是,因為CDN這種技術比較雜、涉及的技術面比較廣,不像只單純研究Web一樣研究nginx。所以基本上沒開發者去開發這么一套龐大并且涉及技術面很廣,又幾乎沒有人單獨自己去部署CDN的需求。 畢竟CDN的邊緣節點鋪設的密集度、節點穩定性、帶寬大小、算力大小等等,不是個人開發者或者普通企業去做的事情。

? ? ? ? 只有專業的CDN廠商,才會花費時間去鋪設邊緣節點,在各個城市大小機房架設節點,還有利用P2P技術、PCDN技術等等,才能為用戶提供可靠的、快速的CDN服務,達到加速效果。

? ? ? ? 不過我也找到了一款免費開源的類CDN解決方案,可以作為技術學習進行研究,例如整體架構、設計思路,給人一個直觀上的感受。這個產品名稱為GoEdge

? ? ? ? 官網:?https://goedge.cloud/

? ??

? ? ? ? 從名稱就能看出,使用Go語言進行主要的實現。

二、架構介紹

1、CDN原理分析

? ? ? ? 這里借鑒官網文檔信息,讓大家對CDN的原理再次進行一次記憶加強。

從上圖可以看到:

  1. 不同區域或者不同網絡的用戶,可以通過DNS服務被分配到不同的邊緣節點上;
  2. 邊緣節點如果已經緩存內容,可以就近直接向用戶發送內容;如果還沒有緩存內容,則一級一級網上找,直至去源站(即內容提供原始的站點)去獲取內容,然后再一級一級返回,直至發送給用戶;
  3. 由于邊緣節點可以緩存內容,所以可以有以下幾個優點:
    1. 降低了網絡延時,加速了內容的分發,因為用戶可以就近獲取內容,就無需跨多個網絡千里迢迢訪問最原始的服務器;
    2. 大幅降低源站壓力,通過邊緣節點的分擔,源站通常可以減少絕大部分訪問;
    3. 增加數據傳輸的可靠性,因為每個邊緣節點都可以獨立發送內容,即使源站服務器宕機,也不會影響內容的訪問;
    4. 增強了源站的安全性,當遭遇大規模類似于DDOS的攻擊時,可以通過邊緣節點有效減少到源站的流量,也可以在邊緣節點增加防御規則(比如WAF),讓攻擊的流量無法到達源站,從而提升了源站的安全性。

?2、GoCDN架構圖

? ? ? ? 存在幾個角色的程序:

? ? ? ? 1、控制平面, 有后臺管理, 可以針對節點管理、節點監控管理、緩存預熱等等

? ? ? ? 2、邊緣節點,實際提供服務的節點,緩存了源站的相關靜態數據

? ? ? ? 3、API節點,為全局的服務提供一個出入口

三、docker部署GoEdge

1、運行admin控制臺

docker-compose.yml如下:

version: "3"networks:goedge:external: falseservices:mysqld:image: mysql:8container_name: mysqldenvironment:- MYSQL_ROOT_PASSWORD=root- MYSQL_USER=edges- MYSQL_PASSWORD=edges- MYSQL_DATABASE=edgesnetworks:- goedgevolumes:- ./data/db/mysql:/var/lib/mysql:rwrestart: alwaysedge-admin:image: icodex/edge-admin:1.3.3container_name: edge-adminports:- 7788:7788/tcp- 8001:8001/tcpnetworks:- goedgevolumes:- ./data/edge-admin/configs:/usr/local/goedge/edge-admin/configs- ./data/edge-api/configs:/usr/local/goedge/edge-admin/edge-api/configsrestart: always

2、安裝節點注冊到admin控制臺

?docker-compose.yml:

version: "3"services:edge-node:image: icodex/edge-node:1.3.3container_name: edge-nodeenvironment:- ENDPOINTS=http://xxx.com:8001     #admin所在信息- CLUSTERID=xxx              #登錄控制臺后,查看集群節點信息- SECRET=xxx                #登錄控制臺后,查看集群節點信息network_mode: hostvolumes:- ./data/edge-node/cache:/opt/cache- ./data/edge-node/configs:/usr/local/goedge/edge-node/configsrestart: always

3、配置admin

? ? ? ? ?進入admin的7788端口,首次進行安裝:

?

?

?

?

4、邊緣節點管理

? ? ? ? 我們可以根據邊緣節點,對這些邊緣節點進行如停止、重啟、查看日志、配置、監控等管理。還可以針對數據進行預熱、配置綁定域名、回源站策略等等。

? ? ? ? 除了CDN的能力,還有提供了WAF的相關功能。

四、總結

? ? ? ? CDN技術一般只有大廠或者本身就是做CDN的企業才會比較深入研究,所以針對此類開源產品相對較少,開發者不愿意花費很大的精力去研究這種技術。 這種技術要得到市場強大的支持,需要鋪設足夠多的邊緣節點,同時還要保證這些節點的帶寬充足、可用性高, 個人開發者沒那么多精力和心思去做, 大部分人花點錢買CDN廠家提供的服務也花不了幾個錢(靜態加速的情況下),沒必要去研究太深。

? ? ? ? CDN還涉及P2P分發、PCDN、WAF、DDOS、NAT內網穿透、流量清洗等等,太多東西了,開發者的精力有限,只能這么說.

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

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

相關文章

正則表達式-萬能表達式

1、正則 正則表達式是一組由字母和符號組成的特殊文本, 它可以用來從文本中找 出滿足你想要的格式的句子. {“basketId”: 0, “count”: 1, “prodId”: #prodId#, “shopId”: 1, “skuId”: #skuId#} #prodId# re相關的文章: https://www.cnblogs.com/Simple-S…

javaWeb Router

一、路由簡介 1、什么是路由? - 定義:路由就是根據不同的 URL 地址展示不同的內容或頁面。 - 通俗理解:路由就像是一個地圖,我們要去不同的地方,需要通過不同的路線進行導航。 2、路由的作用 - 單頁應用程序…

【前端】使用 HTML、CSS 和 JavaScript 創建一個數字時鐘和搜索功能的網頁

文章目錄 ?前言?一、項目結構?二、HTML 結構?三、CSS 樣式?四、JavaScript 功能?五、運行效果?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧(,NET/Java/Python/C)、數…

聚焦應用常用功能,提升用戶體驗與分發效率

隨著HarmonyOS應用的持續發展,應用的功能將越來越豐富,實際上80%的用戶使用時長都會集中在20%的特性上,其余的功能可能也僅僅是面向部分用戶。 用戶在下載應用時,如果應用包含大量的功能和資源,可能會導致下載時間過長…

OCR 識別案例

OCR 識別案例 注意點:輸入圖像尺寸比例盡量和參與模型訓練的數據集比例相似,識別效果會更好。 1、pytesseract Pytesseract是一個Python的光學字符識別(OCR)工具,它作為Tesseract OCR引擎的封裝,允許你在…

IP大洗牌ipv6強勢來襲!!!【ipv6配置及應用】

前言 隨著時代的發展,IPv4(互聯網協議第四版)已逐漸無法滿足全球互聯網爆炸式增長的需求。自20世紀80年代誕生以來,IPv4憑借其簡潔的架構和約43億的地址容量,支撐了互聯網的早期擴張。然而,在移動互聯網、物…

OpenAI 推出圖像生成新突破:GPT-4o 實現圖像編輯對話化

關鍵要點 OpenAI 推出了 4o 圖像生成功能,集成于 GPT-4o,提供精準且逼真的圖像生成。 它似乎適用于多種用戶,包括免費用戶,API 訪問預計幾周內推出。 安全措施包括 C2PA 元數據和內容屏蔽,限制生成不適當圖像。 研究…

如何快速對比兩個不同的excel文件中的單元格的數據是否完全相同 并把不同的單元格的背景顏色更改為紅色?

要快速對比兩個不同的Excel文件中的單元格數據是否完全相同,并將不同的單元格背景顏色更改為紅色,可以使用Excel的以下幾種方法: 方法一:使用條件格式 打開兩個Excel文件。將一個文件的內容復制到另一個文件的新工作表中&#x…

口腔種植全流程AI導航系統及輔助診療與耗材智能化編程分析

一、系統架構與編程框架設計 口腔種植全流程人工智能導航系統的開發是一項高度復雜的多學科融合工程,其核心架構需在醫學精準性、工程實時性與臨床實用性之間實現平衡。系統設計以模塊化分層架構為基礎,結合高實時性數據流與多模態協同控制理念,覆蓋從數據采集、智能決策到…

nginx配置頁面緩存,前端每次打包生成新的js文件

前端需要處理的:使用時間戳作為文件名 // nuxt.config.js export default {build: {filenames: {app: ({ isDev }) > isDev ? [name].js : [name].${Date.now()}.js, // 生產環境用時間戳chunk: ({ isDev }) > isDev ? [name].js : [name].${Date.now()}.j…

4.Socket類、InetAddr類、Epoll類實現模塊化

目錄 1. InetAddr類 類定義 代碼說明 類實現 2.Socket類 類定義 類實現 3. Epoll類 類定義 構造與析構函數 方法實現 類實現 4. 使用模塊化設計 示例使用(main.cpp) 5. 運行程序 隨著程序復雜度的增加,單一的面向過程的代碼會變得難以理…

視頻生成的測試時Scaling時刻!清華開源Video-T1,無需重新訓練讓性能飆升

來源 | 機器之心 視頻作為包含大量時空信息和語義的媒介,對于 AI 理解、模擬現實世界至關重要。視頻生成作為生成式 AI 的一個重要方向,其性能目前主要通過增大基礎模型的參數量和預訓練數據實現提升,更大的模型是更好表現的基礎&#xff0c…

Go 語言標準庫中time模塊詳細功能介紹與示例

以下是 Go 語言 time 模塊的詳細說明及示例,涵蓋時間操作、定時器、時區處理等核心功能: 一、時間基礎操作 1. 獲取時間 // 當前本地時間 now : time.Now() fmt.Println(now) // 2023-08-04 15:30:45.123456 0800 CST// 構造指定時間 t : time.Date(20…

【強化學習】基于深度強化學習的微能源網能量管理與優化策略研究【Python】

目錄 主要內容 程序要點 2.1 微能源網系統組成 2.2 強化學習及Q學習算法 部分代碼 運行結果 下載鏈接 主要內容 該程序借助深度 Q 網絡(DQN),學習預測負荷、風 / 光可再生能源功率輸出及分時電價等環境信息,運用…

dom0-kernel: /thermal-zones/soc_max/cooling-maps/map0: could not find phandle 2

問題描述: 由于soc_max下某個節點找不到,到時dom0-kernel后面有很多有關thermal熱管理之類報錯 問題解決及其原因分析: 這是因為在Xen解析相關節點時,soc_max下的某個節點被跳過了,注釋掉相關的cpu節點處理dom0就可以找…

關于計算機視覺中的插值小記

計算機視覺中的插值(Interpolation)講解 插值(Interpolation)在計算機視覺中是一項基礎操作,常用于圖像縮放、旋轉、去噪、圖像重建等任務。其核心思想是在已知數據點之間進行推測,估計未知的像素值或特征…

計算機網絡--傳輸層(1)

第五章 傳輸層 一、傳輸層基本功能 進程到進程的邏輯通信 套接字(Socket):IP地址:端口號 IP地址:標識主機(網絡層功能)端口號:16位整數(0-65535),標識進程 熟…

指定 Python 3.12.6-slim 作為基礎鏡像

指定 Python 3.12.6-slim 作為基礎鏡像,意思就是: 👉 用官方的 Python 3.12.6(精簡版)作為容器的起點,里面已經有 Python 3.12.6 預裝好了,你不用自己裝。 🔹 為什么用 -slim&…

【藍橋杯】算法筆記1

1.暴力枚舉 給定一個正整數n,請找出所有滿足a + b = n的整數對(a, b),其中a和b都是正整數,且a ≤ b。 輸入格式:一個正整數n (1 ≤ n ≤ 10?) 輸出格式:所有符合條件的(a, b)對,每行一對,按a的升序排列。如果沒有符合條件的對,輸出"No solution"。 問題分…

專注自習室:番茄工作法實踐

專注自習室:番茄工作法實踐 我需要一個任務管理工具,但在網上找了很多都找不到合適的工具。市面上的大多數產品過于強調任務完成性,給我帶來了很強的心理壓力,這種壓力最終反而降低了我的工作效率。于是我決定自己動手&#xff0…