溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql大型網(wǎng)站技術(shù)架構(gòu)核心原理是什么

發(fā)布時(shí)間:2022-03-18 16:29:19 來(lái)源:億速云 閱讀:171 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“mysql大型網(wǎng)站技術(shù)架構(gòu)核心原理是什么”,在日常操作中,相信很多人在mysql大型網(wǎng)站技術(shù)架構(gòu)核心原理是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”mysql大型網(wǎng)站技術(shù)架構(gòu)核心原理是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

一、大型網(wǎng)站架構(gòu)演化

A.大型網(wǎng)站軟件系統(tǒng)的特點(diǎn)

高并發(fā),大流量;高可用;海量數(shù)據(jù);用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜;安全環(huán)境惡劣;需求快速變更,發(fā)布頻繁;漸進(jìn)式發(fā)展;

B.大型網(wǎng)站架構(gòu)演化發(fā)展歷程

1.初始階段:一臺(tái)服務(wù)器,LNMP

2.應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離:應(yīng)用服務(wù)器(CPU);數(shù)據(jù)庫(kù)服務(wù)器(快速磁盤檢索和數(shù)據(jù)緩存);文件服務(wù)器(大硬盤);

3.使用緩存改善網(wǎng)站性能:緩存在應(yīng)用服務(wù)器上的本地緩存(訪問(wèn)速度快,受應(yīng)用服務(wù)器內(nèi)存限制,數(shù)據(jù)量有限)、遠(yuǎn)程分布式緩存(使用集群部署大內(nèi)存的服務(wù)器作為專門的緩存服務(wù)器)

4.應(yīng)用服務(wù)器集群:通過(guò)負(fù)載均衡調(diào)度

5.數(shù)據(jù)庫(kù)讀寫分離

6.使用反向代理和CDN加速CDN(部署在最近的網(wǎng)絡(luò)機(jī)房)、反向代理 (部署在中心機(jī)房)

7.使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫(kù)系統(tǒng)

8.使用NoSQL和搜索引擎

9.業(yè)務(wù)拆分

10.分布式服務(wù)

C.大型網(wǎng)站架構(gòu)演化的價(jià)值觀

1.大型網(wǎng)站架構(gòu)技術(shù)的核心價(jià)值是隨網(wǎng)站所需靈活應(yīng)對(duì)

2.驅(qū)動(dòng)大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展

D.網(wǎng)站架構(gòu)設(shè)計(jì)誤區(qū)

1.一味追隨大公司的解決方案

2.為了技術(shù)而技術(shù)

3.企圖用技術(shù)解決所有問(wèn)題:技術(shù)是用來(lái)解決業(yè)務(wù)問(wèn)題的,而業(yè)務(wù)的問(wèn)題,也可以通過(guò)業(yè)務(wù)的手段去解決

二、大型網(wǎng)站架構(gòu)模式

模式:每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題及該問(wèn)題解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復(fù)工作。模式的關(guān)鍵在于模式的可重復(fù)性。

A.網(wǎng)站架構(gòu)模式

1.分層

  • 分層:是企業(yè)應(yīng)用系統(tǒng)中最常見(jiàn)的一種架構(gòu)模式,將系統(tǒng)在橫向維度上切分成幾個(gè)部分,每個(gè)部分負(fù)責(zé)一部分相對(duì)比較單一的職責(zé),然后通過(guò)上層對(duì)下層的依賴和調(diào)用組成一個(gè)完整的系統(tǒng)。

  • 將網(wǎng)站軟件系統(tǒng)分為應(yīng)用層(視圖層、業(yè)務(wù)邏輯層)、服務(wù)層(數(shù)據(jù)接口層、邏輯處理層)、數(shù)據(jù)層

  • 可以更好地將一個(gè)龐大的軟件系統(tǒng)切分成不同的部分,便于分工合作開(kāi)發(fā)和維護(hù);各層之間具有一定的獨(dú)立性,只要維持調(diào)用接口不變,各層可以根據(jù)具體問(wèn)題獨(dú)立深化發(fā)展而不需要其他層必須 做出相應(yīng)調(diào)整。

2.分割

  • 縱向方面進(jìn)行切分。將不同的功能和服務(wù)分割開(kāi)來(lái),包裝成高內(nèi)聚低耦合的模塊單元。大型網(wǎng)站分割的粒度可能會(huì)很小。

