日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大型网站技术架构02 网站的高性能架构、网站的可用性架构

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大型网站技术架构02 网站的高性能架构、网站的可用性架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大型網站核心架構要素

1. 性能

2. 可用性

3. 伸縮性

4. 擴展性

5. 安全性

?

瞬時響應:網站的高性能架構

1. 網站性能測試:

? ? 1). 不同視角下的網站性能

? ? ? ? ?a. 用戶視角的網站性能:用戶計算機,網站服務器通信時間,網站服務器處理時間,用戶瀏覽器解析時間等。

? ? ? ? ?b. 開發人員視角的網站性能:

? ? ? ? ?c. 運維人員視角的網站性能:優化主干網,利用虛擬化技術優化資源利用等

? ? 2). 性能測試指標

? ? ? ? ? a. 響應時間:單個請求時間不好計算,可以通過重復執行一萬次,測試一萬次執行需要的總響應時間之和,然后除以一萬,得到單次請求的響應時間。

? ? ? ? ? b. 并發數:指系統同時處理請求的數目,這個數字也反映了系統的負載特性。測試程序通過多線程模擬并發用戶的辦法來測試系統的并發能力,為了模擬真實用戶行為,測試程序并不是啟動多線程然后不停

? ? ? ? ? ? ? ? ? ? ? ? ?地發送請求,而是在兩次之間加入一個隨機等待時間,這個時間被稱為思考時間

? ? ? ? ? c. 吞吐量:單位時間內系統處理的請求數量,體現系統的整體處理能力。

? ? ? ? ? d. 性能計數器:描述服務器或操作系統性能的一些數據指標。包括System Load、對象與線程數、內存使用、CPU使用、磁盤與網絡IO等指標。這些指標也是系統監控的重要參數,對這些指標設置報警閾值,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當監控系統發現性能計數器超過閾值時,就向運維和開發人員報警,及時發現處理系統異常。

? ? 3). 性能測試方法:

? ? ? ? ?a. 性能測試:以系統設計初期規劃的性能指標為預期目標,對系統不斷施加壓力,驗證系統在資源可接受范圍內,是否能達到系能逾期。

? ? ? ? ?b. 負載測試:對系統不斷地增加并發請求以增加系統壓力,直到系統的某項或多項性能指標達到安全臨界值,如某種資源已經呈飽和狀態,這時繼續對系統施加壓力,系統的處理能力不但不能提高,反而下降。

? ? ? ? ?c. 壓力測試:超過安全負載的情況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。

? ? ? ? ?e. 穩定性測試:被測試系統在特定硬件、軟件、網絡環境條件下,給系統加載一定業務壓力,是系統運行一段較長時間,以此檢測系統是否穩定。穩定性測試硬不均勻地對系統施加壓力。

? ? ? ? ?f. 通過測試得出:網站日常運行區間,系統的最大負載點,系統的崩潰點

? ? 4). 性能測試報告:應包括:并發數,響應時間,TPS(每秒事務數),錯誤率(%),Load,內存(GB),備注

? ? 5). 性能優化策略

? ? ? ? ?a. 性能分析:檢查請求處理的各個環節的日志,分析哪個環節響應時間不合理、超過預期;然后檢查監控數據,分析影響能力的主要因素是內存、磁盤、網絡、還是CPU,是代碼問題還是架構設計不合理,或

? ? ? ? ? ? ? ? ? ? ? ? ? ?系統資源不足。

? ? ? ? ?b. 性能優化

2. Web前端性能優化

? ? 1). 瀏覽器訪問優化:

? ? ? ? ?a. 減少http請求:合并CSS,合并JS將瀏覽器需要的JS,CSS合并成一個文件。圖片由多張合成一張。

? ? ? ? ?b. 使用瀏覽器緩存:緩存靜態資源。在某些時候,靜態資源變換需要及時應用到客戶端瀏覽器,可以通過修改文件名實現。靜態資源多的時候,考慮逐量更新。

? ? ? ? ?c. 啟用壓縮

