大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析by方陽_第1頁
大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析by方陽_第2頁
大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析by方陽_第3頁
大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析by方陽_第4頁
大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析by方陽_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、大型網(wǎng)站技術(shù)架構(gòu) 核心原理與案例分析INFORMATION SHARE方陽方陽 2017.022017.02金融金融核心研發(fā)核心研發(fā) 信息技術(shù)中心信息技術(shù)中心BREAD PPT DESIGN目錄 網(wǎng)站的演化1 1 大型網(wǎng)站的架構(gòu)模式2 2 核心要素分析3 3CONTENTSBREAD PPT DESIGN什么樣的網(wǎng)站才算是大型網(wǎng)站?什么樣的網(wǎng)站才算是大型網(wǎng)站? 高并發(fā),大流量 高可用 海量的數(shù)據(jù) 用戶分布廣泛,網(wǎng)絡(luò)情況復(fù)雜 安全環(huán)境惡劣 需求快速變更,發(fā)布頻繁 漸進(jìn)式的發(fā)展 網(wǎng)站的演化1 1BREAD PPT DESIGN大型網(wǎng)站都是由小型網(wǎng)站發(fā)展而來,架構(gòu)也是如此大型網(wǎng)站都是由小型網(wǎng)站發(fā)展而

2、來,架構(gòu)也是如此 初始階段的網(wǎng)站,一臺(tái)服務(wù)器包含應(yīng)用、數(shù)據(jù)庫等 應(yīng)用與數(shù)據(jù)分離 使用緩存改善性能 使用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力 數(shù)據(jù)庫讀寫分離 使用反向代理和CDN加速網(wǎng)站相應(yīng) 使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng) 使用NoSQL和搜索引擎 業(yè)務(wù)拆分 分布式服務(wù) 網(wǎng)站的演化1 1BREAD PPT DESIGN網(wǎng)站架構(gòu)的演化 網(wǎng)站的演化1 1BREAD PPT DESIGN大型網(wǎng)站的價(jià)值觀 大型網(wǎng)站架構(gòu)技術(shù)的價(jià)值觀是隨網(wǎng)站所需靈活應(yīng)對 驅(qū)動(dòng)大型網(wǎng)站技術(shù)發(fā)展的主要力量是網(wǎng)站的業(yè)務(wù)發(fā)展 網(wǎng)站技術(shù)是為了業(yè)務(wù)而存在的,脫離業(yè)務(wù)發(fā)展的實(shí)際,可能會(huì)將技術(shù)發(fā)展引入小道 技術(shù)是用來解決業(yè)務(wù)問題的,而業(yè)

3、務(wù)問題,也可以通過業(yè)務(wù)的手段解決BREAD PPT DESIGN網(wǎng)站架構(gòu) 架構(gòu)是什么? 最高層次的規(guī)劃,難以改變的決定。這些規(guī)劃和決定奠定了事務(wù)未來發(fā)展的方向和最終的藍(lán)圖 軟件架構(gòu)是什么? 有管軟件整體結(jié)果與組件的抽象描述,用于知道大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)BREAD PPT DESIGN大型網(wǎng)站的架構(gòu)模式架構(gòu)模式分層分割分布式集群緩存異步冗余自動(dòng)化安全BREAD PPT DESIGN 分層 將系統(tǒng)橫向維度上切分成幾個(gè)部分,每個(gè)部分負(fù)責(zé)比較單一的職責(zé),通過上層對下層的依賴和調(diào)用組成一個(gè)完整的系統(tǒng) 禁止跨層次的調(diào)用和逆向調(diào)用 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 分割 如果說

4、分層是將軟件在橫向方面進(jìn)行切分,那么分隔就是在縱向方面對軟件進(jìn)行切分 大型網(wǎng)站分隔的粒度可能會(huì)很小。比如在應(yīng)用層,將不同業(yè)務(wù)進(jìn)行分隔,例如將購物、論壇、搜索、廣告分隔成不同的應(yīng)用,有對立的團(tuán)隊(duì)負(fù)責(zé),部署在不同的服務(wù)器上 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 分布式 分布式是指將不同的業(yè)務(wù)分布在不同的地方 分布式應(yīng)用和服務(wù),把應(yīng)用和服務(wù)模塊分布式部署 分布式靜態(tài)資源:把JS,CSS,JPG圖片等資源獨(dú)立分布式部署,并采用獨(dú)立的域名 分布式數(shù)據(jù)和存儲(chǔ):大型網(wǎng)站的海量數(shù)據(jù),單臺(tái)計(jì)算機(jī)無法提供空間時(shí),需要分布式部署 分布式計(jì)算:應(yīng)用、服務(wù)、數(shù)據(jù)處理都是計(jì)算,這些計(jì)算量非常龐大,目前

5、很多網(wǎng)站采用hadoop及其MapRedcuce分布式計(jì)算框架 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 集群 集群是指將多臺(tái)服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù) 對于用戶訪問集中的模塊需要將獨(dú)立部署的服務(wù)器集群化,即多臺(tái)服務(wù)器部署相同的應(yīng)用構(gòu)成一個(gè)集群,通過負(fù)載均衡設(shè)備共同對外提供服務(wù) 服務(wù)器集群能夠?yàn)橄嗤姆?wù)提供更多的并發(fā)支持,因此當(dāng)有更多的用戶訪問時(shí),只需要向集群中加入新的機(jī)器即可;另外可以實(shí)現(xiàn)當(dāng)其中的某臺(tái)服務(wù)器發(fā)生故障時(shí),可以通過負(fù)載均衡的失效轉(zhuǎn)移機(jī)制將請求轉(zhuǎn)移至集群中其他的服務(wù)器上,因此可以提高系統(tǒng)的可用性 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 緩存

6、緩存目的就是減輕服務(wù)器的計(jì)算,使數(shù)據(jù)直接返回給用戶。在現(xiàn)在的軟件設(shè)計(jì)中,緩存已經(jīng)無處不在。具體實(shí)現(xiàn)有CDN、反向代理、本地緩存、分布式緩存等 使用緩存有兩個(gè)條件:訪問數(shù)據(jù)熱點(diǎn)不均衡,即某些頻繁訪問的數(shù)據(jù)需要放在緩存中;數(shù)據(jù)在某個(gè)時(shí)間段內(nèi)有效,不過很快過期,否則會(huì)因?yàn)閿?shù)據(jù)過期而臟讀,影響數(shù)據(jù)的正確性 緩存除了可以加快數(shù)據(jù)的訪問速度,還可以減輕后端應(yīng)用和數(shù)據(jù)存儲(chǔ)的負(fù)載壓力 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 異步 使用異步,業(yè)務(wù)之間的消息傳遞不是同步調(diào)用,而是將一個(gè)業(yè)務(wù)操作分成多個(gè)階段,每個(gè)階段之間通過共享數(shù)據(jù)的方法異步執(zhí)行進(jìn)行協(xié)作 異步調(diào)用可以提高系統(tǒng)的可用性,加快網(wǎng)站的響

7、應(yīng)速度,消除并發(fā)訪問高峰。但是可能會(huì)對用戶體驗(yàn)及業(yè)務(wù)流程造成影響 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 冗余 網(wǎng)站需要724小時(shí)連續(xù)運(yùn)行,那么就得有相應(yīng)的冗余機(jī)制,以防某臺(tái)機(jī)器宕掉時(shí)無法訪問,而冗余則可以通過部署至少兩臺(tái)服務(wù)器構(gòu)成一個(gè)集群實(shí)現(xiàn)服務(wù)高可用。數(shù)據(jù)庫除了定期備份還需要實(shí)現(xiàn)冷熱備份。甚至可以在全球范圍內(nèi)部署災(zāi)備數(shù)據(jù)中心 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 自動(dòng)化 具體有自動(dòng)化發(fā)布過程,自動(dòng)化代碼管理、自動(dòng)化測試、自動(dòng)化安全檢測、自動(dòng)化部署、自動(dòng)化監(jiān)控、自動(dòng)化報(bào)警、自動(dòng)化失效轉(zhuǎn)移、自動(dòng)化失效恢復(fù)等 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DE

