大型網(wǎng)站服務(wù)器是什么架構(gòu)?
發(fā)布時間:2021-01-04作者:小編閱讀:0
任何大型網(wǎng)站都是經(jīng)歷用戶積累,然后成長。從一臺服務(wù)器到多臺服務(wù)器才能支持網(wǎng)站的現(xiàn)有數(shù)據(jù)、用戶和頁面請求。大型網(wǎng)站(如淘寶、JD.COM等)的系統(tǒng)架構(gòu)。)就具備高性能、高可用性、安全性等特征。它總是隨著用戶的增加和業(yè)務(wù)功能的拓展而不斷演進和完善。在這個過程中,開發(fā)模式、技術(shù)架構(gòu)、設(shè)計思路也發(fā)生了很大的變化,甚至技術(shù)人員也從幾個人發(fā)展到一個部門甚至一條產(chǎn)品線。所以成熟的系統(tǒng)架構(gòu)是隨著業(yè)務(wù)的拓展而完善的,不是一蹴而就的;不同業(yè)務(wù)特性的系統(tǒng)會有各自的側(cè)重點。比如淘寶就要解決海量商品信息的搜索、下單、支付等問題。比如騰訊要解決幾億用戶的實時消息傳遞問題,百度要處理海量的搜索請求。他們都有自己的業(yè)務(wù)特點和不同的系統(tǒng)架構(gòu)。然而,我們可以從這些不同的網(wǎng)站中找到可以廣泛應(yīng)用于大型網(wǎng)站系統(tǒng)架構(gòu)中的常見技術(shù)。以下億聯(lián)云介紹大型網(wǎng)站系統(tǒng)的演進過程,了解這些技術(shù)和手段。
1、最開始的網(wǎng)站架構(gòu)
初始架構(gòu)、應(yīng)用程序、數(shù)據(jù)庫和文件都部署在一臺服務(wù)器上。
2、應(yīng)用程序、數(shù)據(jù)和文件的分離
隨著業(yè)務(wù)的擴展,一臺服務(wù)器已不能滿足性能要求。因此,應(yīng)用程序、數(shù)據(jù)庫和文件部署在獨立的服務(wù)器上,并根據(jù)服務(wù)器的目的配置不同的硬件,以實現(xiàn)最佳性能。
3、利用緩存提高網(wǎng)站性能
硬件優(yōu)化性能的同時,也通過軟件優(yōu)化性能。在大多數(shù)網(wǎng)站系統(tǒng)中,緩存技術(shù)用于提高系統(tǒng)性能。緩存主要是因為熱點數(shù)據(jù)的存在。大多數(shù)網(wǎng)站訪問遵循28原則(即80%的訪問請求落在20%的數(shù)據(jù)上),所以我們可以緩存熱點數(shù)據(jù),減少這些數(shù)據(jù)的訪問路徑,提高用戶體驗。
實現(xiàn)緩存的常見方式有本地緩存和分布式緩存。當(dāng)然還有CDN,反向代理等等。本地緩存,顧名思義,在應(yīng)用服務(wù)器上本地緩存數(shù)據(jù),數(shù)據(jù)可以存在于內(nèi)存或文件中。OSCache是一個常見的本地緩存組件。本地緩存的特點是速度快,但由于本地空間有限,緩存的數(shù)據(jù)量有限。分布式緩存的特點是可以緩存海量數(shù)據(jù),易于擴展。常用于門戶網(wǎng)站,速度不如本地緩存快。常用的分布式緩存有Memcached和Redis。
4、利用集群來提高應(yīng)用服務(wù)器的性能
作為網(wǎng)站的入口,應(yīng)用服務(wù)器會承載大量的請求,我們經(jīng)常通過應(yīng)用服務(wù)器集群來分擔(dān)請求的數(shù)量。部署在應(yīng)用服務(wù)器前面的負載均衡服務(wù)器調(diào)度用戶請求,并根據(jù)分發(fā)策略將請求分發(fā)到多個應(yīng)用服務(wù)器節(jié)點。
常用的負載均衡技術(shù)硬件是F5,比較貴,軟件是LVS,Nginx,HAProxy。LVS是四層負載均衡系統(tǒng),根據(jù)目標(biāo)地址和端口選擇內(nèi)部服務(wù)器,Nginx是七層負載均衡系統(tǒng)。
HAProxy支持四層和七層負載均衡,可以根據(jù)消息內(nèi)容選擇內(nèi)部服務(wù)器,所以LVS分發(fā)路徑優(yōu)于Nginx和HAProxy,性能更高,而Nginx和HAProxy更可配置,比如用于動態(tài)和靜態(tài)分離(根據(jù)請求消息的特點選擇靜態(tài)資源服務(wù)器或應(yīng)用服務(wù)器)。
5、數(shù)據(jù)庫讀寫分離和分庫分表
隨著用戶的增加,數(shù)據(jù)庫成為最大的瓶頸。提高數(shù)據(jù)庫性能的常用方法是讀寫分離和分表。讀寫分離顧名思義就是將數(shù)據(jù)庫分為讀寫兩部分,通過主備功能實現(xiàn)數(shù)據(jù)同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個數(shù)據(jù)庫特大的表進行拆分,例如用戶表。垂直切分則是根據(jù)業(yè)務(wù)不同來切換,如用戶業(yè)務(wù)、商品業(yè)務(wù)相關(guān)的表放在不同的數(shù)據(jù)庫中。
6、利用CDN和反向代理提高網(wǎng)站性能?
如果我們的服務(wù)器部署在億聯(lián)云的佛山高防機房,廣東用戶訪問更快,北京用戶訪問更慢。這是因為廣東和北京分別屬于中國電信和中國聯(lián)通不同的發(fā)達地區(qū),北京用戶需要經(jīng)過很長的路徑才能通過互聯(lián)路由器訪問廣東的服務(wù)器,返回路徑是一樣的,所以數(shù)據(jù)傳輸時間更長。在這種情況下,通常使用CDN來解決問題。CDN在運營商機房緩存數(shù)據(jù)內(nèi)容,用戶訪問時先從最近的運營商獲取數(shù)據(jù),大大減少了網(wǎng)絡(luò)訪問路徑。專業(yè)的CDN運營商有藍訊、網(wǎng)托管等。
反向代理部署在網(wǎng)站的機房。當(dāng)用戶的請求到達時,反向代理服務(wù)器將首先訪問反向代理服務(wù)器,反向代理服務(wù)器將向用戶返回緩存的數(shù)據(jù)。如果沒有緩存的數(shù)據(jù),會繼續(xù)去應(yīng)用服務(wù)器獲取,也降低了獲取數(shù)據(jù)的成本。反向代理有Squid和Nginx。
7、使用分布式文件系統(tǒng)
用戶日益增多,業(yè)務(wù)量不斷增加,產(chǎn)生的文件越來越多,單一的文件服務(wù)器已經(jīng)不能滿足需求。它需要分布式文件系統(tǒng)支持。最常用的分布式文件系統(tǒng)是NFS。
8、使用NoSql和搜索引擎
對于海量數(shù)據(jù)查詢,我們可以通過使用nosql數(shù)據(jù)庫和搜索引擎來獲得更好的性能。不是所有的數(shù)據(jù)都應(yīng)該放在關(guān)系型數(shù)據(jù)中。常用的NOSQL是mongodb和redis,搜索引擎是lucene。
9、拆分應(yīng)用服務(wù)器的業(yè)務(wù)
隨著業(yè)務(wù)的進一步擴展,應(yīng)用變得非常臃腫。此時,我們需要將應(yīng)用程序分成新聞、網(wǎng)頁、圖片和其他服務(wù)。每個業(yè)務(wù)應(yīng)用程序負責(zé)相對獨立的業(yè)務(wù)操作。服務(wù)之間的通信是通過消息或共享數(shù)據(jù)庫來實現(xiàn)的。
10、構(gòu)建分布式服務(wù)
這時我們發(fā)現(xiàn)每個業(yè)務(wù)應(yīng)用都會用到一些基本的業(yè)務(wù)服務(wù),比如用戶服務(wù)、訂單服務(wù)、支付服務(wù)、安全服務(wù),這些都是支撐每個業(yè)務(wù)應(yīng)用的基本要素。我們提取這些服務(wù),并通過使用部分服務(wù)框架來構(gòu)建分布式服務(wù)。淘寶的Dubbo是個不錯的選擇。
大型網(wǎng)站的架構(gòu)會根據(jù)業(yè)務(wù)需求不斷完善,會根據(jù)不同的業(yè)務(wù)特點進行具體的設(shè)計和考慮。本文僅描述常規(guī)大型網(wǎng)站所涉及的一些常規(guī)技術(shù)和手段。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,請聯(lián)系站長郵箱:shawn.lee@eliancloud.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。
標(biāo)題:大型網(wǎng)站服務(wù)器是什么架構(gòu)?
TAG標(biāo)簽:企業(yè)服務(wù)器
地址:http://www.dangdangload.com/article/20210104202332.html