3.分布式

  • 即將不同的模塊部署在不同的服務(wù)器上,通過(guò)遠(yuǎn)程調(diào)用協(xié)同工作。意味著可以使用更多的計(jì)算機(jī)完成同樣的功能。

  • 問(wèn)題:通過(guò)網(wǎng)絡(luò)可能會(huì)對(duì)性能造成嚴(yán)重影響;服務(wù)器多宕機(jī)的概率大;數(shù)據(jù)在分布式的環(huán)境中保持?jǐn)?shù)據(jù)一致性也非常困難;導(dǎo)致網(wǎng)站依賴錯(cuò)綜復(fù)雜開(kāi)發(fā)被處理維護(hù)困難;

  • 常見(jiàn)的分布式方案:分布式應(yīng)用和服務(wù);分布式靜態(tài)資源;分布式數(shù)據(jù)和存儲(chǔ);分布式計(jì)算(Hadoop及其MapReduce);分布式配置;分布式鎖;分布式文件等;

4.集群

  • 多臺(tái)服務(wù)器部署相同應(yīng)用構(gòu)成一個(gè)集群,通過(guò)負(fù)載均衡設(shè)備共同對(duì)外提供服務(wù)。

5.緩存

  • 緩存就是將數(shù)據(jù)有些話在距離計(jì)算最近的位置以加快處理速度。

  • CDN、反向代理、本地緩存、分布式緩存。

  • 使用緩存的兩個(gè)前提條件:一是數(shù)據(jù)訪問(wèn)熱點(diǎn)不均衡;二是數(shù)據(jù)在某個(gè)時(shí)間段內(nèi)有效;

6.異步

  • 業(yè)務(wù)之間的消息傳遞不是同步調(diào)用,而是將一個(gè)業(yè)務(wù)操作分成多個(gè)階段,每個(gè)階段之間通過(guò)共享數(shù)據(jù)的方式異步執(zhí)行進(jìn)行協(xié)作。

  • 單一服務(wù)器內(nèi)部可通過(guò)多線程共享內(nèi)存隊(duì)列的方式實(shí)現(xiàn)異步;分布式系統(tǒng)中,多個(gè)服務(wù)器集群通過(guò)分布式消息隊(duì)列實(shí)現(xiàn)異步。

  • 典型的生產(chǎn)者消費(fèi)者模式,兩者不存在直接調(diào)用,特性:提高系統(tǒng)可用性;加快網(wǎng)站響應(yīng)速度;消除并發(fā)訪問(wèn)高峰。

  • 使用異步方式處理業(yè)務(wù)可能會(huì)對(duì)用戶體驗(yàn)、業(yè)務(wù)流程造成影響,需要產(chǎn)品設(shè)計(jì)方面的支持。

7.冗余

  • 要想保證在服務(wù)器宕機(jī)的情況下網(wǎng)站依然可以繼續(xù)服務(wù),不丟失數(shù)據(jù),就需要一定程度的服務(wù)器冗余運(yùn)行,數(shù)據(jù)冗余備份。

  • 小型網(wǎng)站也需要至少兩臺(tái)服務(wù)器構(gòu)建集群,數(shù)據(jù)庫(kù)除定期備份保存實(shí)現(xiàn)冷備份外,也需要進(jìn)行主從分享實(shí)時(shí)同步熱備。

  • 大型公司可能會(huì)對(duì)整個(gè)數(shù)據(jù)中心備份并同步到各地災(zāi)備中心。

8.自動(dòng)化

  • 主要集中在發(fā)布運(yùn)維方面。

  • 發(fā)布過(guò)程自動(dòng)化:自動(dòng)化代碼管理、自動(dòng)化測(cè)試、自動(dòng)化安全檢測(cè)、自動(dòng)化部署。

  • 自動(dòng)化監(jiān)控:自動(dòng)化報(bào)警、自動(dòng)化失效轉(zhuǎn)移、自動(dòng)化失效恢復(fù)、自動(dòng)化降級(jí)、自動(dòng)化分配資源。

9.安全

B.架構(gòu)模式在新浪微博的應(yīng)用

三、大型網(wǎng)站核心架構(gòu)要素

架構(gòu):最高層次的規(guī)劃,難以改變的決定。

軟件架構(gòu):有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。

