網際網路流程框架
網際網路流程框架
現在一般的大公司整個部門由於要處理大量的資料,很多部門都是分開的。我們先來看下整體的業務流程
這是一些大公司的網路架構。一些中小型公司可能沒有RPC微服務叢集。因為沒有特別大的效能開銷,也可能沒有nginx和系統
服務叢集。
來說說開發網站的時候各個作用。
伺服器:開發網站放在網路上需要有伺服器的支援,所謂伺服器,其實就是我們的電腦(當我們電腦安裝伺服器(tomcat)之後便
成了伺服器。),是用來響應客戶端的各種請求。只不過伺服器可能是很多臺。
ip:伺服器搭建好了之後你想要別人可以搜尋到你的網站,這時候需要有一個固定的ip。區域網分配的ip是經常變化的,不能當
作伺服器的ip。而這個固定ip你是需要申請併購買的。你可以在移動、聯通或者電信購買固定的ip。但是除非你有比較大的企業
或者國家支援(比如國家的高校,都會有一個ip)你才有機會分配一個固定的ip。否則你只能在一些代理商(騰訊,阿里巴巴等購
買固定ip)。我們所說的買伺服器其實就是買ip,開發網站需要的jdk,tomcat,mysql資料庫我們都可以在自己電腦上搭建好,
就是沒有固定ip而已。買了人家的伺服器,其實是代理商在他們的電腦上安裝一個虛擬機器。你操控人家的電腦,安裝jdk,tomcat並
且給了你一個固定的i固定的ip
防火牆:是指阻攔外界請求的工具,對網站起到保護作用。可以給防火牆設定攔截,比如有人惡意的攻擊你的網站,不斷的
向伺服器端發請求,這時候防火牆發現同一個ip不斷訪問,他會認為非法,然後會拒絕這個ip的訪問。防止伺服器端資源的浪費
再比如登陸學校的網站的教務系統。你需要用校園的內網才可以進入教務系統,而如果通過外網訪問就會被防火牆攔截。這時候
需要進行身份驗證, 通過vpn驗證之後才能訪問。
dns:域名,為什麼要有域名這種東西,我們開發網站之後,需要申請個域名,別人訪問域名,然後對映到你的ip地址。然後訪
問到你的網站,這樣就避免了訪問網站的時候輸入很長很長的ip。你搜索百度,直接www.baidu.com就ok,沒有在地址搜尋欄
搜尋百度的ip地址吧。你的請求先發到dns,然後由dns解析,分析是你的伺服器地址,再把請求傳送到你的伺服器上。當然這
是dns服務端需要做的事情,你不需要去理會。
nginx:如果我們的網站規模比較大的話,會很多的網路請求要我們處理。一個記憶體為8g的伺服器一秒鐘可以同時處理10個
請求。一天處理的請求是864000。也就意味著我們一臺伺服器可以支撐的請求頂多是十萬個。那麼如果數量級更多的話伺服器
就會崩潰。這時候nginx就會發揮作用。nginx又稱為負載均衡。他來攔截請求,然後分發給不同的伺服器處理請求。這樣就可
以實現高併發,一些大型網站(百度,淘寶,京東,騰訊)等都是採用nginx技術實現高併發。
系統叢集和server服務叢集:系統叢集指獲取請求的伺服器,server服務叢集指處理請求的伺服器。你可能會好奇為什麼要這
樣把伺服器劃分,不就是獲取請求然後處理麼,為什麼要分成獲取請求的伺服器和處理請求的伺服器?其實這樣分工合作還是為
了效率。如果沒有server叢集,會有很多重複的服務模組。以電商網站為例子。比如你需要對一種商品進行管理(處理新增請求
,購買請求等)。然後又有一個商品有需要新增類似的功能(新增購物車請求,購買請求等)你又需要實現對這種商品的管理。這
樣是不是有很多相似功能卻重複寫了好多。但是如果有了server模組,就會省去很多麻煩。一個server就是一個功能模組。比
如是商品的購買的模組。這樣在有新商品進來的時候直接需要實現什麼功能走對應的服務模組就好。這種微服務模組形式又稱
為RPC微服務。
cache叢集:伺服器端的RPC微服務中的cache叢集是比較常見的形式。cache叢集中Redis,它是一個高效能的key-value資料
庫。可以在Redis存放使用者的登入資訊,這樣客戶在一定時間段的在登陸的時候,無論請求被打在了那個伺服器,都會去找Redis
檢視是否有這個使用者的登陸資訊,這樣不需要使用者再次登陸。不過為了安全性,伺服器常常會在一段時間後清理使用者的登陸信
息。如果使用者活躍的話就會更新這個資訊的過期時間。也可能在cache中存放訪問量相對來說比較大的頁面比如網站的主頁。會
有很大的訪問量。這時候把他放在伺服器的cache叢集。會大大提高訪問的效率,也會大大減少伺服器端的開銷。
redis的資料是短暫性的儲存在伺服器的記憶體裡。一旦伺服器重啟之後資料就會消失。當然可以把Redis的資料持久化,儲存在
硬碟中。不過這並不是Redis的主要用途。
db資料庫:資料庫是一個網站最核心的部分,一旦資料庫丟失那麼損失將會是巨大的。資料庫是網站最保密部分。對資料庫
的保護尤為重要。資料庫經常會備份。常用的方式有主從資料庫和讀寫分離資料庫。先來了解讀寫分離資料庫:讀寫分離是指這
個網站有兩個讀資料庫和寫資料庫。有資料更新之後會放在寫資料庫裡,然後把寫資料庫的更新內容放在讀書資料庫裡。這樣訪
問資料庫的時候會訪問讀資料庫的內容。有兩份資料庫會起到一定的保護作用。再來了解下主從資料庫:訪問資料庫都是對主數
據庫進行操作的。當有資料寫入主資料庫的時候,會把資料同步到從資料庫。對資料庫進行備份。當然如果你的資料比較寶貴,
網站比較大的話,你需要有多個從資料庫。這會帶來一定的開銷。但對於保護資料庫的安全性這點開銷還是值得的。保險還是要
有的。需要注意的是這種主從資料庫中的主資料庫資料更新到從資料庫更新並不是實時的,而是批量的,分時的更新資料。
你可能發現不同地區訪問同一種資源顯示結果不同,這是因為在不同地區的主資料庫可能不一致。導致搜尋結果不一致。當然有
可能是沒有更新從資料庫的原因。