国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 課堂 > 基礎(chǔ)知識(shí) > 正文

濃縮精華的架構(gòu)演進(jìn)過(guò)程,我連看了六遍!

2024-09-12 20:30:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

業(yè)務(wù)驅(qū)動(dòng)技術(shù)的發(fā)展是亙古不變的道理。最開始的時(shí)候,業(yè)務(wù)量少,業(yè)務(wù)復(fù)雜度低,采取的技術(shù)也相對(duì)簡(jiǎn)單,基本滿足用戶對(duì)功能的需求。

隨著 IT 信息化的普及,更多的交易放到了網(wǎng)絡(luò)上,信息量增加和訪問次數(shù)頻繁就是要解決的問題了。

因此,逐漸加入了緩存、集群等技術(shù)手段。同時(shí)對(duì)業(yè)務(wù)的擴(kuò)展性和伸縮性的要求也越來(lái)越高。

高并發(fā)、高可用、可伸縮、可擴(kuò)展、夠安全的軟件架構(gòu)一直是架構(gòu)設(shè)計(jì)追求的目標(biāo)。

今天我們來(lái)看一下架構(gòu)設(shè)計(jì)經(jīng)歷了哪些階段,每個(gè)階段都解決了哪些問題,又引出了哪些新問題。

主要是引起大家的思考,在不同的業(yè)務(wù)發(fā)展階段采取合適技術(shù)手段,用變化擁抱變化是 IT 人追求的目標(biāo)。

應(yīng)用與數(shù)據(jù)一體模式

最早的業(yè)務(wù)應(yīng)用以網(wǎng)站、OA 等為主,訪問的人數(shù)有限,單臺(tái)服務(wù)器就能夠應(yīng)付。

通常,將應(yīng)用程序和數(shù)據(jù)庫(kù)部署到一臺(tái)服務(wù)器上面

在這一階段,我們利用 LAMP(Linux Apache MySQL PHP)技術(shù)就可以迅速搞定,并且這些工具都是開源的。

很長(zhǎng)一段時(shí)間內(nèi),有各種針對(duì)這種應(yīng)用模式的開源代碼可以使用。這種模式基本上沒有高并發(fā)的要求,可用性也很差。

有的服務(wù)器采用托管模式,上面就安裝了不同的業(yè)務(wù)應(yīng)用,一旦服務(wù)器出現(xiàn)問題,所有的應(yīng)用就罷工了。

不過(guò)其開發(fā)和部署成本相對(duì)較低,適合剛剛起步的應(yīng)用服務(wù)。圖 1 就描述了單個(gè)應(yīng)用和數(shù)據(jù)庫(kù)運(yùn)行在單臺(tái)服務(wù)器的模式,我們稱這種模式為應(yīng)用與數(shù)據(jù)一體模式。

應(yīng)用與數(shù)據(jù)分離模式

隨著業(yè)務(wù)的發(fā)展,用戶數(shù)和請(qǐng)求數(shù)逐漸上升,服務(wù)器的性能出現(xiàn)了問題。其中比較簡(jiǎn)單的解決方案就是增加資源,將業(yè)務(wù)應(yīng)用和數(shù)據(jù)存儲(chǔ)分開。

其中,應(yīng)用服務(wù)器需要處理大量的業(yè)務(wù)請(qǐng)求,對(duì) CPU 和內(nèi)存有一定要求;而數(shù)據(jù)庫(kù)服務(wù)器需要對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和索引等 IO 操作,對(duì)磁盤的轉(zhuǎn)速和內(nèi)存會(huì)考慮更多。

這樣的分離解決了性能的問題,我們需要擴(kuò)展更多的硬件資源讓其各司其職,使系統(tǒng)可以處理更多的用戶請(qǐng)求。

雖然業(yè)務(wù)上依舊存在耦和,但硬件層面的分離在可用性上比一體式設(shè)計(jì)要好很多。

緩存的加入

隨著信息化系統(tǒng)的發(fā)展和使用互聯(lián)網(wǎng)人數(shù)的增多,業(yè)務(wù)量、用戶量、數(shù)據(jù)量都在增長(zhǎng)。

我們同時(shí)發(fā)現(xiàn),用戶會(huì)對(duì)某些數(shù)據(jù)的請(qǐng)求量特別大,例如新聞、商品信息和熱門消息。

之前這些信息的獲取方式是依靠數(shù)據(jù)庫(kù),因此受到數(shù)據(jù)庫(kù) IO 性能的影響。此時(shí)數(shù)據(jù)庫(kù)成為了整個(gè)系統(tǒng)的瓶頸。

如果再增加服務(wù)器的數(shù)量,恐怕也很難解決,于是緩存技術(shù)就登場(chǎng)了

這里提到的緩存技術(shù)分為客戶端瀏覽器緩存、應(yīng)用服務(wù)器本地緩存和緩存服務(wù)器緩存。

①客戶端瀏覽器緩存:當(dāng)用戶通過(guò)瀏覽器請(qǐng)求服務(wù)器的時(shí)候,會(huì)發(fā)起 HTTP 請(qǐng)求。如果對(duì)每次 HTTP 請(qǐng)求進(jìn)行緩存,那么可以減少應(yīng)用服務(wù)器的壓力。

②應(yīng)用服務(wù)器本地緩存:它使用的是進(jìn)程內(nèi)緩存,又叫托管堆緩存。以 Java 為例,這部分緩存放在 JVM 的托管堆上面,同時(shí)會(huì)受到托管堆回收算法的影響。

由于它運(yùn)行在內(nèi)存中,對(duì)數(shù)據(jù)的響應(yīng)速度很快,通常我們會(huì)把熱點(diǎn)數(shù)據(jù)放在這里。

在進(jìn)程內(nèi)緩存沒有命中的時(shí)候,會(huì)到緩存服務(wù)器中獲取信息,如果還是沒有命中,才會(huì)去數(shù)據(jù)庫(kù)中獲取。

③緩存服務(wù)器緩存:它相對(duì)于應(yīng)用服務(wù)器本地緩存來(lái)說(shuō),就是進(jìn)程外緩存,既可以和應(yīng)用服務(wù)部署在同一服務(wù)器,也可以部署到不同的服務(wù)器。

一般來(lái)說(shuō),為了方便管理和合理利用資源,會(huì)將其部署到專門的緩存服務(wù)器上面。由于緩存會(huì)占用內(nèi)存空間,因此這類服務(wù)器會(huì)配置比較大的內(nèi)存。

圖 3 描述了緩存請(qǐng)求的次序,先訪問客戶端緩存,之后是進(jìn)程內(nèi)的本地緩存,接下來(lái)是緩存服務(wù)器,最后才是數(shù)據(jù)。

如果在任意一層獲取了緩存信息,就不再往下訪問了,否則會(huì)一直按照這個(gè)次序獲取緩存信息,直到數(shù)據(jù)庫(kù)。

用戶請(qǐng)求訪問數(shù)據(jù)的順序?yàn)榭蛻舳藶g覽器緩存→應(yīng)用服務(wù)器本地緩存→緩存服務(wù)器緩存。

如果按照以上次序還沒有命中數(shù)據(jù),才會(huì)訪問數(shù)據(jù)庫(kù)獲取數(shù)據(jù)。加入緩存的設(shè)計(jì),提高了系統(tǒng)的性能。

由于緩存放在內(nèi)存中,而內(nèi)存的讀取速度比磁盤要快得多,能夠很快響應(yīng)用戶請(qǐng)求。

特別針對(duì)一些熱點(diǎn)數(shù)據(jù),優(yōu)勢(shì)尤為明顯。同時(shí),在可用性方面也有明顯的改善。

即使數(shù)據(jù)庫(kù)服務(wù)器出現(xiàn)短時(shí)間的故障,緩存服務(wù)器中保存的熱點(diǎn)或者核心數(shù)據(jù)依舊可以滿足用戶暫時(shí)的訪問。當(dāng)然,后面還會(huì)對(duì)可用性進(jìn)行優(yōu)化。

服務(wù)器集群的加入

經(jīng)過(guò)前面三個(gè)階段的演進(jìn),系統(tǒng)對(duì)用戶的請(qǐng)求量有了很好的支持。實(shí)際上,這都是在解決高性能和可用性的問題,這一核心問題會(huì)一直貫穿整個(gè)系統(tǒng)架構(gòu)的演進(jìn)過(guò)程中。

隨著用戶請(qǐng)求量的增加,另外一個(gè)問題又出現(xiàn)了,那就是并發(fā)。把這兩個(gè)字拆開了來(lái)看:并,理解為“一起并行“,有同時(shí)的意思;發(fā),理解為“發(fā)出調(diào)用”,也就是請(qǐng)求的意思。

合起來(lái)就是多個(gè)用戶同時(shí)請(qǐng)求應(yīng)用服務(wù)器。如果說(shuō)原來(lái)的系統(tǒng)面對(duì)的僅僅只是大數(shù)據(jù)量的話,那么現(xiàn)在就需要面對(duì)多用戶同時(shí)請(qǐng)求。

如果還是按照上一個(gè)階段的架構(gòu)圖推導(dǎo),單個(gè)應(yīng)用服務(wù)器已經(jīng)無(wú)法滿足高并發(fā)的要求了。

此時(shí),服務(wù)器集群就加入戰(zhàn)場(chǎng)了

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙岩市| 峨眉山市| 怀化市| 库尔勒市| 车险| 宣汉县| 寿阳县| 施秉县| 乐亭县| 阳山县| 武功县| 区。| 英超| 澄城县| 马鞍山市| 明水县| 林西县| 青海省| 平遥县| 夏邑县| 焉耆| 密山市| 聂拉木县| 黑山县| 海南省| 沁水县| 蒙阴县| 图木舒克市| 新兴县| 鹰潭市| 鲁山县| 明溪县| 冀州市| 班戈县| 迭部县| 云安县| 来宾市| 基隆市| 通道| 新巴尔虎左旗| 缙云县|