A.性能

  • 瀏覽器端:瀏覽器緩存、頁(yè)面壓縮、合理布局、減少Cookie傳輸、CDN等

  • 應(yīng)用服務(wù)器端:服務(wù)器本地緩存、分布式緩存、異步操作與消息隊(duì)列配合、集群等

  • 代碼:多線程、改善內(nèi)存管理等

  • 數(shù)據(jù)庫(kù):索引、緩存、SQL優(yōu)化、NoSQL技術(shù)

B.可用性

  • 服務(wù)器、數(shù)據(jù)庫(kù)及文件存儲(chǔ)等運(yùn)行環(huán)境的主要手段是冗余。

  • 軟件開(kāi)發(fā)時(shí)通過(guò)預(yù)發(fā)布驗(yàn)證、自動(dòng)化測(cè)試、自動(dòng)化發(fā)布、灰度發(fā)布等手段

C.伸縮性

  • 伸縮性是指通過(guò)不斷向集群中加入服務(wù)器的手段來(lái)緩解不斷上升的用戶并發(fā)訪問(wèn)壓力和不斷增長(zhǎng)的數(shù)據(jù)存儲(chǔ)需求。加入新的服務(wù)器是否可以提供和原來(lái)的服務(wù)器無(wú)差別的服務(wù)。

  • 應(yīng)用服務(wù)器:通過(guò)合適的負(fù)載均衡設(shè)備可以向集群中不斷加入服務(wù)器。

  • 緩存服務(wù)器:加入新的可能會(huì)導(dǎo)致緩存路由失效。需要路由算法。

  • 關(guān)系數(shù)據(jù)庫(kù):通過(guò)路由分區(qū)等手段。

D.擴(kuò)展性

  • 衡量標(biāo)準(zhǔn):網(wǎng)站增加業(yè)務(wù)產(chǎn)品時(shí),是否可以實(shí)現(xiàn)對(duì)現(xiàn)有產(chǎn)品透明無(wú)影響;不同產(chǎn)品這間是否很少耦合;

  • 手段:事件驅(qū)動(dòng)架構(gòu)(消息隊(duì)列)、分布式服務(wù)(將業(yè)務(wù)和可利用服務(wù)分享,通過(guò)分布式服務(wù)框架調(diào)用)

E.安全性

四、瞬時(shí)響應(yīng):網(wǎng)站的高性能架構(gòu)

A.網(wǎng)站性能測(cè)試

1.不同視角

  • 用戶視角的網(wǎng)站性能:優(yōu)化頁(yè)面HTML樣式、利用瀏覽器端的并發(fā)和異步特性、調(diào)整瀏覽器緩存策略、使用CDN服務(wù)、反射代理等。

  • 開(kāi)發(fā)人員視角的網(wǎng)站性能:使用緩存加速數(shù)據(jù)讀取、使用集群提高吞吐能力、使用異步消息加快請(qǐng)求響應(yīng)及實(shí)現(xiàn)削峰、使用代碼優(yōu)化手段改善程序性能。

  • 運(yùn)維人員視角的網(wǎng)站性能:建設(shè)優(yōu)化骨干網(wǎng)、使用高性價(jià)比定制服務(wù)器、利用虛擬化技術(shù)優(yōu)化資源利用等。

2.性能測(cè)試指標(biāo)

  • 響應(yīng)時(shí)間:測(cè)試辦法是重復(fù)請(qǐng)求,測(cè)試一萬(wàn)次總時(shí)間之和除以一萬(wàn)。

  • 并發(fā)數(shù):系統(tǒng)能夠同時(shí)處理請(qǐng)求的數(shù)目(網(wǎng)站系統(tǒng)用戶數(shù)>>網(wǎng)站在線用戶數(shù)>>網(wǎng)站并發(fā)用戶數(shù)),測(cè)試程序通過(guò)多線程模擬并發(fā)用戶的辦法來(lái)測(cè)試系統(tǒng)的并發(fā)處理能力。

  • 吞吐量:?jiǎn)挝粫r(shí)間內(nèi)系統(tǒng)處理的請(qǐng)求數(shù)量(TPS、HPS、QPS等)

  • 性能計(jì)數(shù)器:描述服務(wù)器或操作系統(tǒng)性能的一些數(shù)據(jù)操縱桿。包括System Load、對(duì)象與線程數(shù)、內(nèi)存使用、CPU使用、磁盤與網(wǎng)絡(luò)I/O等。