8、SIGN 安全 身份驗(yàn)證、加密、防火墻等 大型網(wǎng)站的架構(gòu)模式2 2BREAD PPT DESIGN 核心要素3 3二三四可用性可用性伸縮性伸縮性擴(kuò)展性擴(kuò)展性五安全安全性性高性能高性能一BREAD PPT DESIGN 用戶眼中的網(wǎng)站性能 高性能3 3BREAD PPT DESIGN 開發(fā)眼中的網(wǎng)站性能 開發(fā)人員關(guān)注的是應(yīng)用程序本身和相關(guān)子系統(tǒng)的性能,包括響應(yīng)延遲、系統(tǒng)吞吐量、并發(fā)處理能力、系統(tǒng)穩(wěn)定性等。 主要優(yōu)化手段有:使用緩存加速數(shù)據(jù)讀取,使用集群提高吞吐能力,使用異步消息加快請求相應(yīng),使用代碼優(yōu)化改善性能 高性能3 3BREAD PPT DESIGN 運(yùn)維眼中的網(wǎng)站性能 運(yùn)維人員關(guān)注的基礎(chǔ)

9、設(shè)施性能和資源利用率,比如服務(wù)器硬件,數(shù)據(jù)中心網(wǎng)絡(luò),網(wǎng)絡(luò)運(yùn)營商 主要優(yōu)化手段有:建設(shè)優(yōu)化骨干網(wǎng),使用高性價(jià)比的服務(wù)器等 高性能3 3BREAD PPT DESIGN 判斷一個(gè)網(wǎng)站性能好不好有哪些指標(biāo) 響應(yīng)時(shí)間,從發(fā)出請求到收到數(shù)據(jù)所需要的時(shí)間 并發(fā)數(shù),系統(tǒng)能同時(shí)處理請求的數(shù)目 吞吐量,單位時(shí)間內(nèi),系統(tǒng)能處理的請求數(shù)量 性能計(jì)數(shù)器,一些數(shù)據(jù)指標(biāo),包括對象與線程數(shù),內(nèi)存使用,CPU使用等 高性能3 3BREAD PPT DESIGN 高性能3 3 性能測試方法 性能測試 負(fù)載測試 壓力測試 穩(wěn)定性測試BREAD PPT DESIGN 高性能3 3 WEB前端性能優(yōu)化1 應(yīng)用服務(wù)器性能優(yōu)化2 存儲(chǔ)性

10、能優(yōu)化3BREAD PPT DESIGN 高性能3 3 Web前端優(yōu)化 瀏覽器端優(yōu)化 減少http請求,合并CSS,JS,圖片等 使用瀏覽器緩存,靜態(tài)資源可以緩存在瀏覽器中 啟用壓縮,對文件壓縮,減少傳輸?shù)臄?shù)據(jù)量,瀏覽器端解壓,這對服務(wù)器和瀏覽器端都有壓力 CSS放在頁面最上,js放在頁面最下面 減少Cookie傳輸BREAD PPT DESIGN 高性能3 3 Web前端優(yōu)化 CDN加速 CDN本質(zhì)就是緩存,而且將數(shù)據(jù)緩存在離用戶最近的地方。CDN就部署在網(wǎng)絡(luò)營運(yùn)商的機(jī)房中 反向代理 傳統(tǒng)代理服務(wù)器位于瀏覽器一側(cè),而反向代理服務(wù)器位于網(wǎng)站機(jī)房一側(cè)。反向代理服務(wù)器通過配置緩存功能,加速網(wǎng)站響應(yīng)

11、 另外,反向代理具有保護(hù)網(wǎng)站安全的作用,所有請求都須經(jīng)過反代服務(wù)器。反代還可以實(shí)現(xiàn)負(fù)載均衡BREAD PPT DESIGN 高性能3 3 反向代理BREAD PPT DESIGN 高性能3 3 應(yīng)用服務(wù)器性能優(yōu)化 分布式緩存 分布式緩存架構(gòu)有兩種,一種以Jboss 為代表需要更新同步的分布式緩存,一種一Memcached為代表的不互相通信的分布式緩存 異步操作 使用集群 存儲(chǔ)性能優(yōu)化(硬件) 高性能的代碼 多線程,需要注意線程安全問題 資源復(fù)用 數(shù)據(jù)結(jié)構(gòu) 垃圾回收BREAD PPT DESIGN 高可用性3 3 高可用的應(yīng)用1 高可用的服務(wù)2 高可用的數(shù)據(jù)3 軟件質(zhì)量保證4 網(wǎng)站運(yùn)行監(jiān)控5BR

