大型網站伺服器架構需要哪些伺服器?
大型網站伺服器架構需要哪些伺服器?
網路是生活在網際網路世界的我們形影不離的存在,新浪微博、今日頭條、搜狐新聞、騰訊視訊、微信、QQ等我們常常訪問的大型網站的網站伺服器架構需要哪些伺服器呢?
1、Web伺服器
Web伺服器主要是為訪客提供http訪問或是加密https訪問的伺服器,所接觸到的網頁就是直接從Web伺服器中傳送出來的,處於網站伺服器的最前端。在windows伺服器系統上常使用的是IIS,在unix和Linux伺服器系統上常使用的是Apache、Nginx
2、應用程式伺服器
應用程式伺服器是作為伺服器執行共享業務應用程式的底層的系統軟體伺服器,所訪問的app請求就是在應用伺服器中處理的。在應用程式伺服器上執行著各式的業務邏輯,主要是EJB、 JNDI和JMX API等J2EE API方面的,還包含事務處理、業務邏輯管理、資料庫連線等功能
3、資料庫伺服器
執行在區域網中的一臺或多臺計算機和資料庫管理系統軟體共同構成了資料庫伺服器,資料庫伺服器為客戶應用提供服務,這些服務是查詢、更新、事務管理、索引、快取記憶體、查詢優化、安全及多使用者存取控制等
4、代理伺服器
代理伺服器通常是客戶端訪問的一種行為。它雖然不屬於網站部署中的環境,但在整體的客戶端訪問中,它卻是一個重要環節的伺服器
5、反向代理伺服器
與代理伺服器相對,還有一個反向代理伺服器,其功能是Web伺服器的功能。但是從它這裡拿到的網頁不是最原始產生頁面的"產生地",而是由它從頁面的"產生地"取回頁面後的一個快取。代理伺服器中快取的內容通常是由某些使用者訪問某個頁面而產生訪問請求後,在客戶端代理伺服器上留下的快取;而反向代理伺服器上快取的頁面,不是由於某些使用者訪問某個頁面後留下的快取,卻是根據網站運維的策略定期、定時地生成一些後臺伺服器的頁面快取
代理伺服器與反向代理伺服器的區別:代理伺服器是工作在客戶端,反向代理伺服器時工作在伺服器端,Nginx伺服器常被用作於反向代理伺服器
6、 後臺伺服器
後臺伺服器只是一個說法而已,這是根據它的工作特點來說的,換句話說是沒有直接提供給客戶訪問。例如眾多的FastCGI伺服器,它們都工作在後臺,HTTP協議卻無法訪問到它們,另一種情況,如果我們從前是通過使用Apache作為Web伺服器提供HTTP訪問的,現在被Nginx反向代理了,是說由Nginx直接面對客戶訪問,而將請求再轉到Apache伺服器,那麼這裡的Apache伺服器已經成為後臺伺服器了
7、CDN快取伺服器
正如其名字,它是快取伺服器的角色,而且是反向代理的應用,在網站部署中,它算是一種部署策略,即對於遠距離訪問的解決方案,為了解決時間產生距離、時間縮短距離而產生的,它是反向代理的另一種應用
8、負載均衡伺服器
負載均衡伺服器主要作用是實現某些型別伺服器的規模擴充套件。比如對於系統前端的web伺服器和後端的資料庫伺服器,想通過加伺服器實現N+1橫向擴充套件,通過多臺伺服器負載分擔壓力,負載均衡必不可少
9、訊息佇列伺服器
佇列是系統解耦利器,也是大中型分散式系統標配,沒有佇列,業務系統很容易高度耦合,系統吞吐量也會很快遭遇瓶頸
10、檔案伺服器
分散式檔案系統,專門用於儲存業務系統需要的各種檔案如圖片、多媒體檔案等
11、索引伺服器
用於網站全文索引,搜尋必備。對記憶體和CPU要求較高,大型網站,通常還需要支援主從備份和容錯,甚至多例項索引叢集
12、搜尋伺服器
通常需要部署多臺,否則查詢多了效能撐不住,對記憶體要求不高。有的中小型站點,索引和搜尋伺服器在物理和邏輯上都是同一臺伺服器
13、作業伺服器
主要用於後端應用程式大批量大資料量複雜業務邏輯的定時作業,大多數網際網路公司標配,某些企業的定時排程框架是直接部署在web伺服器上的,可以減少這裡的所謂作業伺服器
14、nosql伺服器
海量資料處理的興起,各種nosql產品層出不窮,nosql伺服器主要用於處理海量資料,支援儲存、查詢、分片等
web應用中,有兩個一直是不好實現橫向擴充套件或者由於歷史遺留問題實現代價非常大的東西,如你所知,就是:A、資料庫 B、網路頻寬
而某些nosql的出現很可能解決這個歷史遺留難題,現在已經有nosql產品彌補了關係型資料庫天生不支援橫向擴充套件的缺點,在特定場景下正在替代關係型資料庫
15、其他
需求不斷變化和應用需要,某些網際網路企業還可能衍生出基於安全的授權/證書伺服器,全域性唯一的流水號伺服器,會話伺服器等等