3.性能測(cè)試方法:性能測(cè)試、負(fù)載測(cè)試、壓力測(cè)試、穩(wěn)定性測(cè)試

4.性能測(cè)試是一個(gè)不斷對(duì)系統(tǒng)增加訪問(wèn)壓力,以獲得系統(tǒng)性能指標(biāo)、最大負(fù)載能力、最大壓力承受能力的過(guò)程。所謂增加訪問(wèn)壓力,就是不斷增加測(cè)試程序的并發(fā)請(qǐng)求數(shù)。

5.性能優(yōu)化策略

  • 性能分析:檢查請(qǐng)求處理的各個(gè)環(huán)節(jié)的日志,分析哪個(gè)環(huán)節(jié)響應(yīng)時(shí)間不合理、超過(guò)預(yù)期;然后檢查監(jiān)控?cái)?shù)據(jù) 。

B.Web前端性能優(yōu)化

1.瀏覽器訪問(wèn)優(yōu)化:減少http請(qǐng)求(合并CSS/JS/圖片)、使用瀏覽器緩存(HTTP頭中Cache-Control和Expires)、啟用壓縮 (Gzip)、CSS放在頁(yè)面最上面JS放在頁(yè)面最下面、減少Cookie傳輸

2.CND加速

3.反向代理:通過(guò)配置緩存功能加速Web請(qǐng)求。(還可以保護(hù)真實(shí)服務(wù)器及實(shí)現(xiàn)負(fù)載均衡的功能)

C.應(yīng)用服務(wù)器性能優(yōu)化

1.分布式緩存

  • 網(wǎng)站性能優(yōu)化第一定律:優(yōu)先考慮使用緩存優(yōu)化性能

  • 主要用來(lái)存放那些讀寫比很高、很少變化的數(shù)據(jù)。緩存無(wú)法命中時(shí)讀取數(shù)據(jù)庫(kù)并將數(shù)據(jù)再寫入緩存。

2.合理使用緩存:不要頻繁修改的數(shù)據(jù)、沒(méi)有熱點(diǎn)的訪問(wèn)、數(shù)據(jù)不一致與臟讀、緩存可用性(緩存熱備)、緩存預(yù)熱(在程序啟動(dòng)時(shí)預(yù)先加載一些緩存)、緩存穿透

3.分布式緩存架構(gòu):需要更新同步的分布式緩存(JBoss Cache)、不互相通信的分布式緩存(Memcached)

4.異步操作:使用消息隊(duì)列(可改善網(wǎng)站的擴(kuò)展性和性能),具有很好的削峰作用,將短時(shí)間高并發(fā)產(chǎn)生的事務(wù)消息存儲(chǔ)在消息隊(duì)列中。

5.使用集群

6.代碼優(yōu)化:

  • 多線程(IO阻塞與多CPU,啟動(dòng)線程數(shù)=[任務(wù)執(zhí)行時(shí)間/(任務(wù)執(zhí)行時(shí)間-IO等待時(shí)間)]*CPU內(nèi)核數(shù),需要注意線程安全:將對(duì)象設(shè)計(jì)為無(wú)狀態(tài)對(duì)象、使用局部對(duì)象、并發(fā)訪問(wèn)資源時(shí)使用鎖);

  • 資源復(fù)用(單例和對(duì)象池);

  • 數(shù)據(jù)結(jié)構(gòu);

  • 垃圾回收

D.存儲(chǔ)性能優(yōu)化

1.數(shù)據(jù)庫(kù)多采用兩級(jí)索引的B+樹(shù),樹(shù)的層次最多三層。可能需要5次磁盤訪問(wèn)才能更新一條記錄。

2.這么多NoSQL產(chǎn)品使用LSM樹(shù),可以看作一個(gè)N階合并樹(shù)。

3.RAID(廉價(jià)磁盤冗余陣列),RAID0,RAID1,RAID10,RAID5,RAID6,傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)及文件系統(tǒng)中應(yīng)用廣泛。

4.HDFS(Hadoop分布式文件系統(tǒng)),配合MapReduce進(jìn)行大數(shù)據(jù)處理。

五、萬(wàn)無(wú)一失:網(wǎng)站的高可用架構(gòu)

A.網(wǎng)站可用性的度量與考核

