一個Web應用(比如網站)是如何部署在多個web伺服器上的?
01-08
個人開發的小網站都是跑在單機的Apache HTTP Server或者Tomcat上的,而大中型網站(比如淘寶,知乎)都有很多台web伺服器,我很疑惑的是代碼應該就只有一份吧,那是怎麼部署到多台伺服器上的呢?還有就是域名也就只有一個,那域名解析怎麼對應到伺服器集群里的多台機器上呢? 請專業人士指點一二,謝謝!
==========補充============就比如下面這樣的簡單架構,網站的代碼在每一台web server上面都有一份拷貝嗎?DNS解析域名的時候一個域名能夠對應多台web server的ip地址?
嗯,聽我慢慢道來。1.首先域名並非直接解析到一個IP上,你可以百度下DNSPOD,就會明白,域名可以根據地域不通解析到不同的伺服器IP上。
2.非常多的集群並不是你直接可以訪問到的,你所訪問到的只是前面一台入口伺服器。這台伺服器負責轉發請求。它可以根據目前後端幾台專業伺服器的運行狀態,將當前你所訪問的用戶的請求轉發到一個比較健康的伺服器上面去。這方面的軟體有很多,比如Nginx,還有淘寶的Tengine,還有個專業叫LVS。
3.在後端的伺服器上每台都放上我們的代碼,然後坐等前面的入口轉發給我們請求。如果接到請求,我們就進行響應,然後返回給入口,入口再返回給用戶,最終呈現在你面前。4.另外,用戶上傳的圖片之類的動態文件,要麼就專門放在文件伺服器上,一般需要獨立的域名,如http://img1.xxx.com等等,要麼就使用Rsync進行實時同步。簡單的介紹下淘寶的。
開發發布流程
1. 開發機、項目環境都是一台機器,進行開發。
2. 開發完成之後,發布上線,會有發布機器將代碼拉出來,然後分批發布(部署的時候需要把機器關掉,由其他機器繼續提供服務)。同步到每一台伺服器。(持續集成)用戶訪問時
會有專門的伺服器進行流量控制和分配,將該用戶的請求轉移到某一台伺服器上面,由該伺服器提供服務。(負載均衡)說明你對網站架構連入門都沒有呢
其實我也沒有實踐過,只是通過看書知道的。@李智慧老師出的那本書挺好的介紹了這種問題,他也在知乎上推廣他的書,可以買本看看哦
還有《淘寶技術這十年》也是一本講網站架構的書,寫的蠻輕鬆的,可以一起看看目前我所知道的情況是這樣的,你這裡大概是有兩個問題:1、代碼是怎麼拷貝到多個伺服器的
其實這個是有很多同步工具可以實現的,比如RSync實現文件備份同步,rsync,remote synchronize顧名思意就知道它是一款實現遠程同步功能的軟體,它在同步文件的同時,可以保持原來文件的許可權、時間、軟硬鏈接等附加信息。只需要在各個伺服器上安裝配置,代碼文件上傳到某台預發布伺服器,然後同步出去就可以了,很方便。
2、如何實現一個域名多台伺服器其實域名還是對應一台獨立ip的伺服器,但是可以做負載均衡分發處理。這裡提到負載均衡,屬於一種架構,通俗講,就是你一個頁面請求,先到A伺服器上,然後A伺服器通過處理,會轉發給對應的C、D、E等伺服器處理請求。這樣做的目的就是可以分擔伺服器壓力。就是這樣,回答的不好,不知道能懂不正在學習相關內容
貌似沒人回答?
推薦閱讀: