自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

云端高性能技術(shù)架構(gòu)淺析

云計(jì)算
無論是國外的Google、Facebook、Amazon,還是國內(nèi)的Baidu、Taobao等,這些高性能的服務(wù)器在處理高并發(fā)的請求時(shí),都能快速、準(zhǔn)確的給予應(yīng)答。通過查閱資料,了解現(xiàn)有大型網(wǎng)站的技術(shù)架構(gòu),發(fā)現(xiàn)目前常用的技術(shù)有分層、緩存、負(fù)載均衡、數(shù)據(jù)庫性能優(yōu)化,分布式系統(tǒng)等等。接下類分別對(duì)這些技術(shù)進(jìn)行簡單介紹。

無論是國外的Google、Facebook、Amazon,還是國內(nèi)的Baidu、Taobao等,這些高性能的服務(wù)器在處理高并發(fā)的請求時(shí),都能快速、準(zhǔn)確的給予應(yīng)答。通過查閱資料,了解現(xiàn)有大型網(wǎng)站的技術(shù)架構(gòu),發(fā)現(xiàn)目前常用的技術(shù)有分層、緩存、負(fù)載均衡、數(shù)據(jù)庫性能優(yōu)化,分布式系統(tǒng)等等。接下類分別對(duì)這些技術(shù)進(jìn)行簡單介紹。

1 分層與服務(wù)分離

無論OSI的7層網(wǎng)絡(luò)結(jié)構(gòu),還是計(jì)算機(jī)底層硬件與上層軟件之間的分層,甚至于Web領(lǐng)域大家非常熟悉的MVC開發(fā)模式,分層在計(jì)算機(jī)領(lǐng)域無處不在。分層可以將不同的功能部件獨(dú)立起來,下層為上層提供訪問接口,支撐上層的功能;上層調(diào)用下層接口來完成服務(wù)。

分層也是服務(wù)器端采用的一種方法,通過將數(shù)據(jù)庫、文件資源等與應(yīng)用服務(wù)器分開,可以緩解服務(wù)器壓力。

另外,根據(jù)業(yè)務(wù)需求的不同,將明顯沒有交集的業(yè)務(wù)分開,獨(dú)立成不同的模塊單獨(dú)進(jìn)行管理,也可以在很大程度上提升服務(wù)器性能。

2 緩存

緩存在計(jì)算機(jī)很多地方都有涉及,比如在內(nèi)存與硬盤之間增加Cache、增加IO緩沖區(qū)來緩解速度之間的不匹配。緩存的出現(xiàn)主要是依據(jù)計(jì)算機(jī)中著名的二八定律。緩存的技術(shù)主要包括本地緩存、分布式緩存、CDN和反向代理。

根據(jù)二八定律,80%的操作集中在20%的數(shù)據(jù)上。網(wǎng)站將常用的數(shù)據(jù)緩存在本地應(yīng)用服務(wù)器中,以后直接通過緩存中的數(shù)據(jù)來響應(yīng)用戶的請求,而不用再去計(jì)算。這樣就可以減少響應(yīng)時(shí)間。

分布式緩存相比本地緩存速度要慢,因?yàn)閼?yīng)用服務(wù)器要訪問專門的緩存服務(wù)器來獲取數(shù)據(jù),但是應(yīng)用服務(wù)器主要用于處理請求,其自身內(nèi)存有限,如果緩存大量數(shù)據(jù),應(yīng)用程序的運(yùn)行速度將受到明顯影響。因此很多大型網(wǎng)站都使用遠(yuǎn)程分布式緩存,部署大內(nèi)存的服務(wù)器作為專門的緩存服務(wù)器。

緩存的另外兩種表現(xiàn)形式是CDN和反向代理。不同的地方在于,CDN部署在網(wǎng)絡(luò)提供商(比如電信、移動(dòng)、聯(lián)通等)的機(jī)房,用戶在請求網(wǎng)站服務(wù)時(shí),可以直接從網(wǎng)絡(luò)提供商機(jī)房獲取數(shù)據(jù);而反向代理則部署在網(wǎng)站的中心機(jī)房,當(dāng)用戶的請求到中心機(jī)房后,首先訪問的服務(wù)器是反向代理服務(wù)器,如果反向代理服務(wù)器中有相應(yīng)資源的緩存,就將其直接返回給用戶,而不用再去請求應(yīng)用服務(wù)器。

3 負(fù)載均衡