1.網(wǎng)站可用性度量

  • 網(wǎng)站不可用時(shí)間(故障時(shí)間)=故障修復(fù)時(shí)間點(diǎn)-故障發(fā)現(xiàn)(報(bào)告)時(shí)間點(diǎn)

  • 網(wǎng)站年度可用性指標(biāo)=(1-網(wǎng)站不可用時(shí)間/年度總時(shí)間)*100%

  • 2個(gè)9是基本可用,88小時(shí);3個(gè)9是較高可用,9小時(shí);4個(gè)9是具有自動(dòng)恢復(fù)能力的高可用,53分鐘;5個(gè)9具有極高可用性,小于5分鐘;QQ為99.99,4個(gè)9,一年大約53分鐘不可用。

2.網(wǎng)站可用性考核

  • 故障分:指對(duì)網(wǎng)站故障進(jìn)行分類加權(quán)計(jì)算故障責(zé)任的方法

  • 故障分=故障時(shí)間(分鐘)*故障權(quán)重

B.高可用的網(wǎng)站架構(gòu)

主要手段就是數(shù)據(jù)和服務(wù)的冗余備份及失效轉(zhuǎn)移。對(duì)于應(yīng)用層和服務(wù)層,以集群通過(guò)負(fù)載均衡實(shí)現(xiàn)高可用,數(shù)據(jù)層通過(guò)數(shù)據(jù)同步復(fù)制實(shí)現(xiàn)冗余備份來(lái)實(shí)現(xiàn)高可用。

C.高可用應(yīng)用

1.通過(guò)負(fù)載均衡進(jìn)行無(wú)狀態(tài)服務(wù)的失效轉(zhuǎn)移:即使應(yīng)用訪問(wèn)量非常少,也至少部署兩臺(tái)服務(wù)器使用負(fù)載均衡構(gòu)建一個(gè)小型集群。

2.應(yīng)用服務(wù)器集群的Session管理

  • Session復(fù)制:服務(wù)器間同步Session,小型集群

  • Session綁定:利用源地址Hash將源于同一IP的請(qǐng)求分發(fā)到同一臺(tái)服務(wù)器上,對(duì)高可用性有影響。

  • 利用Cookie記錄Session:大小限制、每次請(qǐng)求響應(yīng)都需要傳輸、關(guān)閉cookie則無(wú)法訪問(wèn)

  • Session服務(wù)器:利用分布式緩存、數(shù)據(jù)庫(kù)等,高可用、高伸縮、性能較好

D.高可用服務(wù)

1.分級(jí)管理:運(yùn)維上將服務(wù)器進(jìn)行分級(jí),核心應(yīng)用和服務(wù)優(yōu)先使用更好的硬件,在運(yùn)維響應(yīng)速度上也格外迅速。

2.超時(shí)設(shè)置:在應(yīng)用程序中設(shè)置服務(wù)調(diào)用的超時(shí)時(shí)間,一旦超時(shí),通信框架就拋出異常,應(yīng)用程序根據(jù)服務(wù)調(diào)度策略,可選擇繼續(xù)重試或?qū)⒄?qǐng)求轉(zhuǎn)移到提供相同服務(wù)的其他服務(wù)器上。

3.異步調(diào)用:應(yīng)用對(duì)服務(wù)的調(diào)用通過(guò)消息隊(duì)列等異步方式完成,避免一個(gè)服務(wù)失敗導(dǎo)致整個(gè)應(yīng)用請(qǐng)求失敗的情況。

4.服務(wù)降級(jí):拒絕服務(wù),拒絕低優(yōu)先級(jí)應(yīng)用的調(diào)用或者隨機(jī)拒絕部分請(qǐng)求調(diào)用;關(guān)閉功能,關(guān)閉部分不重要的服務(wù)或服務(wù)內(nèi)部關(guān)閉部分不重要的功能。

5.冪等性設(shè)計(jì):在服務(wù)層保證服務(wù)重復(fù)調(diào)用和調(diào)用一次產(chǎn)生的結(jié)果相同,即服務(wù)具有冪等性。

E.高可用的數(shù)據(jù)