12、EAD PPT DESIGN 高可用3 3 高可用的網(wǎng)站 可用性度量 網(wǎng)站年度不可用時(shí)間=(1-網(wǎng)站不可用時(shí)間/年度時(shí)間) 100% 可用性考核BREAD PPT DESIGN 高可用3 3應(yīng)用層、服務(wù)層、數(shù)據(jù)層的劃分粒度會(huì)很小很詳細(xì),結(jié)構(gòu)復(fù)雜、服務(wù)器規(guī)模龐大。通常情況下,不同的業(yè)務(wù)產(chǎn)品會(huì)部署在不同的服務(wù)器集群上,互不干擾BREAD PPT DESIGN 高可用3 3 高可用的應(yīng)用 通過負(fù)載均衡進(jìn)行無狀態(tài)的失效轉(zhuǎn)移 Session管理 早期網(wǎng)站使用session復(fù)制,在集群中同步 Session綁定在某臺(tái)服務(wù)器上,但是一旦宕機(jī),session就不存在 利用cookie記錄session,保存在

13、客戶端上,但是受限于cookie的大小和用戶是否開啟cookie Session服務(wù)器,部署獨(dú)立的session服務(wù)器集群,每次讀寫都訪問session服務(wù)器BREAD PPT DESIGN 高可用3 3 高可用的服務(wù) 分級管理 核心應(yīng)用和服務(wù)優(yōu)先的使用更好的硬件,其他次之 超時(shí)設(shè)置 服務(wù)調(diào)用時(shí)間設(shè)置超時(shí)時(shí)間 異步調(diào)用 通過消息隊(duì)列方式完成 服務(wù)降級 網(wǎng)站訪問高峰期,可對非重要服務(wù)降級:拒絕服務(wù)和關(guān)閉服務(wù) 冪等性設(shè)計(jì)BREAD PPT DESIGN 高可用3 3 高可用的數(shù)據(jù) CAP原理 數(shù)據(jù)持久性 Partition Tolerance 數(shù)據(jù)可訪問性 Availibility 數(shù)據(jù)一致性 C

14、onsistency 數(shù)據(jù)強(qiáng)一致,數(shù)據(jù)更新結(jié)果和操作響應(yīng)總是一致的 數(shù)據(jù)用戶一致,數(shù)據(jù)在存儲(chǔ)中可能是不一致的,但是用戶訪問時(shí),通過就錯(cuò)和校驗(yàn),可以確定一個(gè)一直的數(shù)據(jù)給用戶 數(shù)據(jù)最終一致,物理存儲(chǔ)的數(shù)據(jù)可能是不一致的,用戶訪問時(shí)也可能是不一致的,但是經(jīng)過一段時(shí)間后,數(shù)據(jù)最終會(huì)達(dá)到一致。BREAD PPT DESIGN 高可用3 3BREAD PPT DESIGN 高可用3 3 高可用的數(shù)據(jù) 數(shù)據(jù)備份 失效轉(zhuǎn)移BREAD PPT DESIGN 高可用3 3 運(yùn)行監(jiān)控 監(jiān)控?cái)?shù)據(jù)采集 用戶行為日志收集 服務(wù)器性能監(jiān)控 運(yùn)行數(shù)據(jù)報(bào)告 監(jiān)控管理 系統(tǒng)報(bào)警 失效轉(zhuǎn)移 自動(dòng)優(yōu)雅降級BREAD PPT DESI

15、GN不同功能物理分離不同功能物理分離 縱向分離 橫向分離 高伸縮性3 3BREAD PPT DESIGN單一功能通過集群實(shí)現(xiàn)伸縮單一功能通過集群實(shí)現(xiàn)伸縮 高伸縮性3 3BREAD PPT DESIGN 高伸縮性3 3 HTTP重定向負(fù)載均衡 DNS域名解析負(fù)載均衡 反向代理負(fù)載均衡 IP負(fù)載均衡 數(shù)據(jù)鏈路層負(fù)載均衡 負(fù)載均衡算法簡介集群的伸縮性設(shè)計(jì):BREAD PPT DESIGNhttp重定向負(fù)載均衡BREAD PPT DESIGNDNS域名解析負(fù)載均衡BREAD PPT DESIGN反向代理負(fù)載均衡BREAD PPT DESIGNIP負(fù)載均衡BREAD PPT DESIGN數(shù)據(jù)鏈路層負(fù)載均