負(fù)載均衡的原理就是去中心化。當(dāng)用戶并發(fā)請求量巨大時(shí),如果將所有的請求都交給一個(gè)服務(wù)器去處理,很可能造成服務(wù)器宕機(jī),即使能夠正確響應(yīng),響應(yīng)時(shí)間也可能會(huì)比較長,給用戶造成不好的體驗(yàn)。

大型網(wǎng)站都是將一個(gè)域名綁定不同的服務(wù)器IP,這樣表面上好像只有一臺(tái)服務(wù)器在提供服務(wù),實(shí)際則是一個(gè)服務(wù)器集群在提供相同的服務(wù)。負(fù)載均衡器接收所有用戶的請求,再根據(jù)每臺(tái)應(yīng)用服務(wù)器正在處理的請求數(shù)量來對(duì)請求進(jìn)行分配。這樣就能在很大程度上提高系統(tǒng)的性能,同時(shí)擴(kuò)展性也得到很大提升——當(dāng)某臺(tái)服務(wù)器宕機(jī)時(shí),直接替換就可以,其它服務(wù)器繼續(xù)相應(yīng)用戶請求;當(dāng)用戶請求量超過預(yù)定峰值時(shí),也可以通過實(shí)時(shí)增加服務(wù)器來緩解壓力。

4 數(shù)據(jù)庫性能優(yōu)化

使用緩存后,大部分的數(shù)據(jù)操作不需要通過數(shù)據(jù)庫即可完成。但是仍有一部分讀操作(緩存訪問不命中,緩存過期)和全部的寫操作需要訪問數(shù)據(jù)庫,在網(wǎng)站的用戶達(dá)到一定規(guī)模時(shí),數(shù)據(jù)庫因?yàn)樨?fù)載壓力過高而成為網(wǎng)站的瓶頸。因而需要對(duì)數(shù)據(jù)庫進(jìn)行優(yōu)化,常用的技術(shù)主要包括讀寫分離、結(jié)合非關(guān)系型數(shù)據(jù)庫使用、分布式數(shù)據(jù)庫等。

一般情況下,數(shù)據(jù)庫讀操作所需要的時(shí)間比寫操作的要少很多,通過將數(shù)據(jù)庫的讀寫操作分離可以明顯改善數(shù)據(jù)庫性能。目前很多大型網(wǎng)站都配置數(shù)據(jù)庫主從關(guān)系,主數(shù)據(jù)庫用于寫操作并將數(shù)據(jù)同步更新到從數(shù)據(jù)庫上,從數(shù)據(jù)庫只負(fù)責(zé)讀操作。例如,新浪云計(jì)算平臺(tái)(SAE)給用戶的數(shù)據(jù)庫就進(jìn)行了主從配置。

同時(shí),可以利用非關(guān)系型數(shù)據(jù)庫和搜索引擎對(duì)數(shù)據(jù)檢索的優(yōu)勢,來減輕應(yīng)用服務(wù)器直接訪問關(guān)系型數(shù)據(jù)庫的壓力。

當(dāng)對(duì)業(yè)務(wù)進(jìn)行分離后,可以根據(jù)業(yè)務(wù)所涉及的數(shù)據(jù),將數(shù)據(jù)庫進(jìn)行分庫部署在不同的服務(wù)器上。

5 冗余

網(wǎng)站需要7x24小時(shí)連續(xù)運(yùn)行,但是服務(wù)器隨時(shí)可能出現(xiàn)故障,特別是服務(wù)器規(guī)模比較大時(shí),出現(xiàn)某臺(tái)服務(wù)器宕機(jī)是必然事件。要想保證在服務(wù)器宕機(jī)的情況下網(wǎng)站依然可以繼續(xù)服務(wù),不丟失數(shù)據(jù),就需要一定程度的服務(wù)器冗余運(yùn)行,數(shù)據(jù)冗余備份,這樣當(dāng)某臺(tái)服務(wù)器宕機(jī)時(shí),可以將其上的服務(wù)和數(shù)據(jù)轉(zhuǎn)移到其它機(jī)器上繼續(xù)運(yùn)行。

#p#

接下來,我們主要針對(duì)緩存中的Memcached技術(shù)進(jìn)行介紹。

1 Memcached

1.1 Memcached簡介

Memcached是一個(gè)高性能的分布式對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用,以減輕數(shù)據(jù)庫負(fù)載[1]。它通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少應(yīng)用程序讀取數(shù)據(jù)庫的次數(shù),從而提高網(wǎng)站的性能。如圖1是Memcached在網(wǎng)站中的位置示意圖。

云端高性能技術(shù)架構(gòu)淺析

圖1 Memcached位置示意圖

Memcached以鍵值對(duì)的形式將數(shù)據(jù)(或?qū)ο?緩存在內(nèi)存中,雖然使用到了多個(gè)服務(wù)節(jié)點(diǎn),但是和一般分布式緩存系統(tǒng)不同的是,每一份數(shù)據(jù)在Memcached中只存在一份,每個(gè)Memcached服務(wù)節(jié)點(diǎn)之間相互不可見。因此,Memcached中每份數(shù)據(jù)的鍵值是唯一的。

簡而言之,Memcached類似于一個(gè)典型的非關(guān)系型存儲(chǔ)系統(tǒng),可以歸入基于內(nèi)容的鍵值對(duì)存儲(chǔ)類型[2]。

1.2 Memcached工作原理

當(dāng)高并發(fā)的外部請求訪問服務(wù)器時(shí),負(fù)載均衡服務(wù)器會(huì)根據(jù)各應(yīng)用服務(wù)器的使用情況進(jìn)行分配轉(zhuǎn)發(fā),如果需要對(duì)數(shù)據(jù)進(jìn)行讀取,應(yīng)用服務(wù)器會(huì)按照一定的Hash算法計(jì)算鍵值的結(jié)果,并根據(jù)計(jì)算結(jié)果訪問Memcached的某一個(gè)服務(wù)節(jié)點(diǎn),服務(wù)節(jié)點(diǎn)再次計(jì)算鍵值的第二次Hash值,再根據(jù)計(jì)算結(jié)果對(duì)數(shù)據(jù)進(jìn)行讀取,如果緩存中有數(shù)據(jù)則直接返回給應(yīng)用,否則需要從數(shù)據(jù)庫獲取數(shù)據(jù),同時(shí)將獲取到的數(shù)據(jù)寫入到Memcached中[3]。

云端高性能技術(shù)架構(gòu)淺析

圖2 Memcached工作原理

#p#

2 性能分析

在本機(jī)上安裝Memcached,客戶端使用Memcached提供的接口進(jìn)行數(shù)據(jù)的存儲(chǔ)與訪問,并與直接通過MySQL獲取數(shù)據(jù)的方式進(jìn)行對(duì)比。

2.1 Memcached安裝

由于Memcached主要用于服務(wù)器端,而服務(wù)器端操作系統(tǒng)大多用Linux,因此網(wǎng)上多數(shù)教程是關(guān)于在Linux上安裝使用Memcached的。在Windows上安裝更加簡單,只需找到對(duì)應(yīng)操作系統(tǒng)的版本即可[4]。

安裝Memcached后,打開服務(wù)即可使用相應(yīng)功能,Memcached默認(rèn)監(jiān)聽11211端口,如果是在本機(jī)上,直接使用127.0.0.1:11211就可以訪問了,這點(diǎn)和MySQL非常類似。

Memcached提供了很多高級(jí)語言的接口,可以根據(jù)這些接口來完成對(duì)數(shù)據(jù)的存儲(chǔ)與訪問。

2.2 Memcached和MySQL性能比較

為了比較使用Memcached前后訪問數(shù)據(jù)性能的情況,進(jìn)行以下模擬實(shí)驗(yàn)。

硬件條件:

CPU:Intel Core 2.60GHz;

內(nèi)存:2GB;

軟件條件:

操作系統(tǒng):Window 64;

Memcached***內(nèi)存:64MB;

Memcached***連接數(shù):1024。

MySQL中共有29120條記錄,使用多線程模擬用戶的并發(fā)訪問,每個(gè)用戶請求100次數(shù)據(jù)讀取。表1是在用戶數(shù)量為N的條件下,測試所有請求都處理完所用時(shí)間T的結(jié)果。

表1 測試結(jié)果 

云端高性能技術(shù)架構(gòu)淺析

三種方法說明:MySQL表示所有的數(shù)據(jù)請求直接通過訪問數(shù)據(jù)庫返回;隨機(jī)Mem表示在增加了Memcached緩存后,對(duì)于每個(gè)用戶的100次請求,數(shù)據(jù)之間沒有任何關(guān)系,完全隨機(jī);二八定律Mem表示用戶的請求遵循二八定律,就是說平均100次請求中,有比較多的次數(shù)訪問的是相同數(shù)據(jù),這個(gè)可以通過程序模擬,在訪問時(shí)控制相應(yīng)次數(shù)訪問相同的數(shù)據(jù)。

圖3、圖4分別對(duì)應(yīng)表1的兩種數(shù)據(jù)表示。

云端高性能技術(shù)架構(gòu)淺析

圖3 柱狀圖顯示結(jié)果

云端高性能技術(shù)架構(gòu)淺析

圖4 折線顯示結(jié)果

由于在完全隨機(jī)訪問的條件下,數(shù)據(jù)的命中率非常低(幾乎為0),每次請求都需要從數(shù)據(jù)庫中獲取,同時(shí)還要將請求到的數(shù)據(jù)保存在緩存中,因此效率比直接從數(shù)據(jù)庫中獲取還要低。但是當(dāng)用戶多次請求相同的數(shù)據(jù)是,使用Memcached 明顯比直接從MySQL中獲取效率要高很多。

整個(gè)測試過程還存在著一些不足之處:

  • 受實(shí)際條件限制,Memcached服務(wù)節(jié)點(diǎn)數(shù)只有1個(gè);
  • 另外,數(shù)據(jù)庫中數(shù)據(jù)量級(jí)也不是非常大;
  • 沒有測試數(shù)據(jù)寫入的情況

#p#

3 關(guān)鍵問題

通過上述分析可知,Memcached在一些條件下對(duì)提升數(shù)據(jù)訪問效率有很大作用。對(duì)于那些不常變動(dòng)訪問頻率又非常高的數(shù)據(jù),將其放在緩存中,可以很好的緩解數(shù)據(jù)庫的壓力,進(jìn)而提升系統(tǒng)性能。但同時(shí),Memcached自身也還存在著一些不足之處:

由于Memcached是將數(shù)據(jù)緩存在內(nèi)存中,當(dāng)出現(xiàn)斷電情況時(shí),數(shù)據(jù)將立即消失;

所有數(shù)據(jù)在Memcached中只保存一份,因此可靠性不是很高,一旦某臺(tái)服務(wù)節(jié)點(diǎn)出現(xiàn)故障,相應(yīng)的數(shù)據(jù)將丟失;

Memcached在設(shè)計(jì)之初每個(gè)key的value***是1MB,隨著目前數(shù)據(jù)量的快速增長,緩存數(shù)據(jù)量大的文件,比如音頻、視頻等有很大不足。

4 參考資料

俞華鋒.Memcached 在大型網(wǎng)站中的應(yīng)用[J]. 科技信息, 2008(1), p70.

王新根. Web后端性能優(yōu)化關(guān)鍵技術(shù)研究[D]. 浙江大學(xué), 2012.

http://en.wikipedia.org/wiki/Memcached

http://blog.csdn.net/zhaotengfei36520/article/details/41315329

徐劍強(qiáng),鄒偉平. Memcached應(yīng)用研究[J]. 科技廣場, 2012(7), p95-97.

博文出處:http://www.cnblogs.com/luop/p/4392894.html
 

責(zé)任編輯:Ophira 來源: 博客園
相關(guān)推薦

2017-07-07 16:36:28

BIOIO模型 NIO

2017-11-27 09:14:29

2023-10-31 18:52:29

網(wǎng)絡(luò)框架XDP技術(shù)

2020-03-23 14:35:28

前端架構(gòu)應(yīng)用程序

2010-07-21 08:51:48

淘寶架構(gòu)

2021-04-21 15:21:37

技術(shù)架構(gòu)高并發(fā)基礎(chǔ)源碼解析

2018-01-11 13:23:22

華為云

2022-11-11 08:55:29

RoCE技術(shù)應(yīng)用

2012-09-28 11:02:59

NVIDIAARM架構(gòu)高性能

2024-07-12 08:42:58

Redis高性能架構(gòu)

2009-03-09 10:10:17

2011-08-04 08:52:08

架構(gòu)

2018-03-16 09:13:45

RDMA高性能數(shù)據(jù)中心

2013-10-08 17:01:29

華為LTE華為

2022-03-22 14:06:43

Java性能技術(shù)匯編

2020-03-26 15:16:26

EdgeBoard

2009-07-30 10:28:56

Web高性能開發(fā)

2014-04-09 10:50:01

Squid架構(gòu)緩存服務(wù)器

2022-11-24 10:55:32

2018-12-26 08:54:06

架構(gòu)開源框架微服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)