1.CAP原理

  • 高可用的數(shù)據(jù):數(shù)據(jù)持久性(永久性存儲(chǔ)、備份副本不會(huì)丟失)、數(shù)據(jù)可訪問(wèn)性(不同設(shè)備下快速切換)、數(shù)據(jù)一致性(多副本的情況下保證副本數(shù)據(jù)一致)

  • CAP原理:一個(gè)提供數(shù)據(jù)服務(wù)的存儲(chǔ)系統(tǒng)無(wú)法同時(shí)滿足數(shù)據(jù)一致性(Consistency)、數(shù)據(jù)可用性(Availibility)、分區(qū)耐受性(Partition Tolerance,系統(tǒng)具有 跨網(wǎng)絡(luò)分區(qū)的伸縮性)這三個(gè)條件。

  • 大型網(wǎng)站通常會(huì)選擇強(qiáng)化分布式系統(tǒng)的可用性(A)和伸縮性(P),而在某種程度上放棄一致性(C)。一般來(lái)說(shuō),數(shù)據(jù)不一致通常出現(xiàn)在系統(tǒng)高并發(fā)寫操作或者集群狀態(tài)不穩(wěn)的情況下,應(yīng)用系統(tǒng)需要對(duì)分布式數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)不一致性有所了解并進(jìn)行一定意義上的補(bǔ)償和糾錯(cuò),以避免出現(xiàn)應(yīng)用系統(tǒng)數(shù)據(jù)不正確。

  • 數(shù)據(jù)一致性又可分為:數(shù)據(jù)強(qiáng)一致(各種操作都是一致的)、數(shù)據(jù)用戶一致(副本可能不一致但用戶訪問(wèn)時(shí)通過(guò)糾錯(cuò)的校驗(yàn)確定一個(gè)正確的數(shù)據(jù)返回給用戶)、數(shù)據(jù)最終一致(副本和用戶訪問(wèn)可能都不一致,但系統(tǒng)經(jīng)過(guò)一段時(shí)間的自我恢復(fù)和修正達(dá)到一致)

2.數(shù)據(jù)備份

  • 異步熱備:多份數(shù)據(jù)副本的寫入操作異步完成,應(yīng)用程序收到數(shù)據(jù)服務(wù)系統(tǒng)的寫操作成功響應(yīng)時(shí),只寫成功一份,存儲(chǔ)系統(tǒng)將會(huì)異步地寫其他副本(可能會(huì)失敗)

  • 同步熱備:多份數(shù)據(jù)副本的寫入操作同步完成,即應(yīng)用程序收到數(shù)據(jù)服務(wù)系統(tǒng)的寫成功響應(yīng)時(shí),多份數(shù)據(jù)都已經(jīng)寫操作成功。

3.失效轉(zhuǎn)移

  • 失效確認(rèn):心跳檢測(cè)、應(yīng)用程序訪問(wèn)失敗

  • 訪問(wèn)轉(zhuǎn)移:確認(rèn)某臺(tái)服務(wù)器宕機(jī)后,將數(shù)據(jù)讀寫訪問(wèn)重新路由到其他服務(wù)器上

  • 數(shù)據(jù)恢復(fù):從健康的服務(wù)器復(fù)制數(shù)據(jù),將數(shù)據(jù)副本數(shù)目恢復(fù)到設(shè)定值

F.高可用網(wǎng)站的軟件質(zhì)量保證

1.網(wǎng)站發(fā)布

2.自動(dòng)化測(cè)試:工具Selenium

3.預(yù)發(fā)布驗(yàn)證:先發(fā)布到預(yù)發(fā)布機(jī)器上,開(kāi)發(fā)工程師和測(cè)試工程師在預(yù)發(fā)布服務(wù)器上進(jìn)行預(yù)發(fā)布驗(yàn)證。需要和生產(chǎn)環(huán)境相同配置、環(huán)境、數(shù)據(jù)中心等

4.代碼控制:svn、git;主干開(kāi)發(fā)、分支發(fā)布;分支開(kāi)發(fā)、主干發(fā)布(主流);

5.自動(dòng)化發(fā)布

6.灰度發(fā)布:將集群服務(wù)器分成若干部分,每天只發(fā)布一部分服務(wù)器,觀察運(yùn)行穩(wěn)定沒(méi)有故障,期間如果發(fā)現(xiàn)問(wèn)題,只需要回滾已發(fā)布的一部分服務(wù)器即可。也常用于用戶測(cè)試(AB測(cè)試)。

G.網(wǎng)站運(yùn)行監(jiān)控

