摘要:初始階段的網(wǎng)站架構(gòu)在初始階段,訪問量并不大,所以應(yīng)用程序數(shù)據(jù)庫文件等所有的資源都在一臺服務(wù)器上。在大型網(wǎng)站架構(gòu)中也采用分層結(jié)構(gòu),將網(wǎng)主占軟件系統(tǒng)分為應(yīng)用層服務(wù)層數(shù)據(jù)層。
有人說過,大型網(wǎng)站是根據(jù)業(yè)務(wù)需求逐步演化而來的,而不是設(shè)計出來的,下面就是一個大型網(wǎng)站的進化過程。
初始階段的網(wǎng)站架構(gòu)
在初始階段,訪問量并不大,所以應(yīng)用程序、數(shù)據(jù)庫、文件等所有的資源都在一臺服務(wù)器上。
2 應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離
隨著業(yè)務(wù)的發(fā)展,就會發(fā)現(xiàn)一臺服務(wù)器抗不過來了,所以將應(yīng)用服務(wù)器與數(shù)據(jù)(文件、數(shù)據(jù)庫)服務(wù)器分離。三臺服務(wù)器對硬件資源的要求各不相同:應(yīng)用服務(wù)器需要更快的CPU,文件服務(wù)器需要更大的磁盤和帶寬,數(shù)據(jù)庫服務(wù)器需要更快速的磁盤和更大的內(nèi)存。分離之后,三個服務(wù)器各司其職,也方便針對性的優(yōu)化。
3 使用緩存改善網(wǎng)站性能
緩存的使用無處不在,緩存的根本目的是加快訪問速度。當(dāng)數(shù)據(jù)庫的訪問壓力過大的時候,就可以考慮使用緩存了。網(wǎng)站使用的緩存可以分為兩種: 緩存在應(yīng)用服務(wù)器上的本地緩存和緩存在專門的分布式緩存服務(wù)器上的遠程緩存。
4使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力
隨著業(yè)務(wù)的發(fā)展,單個應(yīng)用服務(wù)器一定會成為瓶頸,應(yīng)用服務(wù)器實現(xiàn)集群是網(wǎng)站可伸縮集群架構(gòu)設(shè)計中較為簡單成熟的一種。后面也會提到,將應(yīng)用服務(wù)器設(shè)計為無狀態(tài)的(沒有需要保存的上下文信息),就可以通過增加機器,使用負載均衡來scale out。
5.?dāng)?shù)據(jù)庫讀寫分離
即使使用了緩存,但在緩存未命中、或者緩存服務(wù)時效的情況下,還是需要訪問數(shù)據(jù)庫,這個時候就需要數(shù)據(jù)庫的讀寫分離:主庫提供寫操作,從庫提供讀服務(wù)。注意,在上圖中增加了一個數(shù)據(jù)訪問模塊,可以對應(yīng)用層透明數(shù)據(jù)庫的主從分離信息。
6.使用反向代理和CDN 加速網(wǎng)站晌應(yīng)
CDN和反向代理其實都是緩存,區(qū)別在于CDN 部署在網(wǎng)絡(luò)提供商的機房;而反向代理則部署在網(wǎng)站的中心機房。使用CDN 和反向代理的目的都是盡旱返回數(shù)據(jù)給用戶, 一方面加快用戶訪問速度,另一方面也減輕后端服務(wù)器的負載壓力。
7.使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
單個物理機的磁盤是有限的,單個關(guān)系數(shù)據(jù)庫的處理能力也是有上限的,所以需要分布式文件存儲與分布式數(shù)據(jù)庫。當(dāng)然,也需要”統(tǒng)一數(shù)據(jù)訪問模塊“,使得應(yīng)用層不用關(guān)心文件、數(shù)據(jù)的具體位置。值得一提的事,關(guān)系型數(shù)據(jù)庫自身并沒有很好的水平擴展方案,因此一般都需要一個數(shù)據(jù)庫代理層,如cobar、mycat。
8.業(yè)務(wù)拆分
將一個網(wǎng)站拆分成許多不同的應(yīng)用, 每個應(yīng)用獨立部署維護。應(yīng)用之間可以通過一個超鏈接建立關(guān)系(在首頁上的導(dǎo)航鏈接每個都指向不同的應(yīng)用地址) ,也可以通過消息隊列進行數(shù)據(jù)分發(fā), 當(dāng)然最多的還是通過訪問同一個數(shù)據(jù)存儲系統(tǒng)來構(gòu)成一個關(guān)聯(lián)的完整系統(tǒng)
9.分布式服務(wù)
既然每一個應(yīng)用系統(tǒng)都需要執(zhí)行許多相同的業(yè)務(wù)操作, 比如用戶管理、商品管理等,那么可以將這些共用的業(yè)務(wù)提取出來,獨立部署。
通過服務(wù)的分布式,各個應(yīng)用能更好的獨立發(fā)展,實現(xiàn)了從依賴模塊到依賴服務(wù)的過渡。將通用的公共服務(wù)獨立出來,也方便做服務(wù)管控,比如對各個應(yīng)用的服務(wù)請求進行監(jiān)控,在高峰時期限制、關(guān)閉某些應(yīng)用的訪問等。
10網(wǎng)站架構(gòu)模式
① 分層
分層是企業(yè)應(yīng)用系統(tǒng)中最常見的一種架構(gòu)模式,將系統(tǒng)在橫向維度上切分成幾個部分,每個部分負責(zé)一部分相對比較單一的職責(zé), 然后通過上層對下層的依賴和調(diào)用組成一個完整的系統(tǒng)。
在大型網(wǎng)站架構(gòu)中也采用分層結(jié)構(gòu),將網(wǎng)主占軟件系統(tǒng)分為應(yīng)用層、服務(wù)層、數(shù)據(jù)層。
分層的好處在于:解耦合,獨立發(fā)展,伸縮性,可擴展性。上面網(wǎng)站的進化史也凸出了分層的重要性。
但是分層架構(gòu)也有一些挑戰(zhàn), 就是必須合理規(guī)劃層次邊界和接口,在開發(fā)過程中,嚴格遵循分層架構(gòu)的約束, 禁止跨層次的調(diào)用( 應(yīng)用層直接調(diào)用數(shù)據(jù)層)及逆向調(diào)用(數(shù)據(jù)層調(diào)用服務(wù)層, 或者服務(wù)層調(diào)用應(yīng)用層)。
② 分割
分層強調(diào)的是橫向切分,而分割是縱向切分, 上面網(wǎng)站進化史部分的業(yè)務(wù)拆分就包含了分割。
分割的目標(biāo)是高內(nèi)聚、低耦合的模塊單元
③ 分布式
分層和分割的一個主要目的是分布式部署,但分布式也有自己的問題:網(wǎng)絡(luò)通信帶來的性能問題,可用性,一致性與分布式事務(wù),系統(tǒng)維護管理復(fù)雜度。
④ 集群
一個機器解決不了的問題,就用幾個機器來解決,當(dāng)服務(wù)無狀態(tài)的時候,通過往集群增加機器就能解決大部分問題。對應(yīng)網(wǎng)站進化史中“使用應(yīng)用服務(wù)器集群改善網(wǎng)站的并發(fā)處理能力”
⑤ 緩存
緩存就是將數(shù)據(jù)存放在距離計算最近的位置以加快處理速度,同時大大減輕了數(shù)據(jù)提供者的壓力
大型網(wǎng)站架構(gòu)設(shè)計在很多方面都使用了緩存設(shè)計:CDN、反向代理、本地緩存、分布式緩存
⑥ 異步
異步是解耦合的一個重要手段,常見的生產(chǎn)者-消費者模型就是一個異步模式。
出了解耦合,異步還能提高系統(tǒng)可用性、加快響應(yīng)速度、流量削峰。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74668.html
摘要:使用緩存兩個前提條件數(shù)據(jù)訪問熱點不均衡數(shù)據(jù)某時段內(nèi)有效,不會很快過期反向代理本地緩存分布式緩存異步旨在系統(tǒng)解耦。 大型網(wǎng)站技術(shù)架構(gòu)-入門梳理 標(biāo)簽 : 架構(gòu)設(shè)計 [TOC] 羅列了大型網(wǎng)站架構(gòu)涉及到的概念,附上了簡單說明 前言 本文是對《大型網(wǎng)站架構(gòu)設(shè)計》(李智慧 著)一書的梳理,類似文字版的思維導(dǎo)圖 全文主要圍繞性能,可用性,伸縮性,擴展性,安全這五個要素 性能,可用性,伸縮性...
摘要:阿里巴巴的共享服務(wù)理念以及企業(yè)級互聯(lián)網(wǎng)架構(gòu)建設(shè)的思路,給這些企業(yè)帶來了不少新的思路,這也是我最終決定寫這本書的最主要原因。盡在雙阿里巴巴技術(shù)演進與超越是迄今唯一由阿里巴巴集團官方出品全面闡述雙八年以來在技術(shù)和商業(yè)上演進和創(chuàng)新歷程的書籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型網(wǎng)站技術(shù)架構(gòu):核...
摘要:網(wǎng)站都是從小網(wǎng)站一步一步發(fā)展為大型網(wǎng)站的,而這之中的挑戰(zhàn)主要來自于龐大的用戶安全環(huán)境惡劣高并發(fā)的訪問和海量的數(shù)據(jù),任何簡單的業(yè)務(wù)處理,一旦需要處理數(shù)以計的數(shù)據(jù)和面對數(shù)以億計的用戶時,問題就會變的很棘手下面我們就來說說這個演變過程初始階段大型 網(wǎng)站都是從小網(wǎng)站一步一步發(fā)展為大型網(wǎng)站的,而這之中的挑戰(zhàn)主要來自于龐大的用戶、安全環(huán)境惡劣、高并發(fā)的訪問和海量的數(shù)據(jù),任何簡單的業(yè)務(wù)處理,一旦需要...
摘要:初始階段的網(wǎng)站架構(gòu)在初始階段,訪問量并不大,所以應(yīng)用程序數(shù)據(jù)庫文件等所有的資源都在一臺服務(wù)器上。使用緩存改善網(wǎng)站性能緩存的使用無處不在,緩存的根本目的是加快訪問速度。 有人說過,大型網(wǎng)站是根據(jù)業(yè)務(wù)需求逐步演化而來的,而不是設(shè)計出來的,下面就是一個大型網(wǎng)站的進化過程。 1.初始階段的網(wǎng)站架構(gòu) showImg(https://segmentfault.com/img/bVbs8oa?w=3...
閱讀 1967·2021-11-22 15:33
閱讀 3005·2021-11-18 10:02
閱讀 2612·2021-11-08 13:16
閱讀 1623·2021-10-09 09:57
閱讀 1372·2021-09-30 09:47
閱讀 2008·2019-08-29 13:05
閱讀 3070·2019-08-29 12:46
閱讀 1010·2019-08-29 12:19