16、衡BREAD PPT DESIGN 高伸縮性3 3數(shù)據(jù)存儲(chǔ)服務(wù)器集群的伸縮性設(shè)計(jì) 關(guān)系數(shù)據(jù)庫集群的伸縮性設(shè)計(jì) NoSQL數(shù)據(jù)庫的伸縮性設(shè)計(jì)BREAD PPT DESIGN 高可擴(kuò)展性3 3 分布式消息隊(duì)列降低系統(tǒng)耦合性1 分布式服務(wù)2 可擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)3 開放平臺(tái)4BREAD PPT DESIGN 高擴(kuò)展性3 3分布式消息隊(duì)列 事件驅(qū)動(dòng)架構(gòu) 通過在低耦合的模塊之間傳輸事件消息,以保持模塊的松散耦合,并借助事件消息的通信完成模塊間合作,典型的架構(gòu)就是生產(chǎn)者消費(fèi)者模式生產(chǎn)者消費(fèi)者模式。在大型網(wǎng)站架構(gòu)中,具體實(shí)現(xiàn)手段很多,最常用的就是分布式消息隊(duì)列BREAD PPT DESIGN 高擴(kuò)展性3 3BR

17、EAD PPT DESIGN 高擴(kuò)展性3 3目前開源的和商業(yè)的分布式消息隊(duì)列產(chǎn)品有很多,比較著名的有Apache ActiveMQ等,如下是分布式消息隊(duì)列的架構(gòu)原理BREAD PPT DESIGN 高擴(kuò)展性3 3巨無霸系統(tǒng)面臨的麻煩 編譯部署困難 代碼分支管理困難 數(shù)據(jù)庫連接耗盡 新增業(yè)務(wù)困難BREAD PPT DESIGN 高擴(kuò)展性3 3利用分布式服務(wù)打造可復(fù)用的業(yè)務(wù)平臺(tái)利用分布式服務(wù)打造可復(fù)用的業(yè)務(wù)平臺(tái) 負(fù)載均衡 失效轉(zhuǎn)移 高效的遠(yuǎn)程通信 整合異構(gòu)系統(tǒng) 對應(yīng)用最少侵入 版本管理 實(shí)時(shí)監(jiān)控BREAD PPT DESIGN 高擴(kuò)展性3 3目前國內(nèi)有較多成功實(shí)施案例的開源分布式服務(wù)框架分布式服務(wù)

18、框架是阿里巴巴的Dubbo,下圖是Dubbo的架構(gòu)原理BREAD PPT DESIGN 服務(wù)框架客戶端模塊通過服務(wù)注冊中心加載服務(wù)提供者列表(服務(wù)提供者啟動(dòng)后主動(dòng)向服務(wù)注冊中心注冊自己可提供的服務(wù)接口列表),查找需要的服務(wù)接口,并根據(jù)配置的負(fù)載均衡策略將服務(wù)調(diào)用請求發(fā)送到某臺(tái)服務(wù)提供者服務(wù)器。如果服務(wù)調(diào)用失敗,客戶端模塊會(huì)自動(dòng)從服務(wù)提供者列表選擇一個(gè)可提供同樣服務(wù)的另一臺(tái)服務(wù)器重新請求服務(wù),實(shí)現(xiàn)服務(wù)的自動(dòng)失效轉(zhuǎn)移,保證高可用服務(wù)。 高擴(kuò)展性3 3BREAD PPT DESIGN利用開放平臺(tái)建設(shè)網(wǎng)站生態(tài)圈利用開放平臺(tái)建設(shè)網(wǎng)站生態(tài)圈 大型網(wǎng)站為了更好的服務(wù)自己的用戶,開放更多的增值服務(wù),會(huì)把網(wǎng)站內(nèi)部的服務(wù)封裝成一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論