1.監(jiān)控?cái)?shù)據(jù)的采集

  • 用戶行為日志收集:用戶操作系統(tǒng)與瀏覽器版本、IP地址、頁(yè)面訪問(wèn)路徑、頁(yè)面停留時(shí)間等。包括服務(wù)器端日志收集、客戶端瀏覽器日志收集。

  • 服務(wù)器性能收集:如系統(tǒng)Load、內(nèi)存占用、磁盤IO、網(wǎng)絡(luò)IO等,工具Ganglia等

  • 運(yùn)行數(shù)據(jù)報(bào)告:如緩沖命中率、平均響應(yīng)延遲時(shí)間、每分鐘發(fā)送郵件數(shù)目、待處理的任務(wù)總數(shù)等。

2.監(jiān)控管理

  • 系統(tǒng)報(bào)警:設(shè)定各項(xiàng)監(jiān)控指標(biāo)設(shè)定閾值,使用郵件、即時(shí)通信工具、短信等報(bào)警

  • 失效轉(zhuǎn)移:主動(dòng)通知應(yīng)用,進(jìn)行失效轉(zhuǎn)移

  • 自動(dòng)優(yōu)雅降級(jí):根據(jù)監(jiān)控參數(shù)判斷應(yīng)用負(fù)載,適當(dāng)卸載應(yīng)用低負(fù)載應(yīng)用部分服務(wù)器,重新安裝高負(fù)載應(yīng)用使應(yīng)用負(fù)載總體均衡。

六、永無(wú)止境:網(wǎng)站的伸縮性架構(gòu)

所謂網(wǎng)站的伸縮性是指不需要改變網(wǎng)站的軟硬件設(shè)計(jì),僅僅通過(guò)改變部署的服務(wù)器數(shù)量就可以擴(kuò)大或者縮小網(wǎng)站的服務(wù)處理能力。

A.網(wǎng)站架構(gòu)的伸縮性設(shè)計(jì)

1.不同功能進(jìn)行物理分離實(shí)現(xiàn)伸縮:縱向分離(分層后分離),將業(yè)務(wù)處理流程上的不同部分分離部署,實(shí)現(xiàn)系統(tǒng)伸縮性;橫向分離(業(yè)務(wù)分割后分離),將不同的業(yè)務(wù)模塊分離部署,實(shí)現(xiàn)系統(tǒng)伸縮性。

2.單一功能通過(guò)集群規(guī)模實(shí)現(xiàn)伸縮

B.應(yīng)用服務(wù)器集群的伸縮性設(shè)計(jì)

1.應(yīng)用服務(wù)器應(yīng)該設(shè)計(jì)成無(wú)狀態(tài)的,不存儲(chǔ)請(qǐng)求上下文信息。

2.負(fù)載均衡:

  • HTTP重定向負(fù)載均衡:根據(jù)用戶的HTTP請(qǐng)求計(jì)算一臺(tái)真實(shí)的Web服務(wù)器地址,并將該服務(wù)器地址寫入HTTP重定向響應(yīng)中返回給用戶瀏覽器。優(yōu)點(diǎn)簡(jiǎn)單,缺點(diǎn):需要兩次請(qǐng)求;重定向服務(wù)器自身的處理能力可能成為瓶頸;302跳轉(zhuǎn)可能影響SEO。

  • DNS域名解析負(fù)載均衡:在DNS服務(wù)器配置多個(gè)A記錄指向不同IP,優(yōu)點(diǎn)是將負(fù)載均衡的工作轉(zhuǎn)交給DNS,不少還支持地理位置返回最近的服務(wù)器。缺點(diǎn)是可能緩存A記錄,控制權(quán)在域名服務(wù)商那里。

  • 反射代理負(fù)載均衡:瀏覽器訪問(wèn)請(qǐng)求的地址是反向代理服務(wù)器,反向代理服務(wù)器收到請(qǐng)求后,根據(jù)負(fù)載均衡算法計(jì)算得到一臺(tái)真實(shí)物理服務(wù)器的地址,并將請(qǐng)求轉(zhuǎn)發(fā)給真實(shí)服務(wù)器,處理完成后將響應(yīng)返回給反向代理服務(wù)器,反向代理服務(wù)器再將響應(yīng)返回給用戶。也叫應(yīng)用層(HTTP層)負(fù)載均衡。優(yōu)點(diǎn)是部署簡(jiǎn)單,缺點(diǎn)是反向代理服務(wù)器作為中轉(zhuǎn)站性能可能成為瓶頸。

  • IP負(fù)載均衡:用戶請(qǐng)求數(shù)據(jù)包到達(dá)負(fù)載均衡服務(wù)器后,負(fù)載均衡服務(wù)器在操作系統(tǒng)內(nèi)核進(jìn)程獲取網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)負(fù)載均衡算法計(jì)算得到一臺(tái)真實(shí)web服務(wù)器,然后將數(shù)據(jù)目的IP地址修改為真實(shí)服務(wù)器,不需要通過(guò)用戶進(jìn)程處理。真實(shí)服務(wù)器處理完成后,響應(yīng)數(shù)據(jù)包回到負(fù)載均衡服務(wù)器,負(fù)載均衡服務(wù)器再將數(shù)據(jù)包源地址修改為自身的IP地址發(fā)送給用戶瀏覽器。

  • 數(shù)據(jù)鏈路層負(fù)載均衡:三角傳輸模式,負(fù)載均衡服務(wù)器數(shù)據(jù)分發(fā)過(guò)程中不修改IP地址,只修改目的mac地址,通過(guò)所有服務(wù)器的虛擬IP地址與負(fù)載均衡服務(wù)器的IP地址一致,不修改數(shù)據(jù)包的源地址和目的地址,由于IP一致,可將響應(yīng)數(shù)據(jù)包直接返回給用戶瀏覽器。又稱為直接路由方式(DR)。代表產(chǎn)品LVS(Linux Virtual Server)。