? ? ? ? ?d. CSS放在頁面最上面、JavaScript放在頁面最下面:如果頁面解析時就需要用到JS,這時放在底部就不合適了。

? ? ? ? ?e. 減少Cookie傳輸

? ? 2). CDN加速:即內容分發網絡,部署在距離終端用戶最近的網絡服務商,用戶的網絡請求總是先到達他的網絡服務器商那里,在這里緩存網站的一些靜態資源(較少變化的數據)。可以就近以最快的速度返回給用戶,

? ? ? ? ? ? ? ? ? ? ? ? 如視頻網站和門戶網站會將用戶訪問量最大的熱點內容緩存在CDN。

? ? 3). 反向代理:反向帶來屬于網站前端架構的一部分,部署在網站的前端,當用戶請求到達網站的數據中心時,最先訪問到的就是反向代理服務器,這里緩存網站的靜態資源。無需將請求繼續轉發給應用服務器就能

? ? ? ? ? ? ? ? ? ? ? ?返回給用戶。來自互聯網的請求必須經過代理服務器,相當于在Web服務器和可能的網絡攻擊之間建立了一個屏障,起到保護作用。

3. 應用服務器性能優化:

? ? 1). 分布式緩存:網站性能優化的第一定律:優先考慮使用緩存優化性能。

? ? ? ? ?a. 緩存的基本原理:緩存指將數據存儲在相對較高訪問速度的存儲介質中,以供系統處理。一方面緩存訪問速度快,可以減少數據訪問時間,另一方面如果緩存的數據是經過計算處理得到的,那么被緩存的數據

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?無需重復計算即可直接使用,因此緩存還起到減少計算時間的作用

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?緩存的本質是一個內存Hash表,網站數據訪問通常遵循二八定律。

? ? ? ? ?b. 合理使用緩存:頻繁修改的數據(不適合),沒有熱點的訪問(不適合),數據不一致與臟讀(注意),緩存可用性(緩存崩潰后,數據庫直面訪問能否承受),緩存預熱(提前將緩存數據加載出來),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 緩存穿透(一個簡單的對應策略是敬愛給你不存在的數據也緩存起來(其值為null))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一般來說,數據的讀寫比在2:1以上,即寫入一次緩存,在數據更新前至少讀取兩次,緩存在有意義

? ? ? ? ?c. 分布式緩存架構:一種是以JBoss Cache為代表的需要更新同步的分布式緩存,一種是以Memcached為代表的不互相通信的分布式緩存。

? ? ? ? ?d. memcached : 簡單的通信協議,豐富的客戶端程序,高性能的網絡通信,高效的內存管理,互不通信的服務器集群架構

? ? 2). 異步操作:使用消息隊列將調用異步化,可改善網站的擴展性。事實上使用消息隊列還可改善網站系統的性能。消息隊列具有很好的削峰作用。

? ? ? ? ? ? ? ? ? ? ? ?注意,由于數據寫入消息隊列后立刻返回給用戶,數據在后續的業務校驗、寫數據庫等操作可能失敗,因此在使用消息隊列進行業務異步處理后,需要適當修改業務流程進行配合。如訂單提交后,訂單

? ? ? ? ? ? ? ? ? ? ? ?數據寫入消息隊列,不能立即返回用戶訂單提交成功。需要在消息隊列的訂單消費者進程真正處理完該訂單,甚至商品出庫后,再通過電子郵件或SMS消息通知用戶訂單成功,以免交易糾紛。

? ? ? ? ? ? ? ? ? ? ? ?任何可以晚點做的事情都應該晚點再做。

? ? 3). 使用集群

? ? 4). 代碼優化:

? ? ? ? ?a. 多線程:從資源利用的角度角度看,使用多線程的原因主要有兩個:IO阻塞與多CPU。啟用線程數 = [任務執行時間/(任務執行時間-IO等待時間)]*CPU內核數

? ? ? ? ? ? ? ? ? ? ? ? 解決線程安全主要手段有如下幾點:將對象設計成無狀態對象,使用局部變量,并發訪問資源時使用鎖。

? ? ? ? ?b. 資源復用:主要有兩種模式:單例(Singleton)和對象池(Object Pool)

? ? ? ? ?c. 數據結構:hash等

? ? ? ? ?d. 垃圾回收

4. 存儲性能優化:

? ? 1). 機械硬盤 ?VS ?固態硬盤

? ? 2). B+樹 ?VS LSM樹

? ? 3). RAID ?VS HDFS

? ? ? ? ?a. RAID(廉價磁盤冗余陣列)技術主要是為了改善磁盤的訪問延遲,增強磁盤的可用性和容錯能力。目前服務器級別的計算機都支持插入多塊磁盤(8塊或者更多),通過使用RAID技術,實現數據在多塊磁盤上的

? ? ? ? ? ? ?并發讀寫和數據備份。

? ? ? ? ? ? ?RAID0:根據磁盤數量將數據分成N分,同時并發寫入N塊磁盤,使得數據整體寫入速度是一塊磁盤的N倍。讀取時也一樣,但只要有一塊損壞,數據完整性就被破壞。

? ? ? ? ? ? ?RAID1:數據在寫入磁盤時,將一份數據同時寫入兩塊磁盤,這樣任何一塊磁盤損壞都不會導致數據丟失,插入一塊新磁盤就可以通過復制的方式自動修復,具有極高的可靠性。

? ? ? ? ? ? ?RAID10:結合RAID0和RAID1兩種方案,將所有磁盤平均分成兩份,數據同時在兩份磁盤寫入,相當于RAID1,但是在每一份磁盤里面的N/2塊磁盤上,利用RAID0技術并發訪問。既提高可靠性又改善性能,

? ? ? ? ? ? ? ? ? ? ? ? ? ?不過RAID10磁盤復用率較低。

? ? ? ? ? ? ?RAID3:分N塊,數據寫入N-1塊,校驗數據寫入到第N塊。

? ? ? ? ? ? ?RAID5:類似RAID3但校驗數據螺旋式地寫入所有磁盤中。避免磁盤頻繁修改被寫壞。

? ? ? ? ? ? ?RAID6:數據寫入N-2塊,并螺旋式地在兩塊磁盤中寫入校驗信息。

? ? ? ? ?b. 在HDFS(Hadoop 分布式文件系統)中,系統在整個存儲集群的多臺服務器上進行數據并發讀寫和備份,可以看作在服務器集群規模上實現類似RAID的功能,因此不需要磁盤RAID。

? ? ? ? ? ? ?HDFS以塊(Block)為單位管理文件內容,一個文件被分割成若干個Block,當應用程序寫文件時,每寫完一個Block,HDFS就將其復制到另外兩臺機器上,保證每個Block有三個副本,及時有兩臺服務器宕機,數據

? ? ? ? ? ? ?依然可以被訪問,相當于RAID1的數據復制功能。

? ? ? ? ? ? ?對文件進行處理計算時,通過MapReduce并發計算任務框架,可以啟動多個計算子任務,同時讀取文件的多個Block,并發處理,相當于實現RAID0的并發訪問。

5. 網站性能對用戶而言是一種主觀感受,性能優化的最終目的是改善用戶的體驗,是他們感覺網站很快。離開這個目的,追求技術上的所謂高性能,是舍本逐末,

? ? 沒有多大意義。而用戶體驗的快或慢,可以通過技術手段改善,也可以通過優化交互體驗改善。

?

萬無一失:網站的可用性架構

1. 網站可用性的度量與考核:

? ? 1). 網站可用性度量:網站不可用也被稱作網站故障,業界通常用多少個9來衡量網站的可用性。

? ? 2). 網站可用性考核:

2. 高可用的網站架構:網站高可用性架構設計的主要目的就是保證服務器硬件故障時服務依然可用、數據依然保存并能夠被訪問。實現高可用性的主要手段是數據和服務的冗余備份以及失效轉移。磁盤損壞,則從備份的磁盤讀取數據。

3. 高可用的應用:

? ? 1). 通過負載均衡進行無狀態服務的失效轉移:對于應用服務器集群,實現這種服務可用狀態實時監測自動轉移失敗任務的機制是負載均衡。負載均衡服務器通過心跳監測機制判斷服務器是否可用。

? ? 2). 應用服務器集群的Session管理:集群環境下,Session管理主要有以下幾種手段:

? ? ? ? ?a. Session復制:大型網站不適合

? ? ? ? ?b. Session綁定:可以利用負載均衡在源地址Hash算法實現,負載均衡服務器總是將來源于同一IP的請求分發到同一臺服務器上。但這種方式不符合對系統高可用性的要求,因為一旦服務器宕機,Session就不存在了。很少被采用。

? ? ? ? ?c. 利用Cookie記錄Session:將Session記錄在客戶端,每次請求服務器的時候,經Session放在請求中發送給服務器,服務器處理完請求后再修改Session響應客戶端。缺點:受cookie大小限制,影響性能,若瀏覽器關閉cookie,

? ? ? ? ? ? 無法使用等。

? ? ? ? ?d. Session服務器:利用獨立部署的Session服務器(集群)統一管理Session應用服務器每次讀寫Session時,都訪問Session服務器。

? ? ? ? ? ? ?這種解決方案事實上是將應用服務器的狀態分離,分為無狀態的應用服務器和有狀態的Session服務器,然后針對這兩種服務器的不同特性分別設計其架構。

? ? ? ? ? ? ?對于有狀態的Session服務器,一種比較簡單的方法是利用分布式緩存、數據庫等,在這些產品的基礎上進行包裝,使其符合Session的存儲和訪問要求。如果業務場景對Session管理有比較高的要求,比如利用Session服務集成

? ? ? ? ? ? ?單點登錄(SSO)、用戶服務等功能,則需要開發專門的Session服務管理平臺。

4. 高可用的服務:可復用的服務模塊為業務產品提供基礎公共服務,大型網站中這些服務通常都獨立分布式部署,被具體應用遠程調用。可復用的服務和應用一樣,也是無狀態的服務,因此可以使用類似負載均衡的失效轉義策略實現

? ? 高可用服務。除此之外,具體實踐中,還有以下幾點高可用的服務策略:

? ? 1). 分級管理:運維上將服務器進行分級管理,核心應用和服務優先使用更好的硬件,運維響應速度上也格外迅速。同時在服務部署上也進行必要的隔離,避免故障的連鎖反應。低優先級的服務通過啟動不同的線程或者部署在不同的

? ? ? ? ?虛擬機上,核心服務和數據甚至要部署在不同的地址數據中心。

? ? 2). 超時設置:由于服務宕機、線程死鎖等原因,可能導致應用程序對服務端的調用失去響應,進而導致用戶請求長時間得不到響應,同時還占用應用程序資源,不利于及時將請求轉移到正常的服務器上。

? ? ? ? ?在應用程序中設置服務調用超時時間,一旦超時,通信框架就拋出異常,應用程序根據服務調度策略,可選擇繼續重試或者將請求轉移到提供相同服務的其他服務器上。

? ? 3). 異步調用:應用對服務的調用通過消息隊列等異步方式完成。當然并不是所有服務調用都可以異步調用,對于獲取用戶信息這類調用,采用異步方式會延長響應時間,得不償失。對于那些必須確認服務器調用成功才能進行下一步

? ? ? ? ?的操作也不適合異步調用。

? ? 4). 服務降級:在網站訪問高峰期,為了保證核心應用和功能的正常運行,需要對服務進行降級。降級有兩種手段:拒絕服務及關閉服務。

? ? ? ? ?拒絕服務:拒絕低優先級應用的調用,減少服務調用并發數,確保核心應用正常使用;或者隨機拒絕部分請求調用,節省資源,讓另一部分請求得以成功,避免要死大家一起死的慘劇。

? ? ? ? ?關閉功能:關閉部分不重要的服務,或者服務內部關閉部分不重要的功能,以節省系統開銷,為重要的服務和功能讓出資源。

? ? 5). 冪等性設計保證服務重復調用的和調用一次產生的結果相同,即服務具有冪等性。

5. 高可用的數據:保證數據存儲高可用的手段主要是數據備份和失效轉移機制。數據備份是保證數據有多個副本,任意副本的失效都不會導致數據的永久丟失,從而實現數據完全的持久化。而失效轉移機制則保證當前一個數據副本不可

? ? 訪問時,可以快速切換訪問數據的其他副本,保證系統可用。

? ? 緩存服務的高可用性:擴大緩存服務器集群規模的一個簡單手段就是整個網站共享一個分布式緩存集群,單獨的應用和產品不再部署自己的緩存服務器,只需要向共享緩存集群申請資源即可。

? ? 1). CAP原理:CAP原理認為,一個提供數據服務的存儲系統無法同時滿足數據一致性(Consistency)、數據可用性(Availibility)、分區耐受性(Partition Tolerance,系統具有跨網絡分區的伸縮性)這三個條件。

? ? ? ? ?高可用的數據有如下幾層含義:數據持久性,數據可訪問性,數據一致性

? ? ? ? ?大型網站中,通常會選擇強化分布式存儲系統的可用性(A)和伸縮性(P),而在某種程度上放棄一致性。具體來說,數據一致性有分為如下幾點:

? ? ? ? ?數據強一致:各個副本的數據在物理存儲中總是一致的

? ? ? ? ?數據用戶一致:各個副本可能不一致,但返回給用戶的通過糾錯機制等,返回給用戶一個正確的數據。

? ? ? ? ?數據最終一致:經過一段時間以后,數據最終會達到一致

? ? 2). 數據備份:

? ? ? ? ?冷備份:優點是簡單和廉價,成本和技術難度都比較低。缺點是不能保證數據最終一致性。同時由于數據落后,也不能保證數據可用性。

? ? ? ? ?熱備份:異步熱備份和同步熱備份

? ? ? ? ?a. 異步熱備份:指多份數據副本的寫入操作異步完成,即應用程序收到數據服系統的寫操作成功響應時,只寫成功一份,存儲系統會異步地寫入其他副本。

? ? ? ? ?b. 同步熱備份:指多份數據副本的寫入操作同步完成,即應用程序收到數據服務系統寫入成功響應時,多份數據都已經寫操作成功。

? ? 3). 失效轉移:

? ? ? ? ?a. 失效確認:兩種方式,心跳檢測和應用程序訪問失敗報告。對于應用程序的訪問失敗報告,控制中心還需要在一次發送心跳檢測進行確認。

? ? ? ? ?b. 訪問轉移:確認某臺存儲服務器宕機后,需要將數據讀寫訪問重新路由到其他服務器上。

? ? ? ? ?c. 數據恢復:必須將副本的數目恢復到系統設定值,防止再有服務器宕機。從健康的服務器復制數據,將數據副本數目恢復到設定值。

6. 高可用網站的軟件質量保證:

? ? 1). 網站發布:通常通過發布腳本來完成發布。發布過程中,每次關閉的服務器都是集群中的一小部分,并在發布完成后立即可以訪問,因此整個發布過程不影響用戶使用。

? ? 2). 自動化測試:自動化測試工具可以一鍵完成系統部署,測試數據生成、測試執行、測試報告生成等全部測試過程?

? ? 3). 預發布驗證:沙箱測試,與真實線上環境盡量保持一致。

? ? 4). 代碼控制:

? ? ? ? ? a. 主干開發,分支發布:代碼修改都在主干上進行,需要發布的時候,從主干拉一個分支發布,該分支即成為一個發布版本,如果該版本有bug,繼續在分支上修改發布,將修改合并(merge)回主干,直到下次主干發布。

? ? ? ? ? b. 分支開發,主干發布:任何修改都不能在主干上直接運行,需要開發一份新功能或者修復一個bug時,從主干拉一份分支進行開發,開發完成且通過測試后,合并回主干,然后從主干進行發布,主干上的代碼永遠是最新

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 發布的版本。

? ? ? ? ? 這兩種方式各有優缺點。主干開發,分支發布,主干代碼反應目前整個應用的狀態,一目了然,便于管理和控制,也利于持續集成。分支開發,主干發布方式,各個分支獨立進行,互不干擾,可以使不同發布周期的開發

? ? ? ? ? 在同一應用中進行。

? ? 5). 自動化發布:人干預越少,自動化程度越高,引入故障的可能性就越小,火車準點到達,大家按時下班的可能性就越大。

? ? 6). 灰度發布:應用發布成功后,仍然可能會發現因為軟件問題而引入的故障,這時候就需要做發布回滾,即卸載剛剛發布的軟件,將上一個版本恢復。為應對這種局面,大型網站會使用灰度發布模式,將集群服務器分若干部分,

? ? ? ? ? 每天只發布一部分。

? ? ? ? ? 灰度發布,也常用于用戶測試,即在部分服務器上發布新版本,然后監控用戶操作行為,收集用戶體驗報告。比較用戶對兩種版本的滿意度,以確定最終發布的版本。這種手段稱為AB測試。

7. 網站運行監控:不允許沒有監控的系統上線。

? ? 1). 監控數據采集

? ? ? ? ?a. 用戶行為日志收集:用戶行為日志指用戶在瀏覽器上所做的所有操作以及所在的操作系統環境,包括:用戶操作系統與瀏覽器版本,IP地址、頁面訪問路徑、頁面停留時間等。這些數據對統計網站的PV/UV指標、分析用戶行為、

? ? ? ? ? ? ?優化網站設計、個性化營銷與推薦等非常重要。

? ? ? ? ? ? ?用戶行為日志收集手段有兩種:

? ? ? ? ? ? ?a1. 服務器端日志收集

? ? ? ? ? ? ?a2. 客戶端瀏覽器日志收集:利用頁面嵌入JS腳本收集用戶真實的操作行為,因此比服務器日志收集更加準確。缺點是比較麻煩。

? ? ? ? ? ? ?此外,大型網站的用戶日志數量驚人,數據存儲和計算壓力大,目前許多網絡逐步開發基于實時計算框架Storm的日志統計與分析工具。

? ? ? ? ?b. 服務器性能監控:收集服務器性能指標,如系統Load、內存占用、磁盤IO、網絡IO等盡早作出故障預警,及時判斷應用狀況,防患于未然,將故障扼殺在萌芽時期非常重要。

? ? ? ? ? ? ?目前網站使用比較廣泛的開源性能監控工具是Ganglia,它支持大規模服務器集群,并支持以圖形的方式在瀏覽器展示實時性能曲線

?? ? ? ? c.?運行數據報告:網站還需要監控一些與具體業務場景相關的技術與業務指標,比如緩沖命中率、平均響應延遲時間、每分鐘發送郵件數目、待處理的任務總數等。

? ? 2). 監控管理:監控數據采集后,除了用作系統性能評估集群規模伸縮性預測等,還可以根據實時監控數據進行風險預警,并對服務器進行失效轉移自動負載調整,最大化利用集群所有機器的資源。

? ? ? ? ??a. 系統報警:監控管理系統可以配置報警閾值和制售人員的聯系方式,報警方式除了郵件,即時通信工具,還可以配置手機短信,語音報警,系統報警時,工程師即使在千里之外,夜里睡覺也能被及時通知,迅速響應。

? ? ? ? ??b. 失效轉移除了應用程序訪問失敗時進行失效轉移,監控系統還可以在發現故障的情況下主動通知應用,進行失效轉移

? ? ? ? ??c. 自動優雅降級:優雅降級是指網站為了應付突然爆發的訪問高峰,主動關閉部分功能,釋放部分系統資源,保證網站核心功能正常訪問的一個手段。

?

轉載于:https://www.cnblogs.com/Jtianlin/p/5136297.html

總結

以上是生活随笔為你收集整理的大型网站技术架构02 网站的高性能架构、网站的可用性架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。