主頁 >  其他 > 網路協議知識串講:雙十一故事串起碎片網路協議(上)

網路協議知識串講:雙十一故事串起碎片網路協議(上)

2020-11-12 06:31:49 其他

基本的網路知識我們都講完了,還記得最初舉的那個“雙十一”下單的例子嗎?這一節開始,我們詳細地講解這個程序,用這個程序串起我們講過的網路協議,

我把這個程序分為十個階段,從云平臺中搭建一個電商開始,到 BGP 路由廣播,再到 DNS 域名決議,從客戶看商品圖片,到最終下單的整個程序,每一步我都會詳細講解,這節我們先來看前三個階段,

1. 部署一個高可用高并發的電商平臺

首先,咱們要有個電商平臺,假設我們已經有了一個特別大的電商平臺,這個平臺應該部署在哪里呢?假設我們用公有云,一般公有云會有多個位置,比如在華東、華北、華南都有,畢竟咱們的電商是要服務全國的,當然到處都要部署了,我們把主站點放在華東,

 

為了每個點都能“雨露均沾”,也為了高可用性,往往需要有多個機房,形成多個可用區(Available Zone),由于咱們的應用是分布在兩個可用區的,所以假如任何一個可用區掛了,都不會受影響,

我們來回想資料中心那一節,每個可用區里有一片一片的機柜,每個機柜上有一排一排的服務器,每個機柜都有一個接入交換機,有一個匯聚交換機將多個機柜連在一起,

這些服務器里面部署的都是計算節點,每臺上面都有 Open vSwitch 創建的虛擬交換機,將來在這臺機器上創建的虛擬機,都會連到 Open vSwitch 上,

 

 接下來,你在云計算的界面上創建一個 VPC(Virtual Private Cloud,虛擬私有網路),指定一個 IP 段,這樣以后你部署的所有應用都會在這個虛擬網路里,使用你分配的這個 IP 段,為了不同的 VPC 相互隔離,每個 VPC 都會被分配一個 VXLAN 的 ID,盡管不同用戶的虛擬機有可能在同一個物理機上,但是不同的 VPC 二層壓根兒是不通的,

由于有兩個可用區,在這個 VPC 里面,要為每一個可用區分配一個 Subnet,也就是在大的網段里分配兩個小的網段,當兩個可用區里面網段不同的時候,就可以配置路由策略,訪問另外一個可用區,走某一條路由了,

接下來,應該創建資料庫持久化層,大部分云平臺都會提供 PaaS 服務,也就是說,不需要你自己搭建資料庫,而是采用直接提供資料庫的服務,并且單機房的主備切換都是默認做好的,資料庫也是部署在虛擬機里面的,只不過從界面上,你看不到資料庫所在的虛擬機而已,

云平臺會給每個 Subnet 的資料庫實體分配一個域名,創建資料庫實體的時候,需要你指定可用區和 Subnet,這樣創建出來的資料庫實體可以通過這個 Subnet 的私網 IP 進行訪問,

為了分庫分表實作高并發的讀寫,在創建的多個資料庫實體之上,會創建一個分布式資料庫的實體,也需要指定可用區和 Subnet,還會為分布式資料庫分配一個私網 IP 和域名,

對于資料庫這種高可用性比較高的,需要進行跨機房高可用,因而兩個可用區都要部署一套,但是只有一個是主,另外一個是備,云平臺往往會提供資料庫同步工具,將應用寫入主的資料同步給備資料庫集群,

接下來是創建快取集群,云平臺也會提供 PaaS 服務,也需要每個可用區和 Subnet 創建一套,快取的資料在記憶體中,由于讀寫性能要求高,一般不要求跨可用區讀寫,

再往上層就是部署咱們自己寫的程式了,基礎服務層、組合服務層、Controller 層,以及 Nginx 層、API 網關等等,這些都是部署在虛擬機里面的,它們之間通過 RPC 相互呼叫,需要到注冊中心進行注冊,

它們之間的網路通信是虛擬機和虛擬機之間的,如果是同一臺物理機,則那臺物理機上的 OVS 就能轉發過去;如果是不同的物理機,這臺物理機的 OVS 和另一臺物理機的 OVS 中間有一個 VXLAN 的隧道,將請求轉發過去,

再往外就是負載均衡了,負載均衡也是云平臺提供的 PaaS 服務,也是屬于某個 VPC 的,部署在虛擬機里面的,但是負載均衡有個外網的 IP,這個外網的 IP 地址就是在網關節點的外網網口上的,在網關節點上,會有 NAT 規則,將外網 IP 地址轉換為 VPC 里面的私網 IP 地址,通過這些私網 IP 地址訪問到虛擬機上的負載均衡節點,然后通過負載均衡節點轉發到 API 網關的節點,

網關節點的外網網口是帶公網 IP 地址的,里面有一個虛擬網關轉發模塊,還會有一個 OVS,將私網 IP 地址放到 VXLAN 隧道里面,轉發到虛擬機上,從而實作外網和虛擬機網路之間的互通,

不同的可用區之間,通過核心交換機連在一起,核心交換機之外是邊界路由器,

在華北、華東、華南同樣也部署了一整套,每個地區都創建了 VPC,這就需要有一種機制將 VPC 連接到一起,云平臺一般會提供硬體的 VPC 互連的方式,當然也可以使用軟體互連的方式,也就是使用 VPN 網關,通過 IPsec VPN 將不同地區的不同 VPC 通過 VPN 連接起來,

對于不同地區和不同運營商的用戶,我們希望他能夠就近訪問到網站,而且當一個點出了故障之后,我們希望能夠在不同的地區之間切換,這就需要有智能 DNS,這個也是云平臺提供的,

對于一些靜態資源,可以保持在物件存盤里面,通過 CDN 下發到邊緣節點,這樣客戶端就能盡快加載出來,

2. 大聲告訴全世界,可以到我這里買東西

當電商應用搭建完畢之后,接下來需要將如何訪問到這個電商網站廣播給全網,

剛才那張圖畫的是一個可用區的情況,對于多個可用區的情況,我們可以隱去計算節點的情況,將外網訪問區域放大,

 

 外網 IP 是放在虛擬網關的外網網口上的,這個 IP 如何讓全世界知道呢?當然是通過 BGP 路由協議了,

每個可用區都有自己的匯聚交換機,如果機器數目比較多,可以直接用核心交換機,每個 Region 也有自己的核心交換區域,

在核心交換外面是安全設備,然后就是邊界路由器,邊界路由器會和多個運營商連接,從而每個運營商都能夠訪問到這個網站,邊界路由器可以通過 BGP 協議,將自己資料中心里面的外網 IP 向外廣播,也就是告訴全世界,如果要訪問這些外網 IP,都來我這里,

每個運營商也有很多的路由器、很多的點,于是就可以將如何到達這些 IP 地址的路由資訊,廣播到全國乃至全世界,

3. 打開手機來上網,域名決議得地址

這個時候,不但你的這個網站的 IP 地址全世界都知道了,你打的廣告可能大家也都看到了,于是有客戶下載 App 來買東西了,

 

客戶的手機開機以后,在附近尋找基站 eNodeB,發送請求,申請上網,基站將請求發給 MME,MME 對手機進行認證和鑒權,還會請求 HSS 看有沒有錢,看看是在哪里上網,

當 MME 通過了手機的認證之后,開始建立隧道,建設的資料通路分兩段路,其實是兩個隧道,一段是從 eNodeB 到 SGW,第二段是從 SGW 到 PGW,在 PGW 之外,就是互聯網,

PGW 會為手機分配一個 IP 地址,手機上網都是帶著這個 IP 地址的,

當在手機上面打開一個 App 的時候,首先要做的事情就是決議這個網站的域名,

在手機運營商所在的互聯網區域里,有一個本地的 DNS,手機會向這個 DNS 請求決議 DNS,當這個 DNS 本地有快取,則直接回傳;如果沒有快取,本地 DNS 才需要遞回地從根 DNS 服務器,查到.com 的頂級域名服務器,最終查到權威 DNS 服務器,

如果你使用云平臺的時候,配置了智能 DNS 和全域負載均衡,在權威 DNS 服務中,一般是通過配置 CNAME 的方式,我們可以起一個別名,例如 vip.yourcomany.com ,然后告訴本地 DNS 服務器,讓它請求 GSLB 決議這個域名,GSLB 就可以在決議這個域名的程序中,通過自己的策略實作負載均衡,

GSLB 通過查看請求它的本地 DNS 服務器所在的運營商和地址,就知道用戶所在的運營商和地址,然后將距離用戶位置比較近的 Region 里面,三個負載均衡 SLB 的公網 IP 地址,回傳給本地 DNS 服務器,本地 DNS 決議器將結果快取后,回傳給客戶端,

對于手機 App 來說,可以繞過剛才的傳統 DNS 決議機制,直接只要 HTTPDNS 服務,通過直接呼叫 HTTPDNS 服務器,得到這三個 SLB 的公網 IP 地址,

看,經過了如此復雜的程序,咱們的萬里長征還沒邁出第一步,剛剛得到 IP 地址,包還沒發呢?話說手機 App 拿到了公網 IP 地址,接下來應該做什么呢?

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/211568.html

標籤:其他

上一篇:熱門技術中的應用-微服務中的相關協議5-跨語言RPC協議:交流之前,雙方先來個專業術語表

下一篇:網路協議知識串講:雙十一故事串起碎片網路協議(中)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more