《軟件測試52講》
7、測試基礎架構篇——(39~42講)
測試人員的互聯網架構核心知識篇
48——大型網站架構設計
網站使用的緩存的方式一般分為兩種:
一種是,在應用服務器本地的緩存。其優點是訪問速度非常快,但是由於要和應用服務器共享內存資源,所以能夠提供的緩存空間非常有限。
另一種是,將緩存放在遠程專用的分布式緩存服務器集群上。其優點是,緩存容量不受限制,當需要更多緩存空間的時候,就可以在分布式緩存服務器集群加入更多的節點;其缺點是,由於要通過網絡調用來獲取緩存數據,所以訪問速度會比較慢。
負載均衡服務器(Load Balancer)
從各個國家和地區網絡差異這個點來考慮的話,我們可以引入內容分發網絡 CDN(CDNServers)和反向代理服務器(Reverse Proxy Servers)。
引入內容分發網絡CDN和反向代理服務器的網站結構
引入分布式文件系統和分布式數據庫系統的網站結構
基於分布式服務的網站結構
目前出現了更新的架構:服務網格
49——網站高性能架構設計
緩存主要用來存儲那些相對變化較少,並且遵從“二八原則”的數據。這里的“二八原則”指的是 80% 的數據訪問會集中在 20% 的數據上。
緩存技術並不適用於那些需要頻繁修改的數據。
分布式緩存架構的主流技術方案有兩種:
1、一種是,在企業級應用中廣泛采用的 JBoss Cache
2、另一種是,在互聯網應用的主流 Memcached。
50——網站高可用架構設計
造成網站不可用的主要原因有以下三大類:
1. 服務器硬件故障;
2. 發布新應用的過程;
3. 應用程序本身的問題。
影響網站高可用的因素歸為了三類,並相應地給出了解決這三類問題的方案:
1. 由服務器硬件故障引起的網站不可用,對應的解決方案是從硬件層面加入必要的冗余;
2. 由發布新應用的過程引入的網站不可用,對應的解決方案是采用灰度發布的技術手段;
3. 由應用本身質量引入的網站不可用,對應的解決方案是,一方面加強測試提高應用本身的質量,另一方面是引入預發布服務器消除測試環境和生產環境的差異。
51——網站可伸縮性架構設計
從整體架構的角度來看,應用服務器、緩存集群和數據庫服務器各自都有適合自己的可伸縮性設計策略:應用服務器主要通過集群來實現可伸縮性,緩存集群主要通過 Hash 一致性算法來實現,
數據庫可以通過業務分庫、讀寫分離、分布式數據庫以及 NoSQL 來實現可伸縮性。
52——網站可擴展性構設計
事件驅動架構與消息隊列
事件驅動架構最典型的一個應用就是操作系統中常見的生產者和消費者模式,將其應用到網站設計中就是分布式消息隊列。
分布式消息隊列同樣采用了生產者和消費者模式:
消息的發送者負責將消息發布到消息隊列中,也就是“生產者”;
另外,系統中會有一個或者多個消息接收者訂閱消息,訂閱目的是為了獲取消息並進行處理,這里的消息訂閱者其實就是“消費者”。消息接收者發現消息隊列中有新的消息后,就會立馬對其進行處理。