国产不卡在线播放-国产不卡在线观看-国产不卡在线观看视频-国产不卡在线看-九九精品久久-九九精品久久久久久久久

瑞安市優(yōu)博科技有限公司

 設(shè)為首頁 | 加入收藏

 

全國統(tǒng)一服務(wù)熱線:400 666 1789

WEBSITE KNOWLEDGE      網(wǎng)站知識  
 
這幾個問題解決了,怎么設(shè)計大型網(wǎng)站架構(gòu)不再是困難
來源:本站  編輯:admin  時間:2020/12/29  點擊數(shù):15465  
在大型網(wǎng)站技術(shù)架構(gòu)設(shè)計時如何避免走彎路,避開在具體業(yè)務(wù)應(yīng)用中的那些坑?對于正處于互聯(lián)網(wǎng)轉(zhuǎn)型初期的技術(shù)團(tuán)隊來說是必須考慮的問題。本文將從“什么是架構(gòu)”和“軟件架構(gòu)的五要素”兩部分講述大型網(wǎng)站架構(gòu)方法。
  作者介紹
李智慧,曾擔(dān)任宅米 CTO, NEC 項目主管,阿里巴巴技術(shù)專家,IBM 咨詢經(jīng)理,Intel 大數(shù)據(jù)工程師;開發(fā)過 ERP,寫過防火墻,做過網(wǎng)站架構(gòu),搞過數(shù)據(jù)庫,帶過團(tuán)隊,創(chuàng)過業(yè),申請過幾個分布式系統(tǒng)專利,為 Apache Spark 貢獻(xiàn)過一點代碼;曾在浙江大學(xué)為碩士研究生講授面向?qū)ο蟾呒壘幊陶n程;寫過一本書《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》,被若干高校選為計算機(jī)類專業(yè)教材。
  什么是架構(gòu)
關(guān)于什么是架構(gòu),一種比較通俗的說法是 “最高層次的規(guī)劃,難以改變的決定”,這些規(guī)劃和決定奠定了事物未來發(fā)展的方向和最終的藍(lán)圖。
從這個意義上說,人生規(guī)劃也是一種架構(gòu)。選什么學(xué)校、學(xué)什么專業(yè)、進(jìn)什么公司、找什么對象,過什么樣的生活,都是自己人生的架構(gòu)。
具體到軟件架構(gòu),維基百科是這樣定義的:“有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計”。系統(tǒng)的各個重要組成部分及其關(guān)系構(gòu)成了系統(tǒng)的架構(gòu),這些組成部分可以是具體的功能模塊,也可以是非功能的設(shè)計與決策,他們相互關(guān)系組成一個整體,共同構(gòu)成了軟件系統(tǒng)的架構(gòu)。
  軟件架構(gòu)的五要素
一般說來,除了當(dāng)前的系統(tǒng)功能需求外,軟件架構(gòu)還需要關(guān)注性能、可用性、伸縮性、擴(kuò)展性和安全性這 5 個架構(gòu)要素,架構(gòu)設(shè)計過程中需要平衡這 5 個要素之間的關(guān)系以實現(xiàn)需求和架構(gòu)目標(biāo),也可以通過考察這些架構(gòu)要素來衡量一個軟件架構(gòu)設(shè)計的優(yōu)劣,判斷其是否滿足期望。
  性能
性能是網(wǎng)站的一個重要指標(biāo),除非是沒得選擇(比如只能到 www.12306.cn 這一個網(wǎng)站上買火車票),否則用戶無法忍受一個響應(yīng)緩慢的網(wǎng)站。一個打開緩慢的網(wǎng)站會導(dǎo)致嚴(yán)重的用戶流失,很多時候網(wǎng)站性能問題是網(wǎng)站架構(gòu)升級優(yōu)化的觸發(fā)器。可以說性能是網(wǎng)站架構(gòu)設(shè)計的一個重要方面,任何軟件架構(gòu)設(shè)計方案都必須考慮可能會帶來的性能問題。
也正是因為性能問題幾乎無處不在,所以優(yōu)化網(wǎng)站性能的手段也非常多,從用戶瀏覽器到數(shù)據(jù)庫,影響用戶請求的所有環(huán)節(jié)都可以進(jìn)行性能優(yōu)化。在瀏覽器端,可以通過瀏覽器緩存、使用頁面壓縮、合理布局頁面、減少 Cookie 傳輸?shù)仁侄胃纳菩阅堋?/span>
還可以使用 CDN,將網(wǎng)站靜態(tài)內(nèi)容分發(fā)至離用戶最近的網(wǎng)絡(luò)服務(wù)商機(jī)房,使用戶通過最短訪問路徑獲取數(shù)據(jù)。可以在網(wǎng)站機(jī)房部署反向代理服務(wù)器,緩存熱點文件,加快請求響應(yīng)速度,減輕應(yīng)用服務(wù)器負(fù)載壓力。
在應(yīng)用服務(wù)器端,可以使用服務(wù)器本地緩存和分布式緩存,通過緩存在內(nèi)存中的熱點數(shù)據(jù)處理用戶請求,加快請求處理過程,減輕數(shù)據(jù)庫負(fù)載壓力。也可以通過異步操作將用戶請求發(fā)送至消息隊列等待后續(xù)任務(wù)處理,而當(dāng)前請求直接返回響應(yīng)給用戶。
在網(wǎng)站有很多用戶高并發(fā)請求的情況下,可以將多臺應(yīng)用服務(wù)器組成一個集群共同對外服務(wù),提高整體處理能力,改善性能。在代碼層面,也可以通過使用多線程、改善內(nèi)存管理等手段優(yōu)化性能。
在數(shù)據(jù)庫服務(wù)器端,索引、緩存、SQL 優(yōu)化等性能優(yōu)化手段都已經(jīng)比較成熟。而方興未艾的 NoSQL 數(shù)據(jù)庫通過優(yōu)化數(shù)據(jù)模型、存儲結(jié)構(gòu)、伸縮特性等手段在性能方面的優(yōu)勢也日趨明顯。
衡量網(wǎng)站性能有一系列指標(biāo),重要的有響應(yīng)時間、TPS、系統(tǒng)性能計數(shù)器等,通過測試這些指標(biāo)以確定系統(tǒng)設(shè)計是否達(dá)到目標(biāo)。這些指標(biāo)也是網(wǎng)站監(jiān)控的重要參數(shù),通過監(jiān)控這些指標(biāo)可以分析系統(tǒng)瓶頸,預(yù)測網(wǎng)站容量,并對異常指標(biāo)進(jìn)行報警,保障系統(tǒng)可用性。
對于網(wǎng)站而言,性能符合預(yù)期僅僅是必要條件,因為無法預(yù)知網(wǎng)站可能會面臨的訪問壓力,所以必須要考察系統(tǒng)在高并發(fā)訪問情況下,超出負(fù)載設(shè)計能力的情況下可能會出現(xiàn)的性能問題。網(wǎng)站需要長時間持續(xù)運行,還必須保證系統(tǒng)在持續(xù)運行且訪問壓力不均勻的情況下保持穩(wěn)定的性能特性。
  可用性
對于大型網(wǎng)站而言,特別是知名網(wǎng)站,網(wǎng)站宕掉、服務(wù)不可用是一個重大的事故,輕則影響網(wǎng)站聲譽(yù),重則可能會攤上官司。對于電子商務(wù)類網(wǎng)站,網(wǎng)站不可用還意味著損失金錢和用戶。因此幾乎所有網(wǎng)站都承諾 7×24 可用,但事實上任何網(wǎng)站都不可能達(dá)到完全的 7×24 可用,總會有一些故障時間,扣除這些故障時間,就是網(wǎng)站的總可用時間,這個時間可以換算成網(wǎng)站的可用性指標(biāo),以此衡量網(wǎng)站的可用性,一些知名大型網(wǎng)站可以做到 4 個 9 以上的可用性,也就是可用性超過 99.99%。
因為網(wǎng)站使用的服務(wù)器硬件通常是普通的商用服務(wù)器,這些服務(wù)器的設(shè)計目標(biāo)本身并不保證高可用,也就是說,很有可能會出現(xiàn)服務(wù)器硬件故障,也就是俗稱的服務(wù)器宕機(jī)。大型網(wǎng)站通常都會有上萬臺服務(wù)器,每天都必定會有一些服務(wù)器宕機(jī),因此網(wǎng)站高可用架構(gòu)設(shè)計的前提是必然會出現(xiàn)服務(wù)器宕機(jī),而高可用設(shè)計的目標(biāo)就是當(dāng)服務(wù)器宕機(jī)的時候,服務(wù)或者應(yīng)用依然可用。
網(wǎng)站高可用的主要手段是冗余,應(yīng)用部署在多臺服務(wù)器上同時提供訪問,數(shù)據(jù)存儲在多臺服務(wù)器上互相備份,任何一臺服務(wù)器宕機(jī)都不會影響應(yīng)用的整體可用,也不會導(dǎo)致數(shù)據(jù)丟失。
對于應(yīng)用服務(wù)器而言,多臺應(yīng)用服務(wù)器通過負(fù)載均衡設(shè)備組成一個集群共同對外提供服務(wù),任何一臺服務(wù)器宕機(jī),只需把請求切換到其他服務(wù)器就可實現(xiàn)應(yīng)用的高可用,但是一個前提條件是應(yīng)用服務(wù)器上不能保存請求的會話信息。否則服務(wù)器宕機(jī),會話丟失,即使將用戶請求轉(zhuǎn)發(fā)到其他服務(wù)器上也無法完成業(yè)務(wù)處理。對于存儲服務(wù)器,由于其上存儲著數(shù)據(jù),需要對數(shù)據(jù)進(jìn)行實時備份,當(dāng)服務(wù)器宕機(jī)時需要將數(shù)據(jù)訪問轉(zhuǎn)移到可用的服務(wù)器上,并進(jìn)行數(shù)據(jù)恢復(fù)以保證繼續(xù)有服務(wù)器宕機(jī)的時候數(shù)據(jù)依然可用。
除了運行環(huán)境,網(wǎng)站的高可用還需要軟件開發(fā)過程的質(zhì)量保證。通過預(yù)發(fā)布驗證、自動化測試、自動化發(fā)布、灰度發(fā)布等手段,減少將故障引入線上環(huán)境的可能,避免故障范圍擴(kuò)大。
衡量一個系統(tǒng)架構(gòu)設(shè)計是否滿足高可用的目標(biāo),就是假設(shè)系統(tǒng)中任何一臺或者多臺服務(wù)器宕機(jī)時,以及出現(xiàn)各種不可預(yù)期的問題時,系統(tǒng)整體是否依然可用。
  伸縮性
大型網(wǎng)站需要面對大量用戶的高并發(fā)訪問和存儲海量數(shù)據(jù),不可能只用一臺服務(wù)器就處理全部用戶請求,存儲全部數(shù)據(jù)。網(wǎng)站通過集群的方式將多臺服務(wù)器組成一個整體共同提供服務(wù)。所謂伸縮性是指通過不斷向集群中加入服務(wù)器的手段來緩解不斷上升的用戶并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲需求。
衡量架構(gòu)伸縮性的主要標(biāo)準(zhǔn)就是是否可以用多臺服務(wù)器構(gòu)建集群,是否容易向集群中添加新的服務(wù)器。加入新的服務(wù)器后是否可以提供和原來的服務(wù)器無差別的服務(wù)。集群中可容納的總的服務(wù)器數(shù)量是否有限制。
對于應(yīng)用服務(wù)器集群,只要服務(wù)器上不保存數(shù)據(jù),所有服務(wù)器都是對等的,通過使用合適的負(fù)載均衡設(shè)備就可以向集群中不斷加入服務(wù)器。
對于緩存服務(wù)器集群,加入新的服務(wù)器可能會導(dǎo)致緩存路由失效,進(jìn)而導(dǎo)致集群中大部分緩存數(shù)據(jù)都無法訪問。雖然緩存的數(shù)據(jù)可以通過數(shù)據(jù)庫重新加載,但是如果應(yīng)用已經(jīng)嚴(yán)重依賴緩存,可能會導(dǎo)致整個網(wǎng)站崩潰。需要改進(jìn)緩存路由算法保證緩存數(shù)據(jù)的可訪問性。
關(guān)系數(shù)據(jù)庫雖然支持?jǐn)?shù)據(jù)復(fù)制,主從熱備等機(jī)制,但是很難做到大規(guī)模集群的可伸縮性,因此關(guān)系數(shù)據(jù)庫的集群伸縮性方案必須在數(shù)據(jù)庫之外實現(xiàn),通過路由分區(qū)等手段將部署有多個數(shù)據(jù)庫的服務(wù)器組成一個集群。
至于大部分 NoSQL 數(shù)據(jù)庫產(chǎn)品,由于其先天就是為海量數(shù)據(jù)而生,因此其對伸縮性的支持通常都非常好,可以做到在較少運維參與的情況下實現(xiàn)集群規(guī)模的線性伸縮。
  擴(kuò)展性
不同于其他架構(gòu)要素主要關(guān)注非功能性需求,網(wǎng)站的擴(kuò)展性架構(gòu)直接關(guān)注網(wǎng)站的功能需求。網(wǎng)站快速發(fā)展,功能不斷擴(kuò)展,如何設(shè)計網(wǎng)站的架構(gòu)使其能夠快速響應(yīng)需求變化,是網(wǎng)站可擴(kuò)展架構(gòu)主要的目的。
衡量網(wǎng)站架構(gòu)擴(kuò)展性好壞的主要標(biāo)準(zhǔn)就是在網(wǎng)站增加新的業(yè)務(wù)產(chǎn)品時,是否可以實現(xiàn)對現(xiàn)有產(chǎn)品透明無影響,不需要任何改動或者很少改動既有業(yè)務(wù)功能就可以上線新產(chǎn)品。不同產(chǎn)品之間是否很少耦合,一個產(chǎn)品改動對其他產(chǎn)品無影響,其他產(chǎn)品和功能不需要受牽連進(jìn)行改動。
網(wǎng)站可伸縮架構(gòu)的主要手段是事件驅(qū)動架構(gòu)和分布式服務(wù)。
事件驅(qū)動架構(gòu)在網(wǎng)站通常利用消息隊列實現(xiàn),將用戶請求和其他業(yè)務(wù)事件構(gòu)造成消息發(fā)布到消息隊列,消息的處理者作為消費者從消息隊列中獲取消息進(jìn)行處理。通過這種方式將消息產(chǎn)生和消息處理分離開來,可以透明地增加新的消息生產(chǎn)者任務(wù)或者新的消息消費者任務(wù)。
分布式服務(wù)則是將業(yè)務(wù)和可復(fù)用服務(wù)分離開來,通過分布式服務(wù)框架調(diào)用。新增產(chǎn)品可以通過調(diào)用可復(fù)用的服務(wù)實現(xiàn)自身的業(yè)務(wù)邏輯,而對現(xiàn)有產(chǎn)品沒有任何影響。可復(fù)用服務(wù)升級變更的時候,也可以通過提供多版本服務(wù)對應(yīng)用實現(xiàn)透明升級,不需要強(qiáng)制應(yīng)用同步變更。
大型網(wǎng)站為了保持市場地位,還會吸引第三方開發(fā)者,調(diào)用網(wǎng)站服務(wù),使用網(wǎng)站數(shù)據(jù)開發(fā)周邊產(chǎn)品,擴(kuò)展網(wǎng)站業(yè)務(wù)。第三方開發(fā)者使用網(wǎng)站服務(wù)的主要途徑是大型網(wǎng)站提供的開放平臺接口。
  安全性
互聯(lián)網(wǎng)是開放的,任何人在任何地方都可以訪問網(wǎng)站。網(wǎng)站的安全架構(gòu)就是保護(hù)網(wǎng)站不受惡意訪問和攻擊,保護(hù)網(wǎng)站的重要數(shù)據(jù)不被竊取。衡量網(wǎng)站安全架構(gòu)的標(biāo)準(zhǔn)就是針對現(xiàn)存和潛在的各種攻擊與竊密手,是否有可靠的應(yīng)對策略。
  經(jīng)驗小結(jié)
性能、可用性、伸縮性、擴(kuò)展性和安全性是網(wǎng)站架構(gòu)最核心的幾個要素,這幾個問題解決了,大型網(wǎng)站架構(gòu)設(shè)計的大部分挑戰(zhàn)也就克服了。
本文節(jié)選自李智慧老師《大型網(wǎng)站技術(shù)架構(gòu):核心原理與架構(gòu)分析》一書。
 
CONTACT / 聯(lián)系方式
瑞安市優(yōu)博科技有限公司
RUIAN YOUBO TECHUOLOGY CO.,LTD.
地址:中國·浙江省瑞安市塘下鎮(zhèn)鮑田建城南路114號
電話:0577-65382333   25652222
傳真:0577-65388088   25885200
網(wǎng)址:www.youboy.net
中文網(wǎng)址:www.優(yōu)博科技.com
E-mail:info#youboy.net (請把#改成@)
您可以直接撥打我們的全國統(tǒng)一服務(wù)熱線
或者掃描右邊的二維碼添加優(yōu)博科技的微信號。
400 666 1789
? 2008-2025 Ruian Youbo Technology Co., Ltd.  All Rights Reserved.