大型網站架構必知必會的幾個高防服務器知識
1、負載均衡服務器
負載均衡服務器主要作用是實現某些類型服務器的規模擴展。比如對于系統前端的web服務器和后端的數據庫服務器,想通過加服務器實現N+1橫向擴展,通過多臺服務器負載分擔壓力,負載均衡必不可少。
2、web服務器
最常見,內存要求不是很高但cpu要求較高,主要用于部署各種web應用,如帶界面的web頁面、不帶界面的web服務、wcf等等。
3、緩存服務器
大中型網站,分布式緩存已是標配,緩存服務器專門用于部署分布式緩存,一般而言對內存和帶寬要求較高。
4、消息隊列服務器
隊列是系統解耦利器,也是大中型分布式系統標配,沒有隊列,業務系統很容易高度耦合,系統吞吐量也會很快遭遇瓶頸。
5、文件服務器
分布式文件系統,專門用于存儲業務系統需要的各種文件如圖片、多媒體文件等。
6、索引服務器
用于網站全文索引,搜索必備。對內存和CPU要求較高,大型網站,通常還需要支持主從備份和容錯,甚至多實例索引集群。
7、搜索服務器
通常需要部署多臺,否則查詢多了性能撐不住,對內存要求不高。有的中小型站點,索引和搜索服務器在物理和邏輯上都是同一臺服務器。
8、作業服務器
主要用于后端應用程序大批量大數據量復雜業務邏輯的定時作業,大多數互聯網公司標配,某些企業的定時調度框架是直接部署在web服務器上的,可以減少這里的所謂作業服務器。
9、數據庫服務器
主要用于存儲和查詢數據。數據庫已是各種系統實際上的標配,內存和CPU都要求極高,網絡和硬件要求也不低。大中型網站還需要支持數據庫的主從備份和容錯,甚至多實例的數據庫集群。
通常,大中型的互聯網應用會經歷一個從單一的數據庫服務器,到Master/Slave主從服務器,再到垂直分區(分庫),然后再到水平分區(分表,sharding)的過程。而在這個過程中,Master/Slave以及分庫相對比較容易,對應用的影響也不是很大,但是分表會引起一些棘手的問題,比如不能跨越多個分區join查詢數據,如何實現DB負載等等,這個時候就需要一個通用的DAL框架來屏蔽底層數據存儲對業務邏輯的影響,使得底層數據的訪問對應用完全透明化。
10、nosql服務器
海量數據處理的興起,各種nosql產品層出不窮,nosql服務器主要用于處理海量數據,支持存儲、查詢、分片等。
web應用中,有兩個一直是不好實現橫向擴展或者由于歷史遺留問題實現代價非常大的東西,如你所知,就是:A、數據庫 B、網絡帶寬。
而某些nosql的出現很可能解決這個歷史遺留難題,現在已經有nosql產品彌補了關系型數據庫天生不支持橫向擴展的缺點,在特定場景下正在替代關系型數據庫。
11、其他
需求不斷變化和應用需要,某些互聯網企業還可能衍生出基于安全的授權/證書服務器,全局唯一的流水號服務器,會話服務器等等。