3.負(fù)載均衡算法:

  • 輪詢(Round Robin,RR):所有請(qǐng)求集資分發(fā)到每臺(tái)應(yīng)用服務(wù)器上

  • 加權(quán)輪詢(Weighted Round Robin,WRR):根據(jù)服務(wù)器硬件性能情況,在輪詢的基礎(chǔ)上按照配置的權(quán)重進(jìn)行分發(fā)

  • 隨機(jī)(Random):請(qǐng)求被隨機(jī)分配到各個(gè)應(yīng)用服務(wù)器

  • 最少連接(Least Connections):記錄服務(wù)器正在處理的連接數(shù),將新的請(qǐng)求分發(fā)到最少連接的服務(wù)器上

  • 源地址散列(Source Hashing):根據(jù)請(qǐng)求來(lái)源的IP地址進(jìn)行Hash計(jì)算

C.分布式緩存集群的伸縮性設(shè)計(jì)

1.Memcached分布式緩存集群的訪問(wèn)模型

通過(guò)KEY輸入路由算法模塊,路由算法計(jì)算得到一臺(tái)Memcached服務(wù)器,進(jìn)行讀取和寫入。

2.Memcached分布式緩存集群的伸縮性挑戰(zhàn)

簡(jiǎn)單的路由算法使用余數(shù)Hash:用服務(wù)器數(shù)目除緩存數(shù)據(jù)KEY的Hash值,余數(shù)為服務(wù)器列表下標(biāo)編號(hào)。伸縮性不好。

3.分布式緩存的一致性Hash算法

先構(gòu)造一個(gè)長(zhǎng)度為2的32次方的整數(shù)環(huán)(一致性Hash環(huán)),根據(jù)節(jié)點(diǎn)名稱的Hash值將緩存服務(wù)器節(jié)點(diǎn)放置在這個(gè)Hash環(huán)上。然后根據(jù)需要緩存的數(shù)據(jù)的KEY值計(jì)算Hash值,然后在Hash環(huán)上順時(shí)針查找距離這個(gè)KEY的Hash值最近的緩存服務(wù)器節(jié)點(diǎn),完成KEY到服務(wù)器的Hash映射查找 。

D.數(shù)據(jù)存儲(chǔ)服務(wù)器集群的伸縮性設(shè)計(jì)

1.關(guān)系數(shù)據(jù)庫(kù)集群的伸縮性設(shè)計(jì)

數(shù)據(jù)復(fù)制(主從)、分表分庫(kù)、數(shù)據(jù)分片( Cobar)

2.NoSQL數(shù)據(jù)庫(kù)的伸縮性設(shè)計(jì)

NoSQL放棄了以關(guān)系代數(shù)為基礎(chǔ)的結(jié)構(gòu)化查詢語(yǔ)言(SQL)和事務(wù)一致性保證(ACID)。強(qiáng)化了高可用性和伸縮性。(Apache HBase) 

到此,關(guān)于“mysql大型網(wǎng)站技術(shù)架構(gòu)核心原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI