前言
我們以Java Web為例,來搭建一個簡單的電商系統(tǒng),看看這個系統(tǒng)可以如何一步步演變 。
該系統(tǒng)具備的功能:
- 用戶模塊:用戶注冊和管理
- 商品模塊:商品展示和管理
- 交易模塊:創(chuàng)建交易和管理
階段一、單機構(gòu)建網(wǎng)站
網(wǎng)站的初期,我們經(jīng)常會在單機上跑我們所有的程序和軟件 。此時我們使用一個容器,如Tomcat、Jetty、Jboss,然后直接使用JSP/Servlet技術(shù),或者使用一些開源的框架如Maven + Spring + Struts + Hibernate、Maven + Spring + Spring MVC + Mybatis 。最后再選擇一個數(shù)據(jù)庫管理系統(tǒng)來存儲數(shù)據(jù),如MySQL、SqlServer、Oracle,然后通過JDBC進行數(shù)據(jù)庫的連接和操作 。
把以上的所有軟件包括數(shù)據(jù)庫、應(yīng)用程序都裝載同一臺機器上,應(yīng)用跑起來了,也算是一個小系統(tǒng)了 。此時系統(tǒng)結(jié)果如下:
階段二、應(yīng)用服務(wù)器與數(shù)據(jù)庫分離
隨著網(wǎng)站的上線,訪問量逐步上升,服務(wù)器的負(fù)載慢慢提高,在服務(wù)器還沒有超載的時候,我們應(yīng)該就要做好準(zhǔn)備,提升網(wǎng)站的負(fù)載能力 。假如我們代碼層面已難以優(yōu)化,在不提高單臺機器的性能的情況下,采用增加機器是一個不錯的方式,不僅可以有效地提高系統(tǒng)的負(fù)載能力,而且性價比高 。
增加的機器用來做什么呢?此時我們可以把數(shù)據(jù)庫服務(wù)器和Web服務(wù)器拆分開來,這樣不僅提高了單臺機器的負(fù)載能力,也提高了容災(zāi)能力 。
階段三、應(yīng)用服務(wù)器集群
隨著訪問量繼續(xù)增加,單臺應(yīng)用服務(wù)器已經(jīng)無法滿足需求了 。在假設(shè)數(shù)據(jù)庫服務(wù)器沒有壓力的情況下,我們可以把應(yīng)用服務(wù)器從一臺變成了兩臺甚至多臺,把用戶的請求分散到不同的服務(wù)器中,從而提高負(fù)載能力 。而多臺應(yīng)用服務(wù)器之間沒有直接的交互,他們都是依賴數(shù)據(jù)庫各自對外提供服務(wù) 。著名的做故障切換的軟件有KeepAlived,KeepAlived是一個類似于Layer3、4、7交換機制的軟件,他不是某個具體軟件故障切換的專屬品,而是可以適用于各種軟件的一款產(chǎn)品 。KeepAlived配合上ipvsadm又可以做負(fù)載均衡,可謂是神器 。
系統(tǒng)演變到這里,將會出現(xiàn)下面四個問題:
- 用戶的請求由誰來轉(zhuǎn)發(fā)到到具體的應(yīng)用服務(wù)器?
- 有那些轉(zhuǎn)發(fā)的算法和策略可以使用?
- 應(yīng)用服務(wù)器如何返回用戶的請求?
- 用戶如果每次訪問到的服務(wù)器不一樣,那么如何維護session的一致性?
1、負(fù)載均衡的問題
一般以下有5種解決方案:
1、HTTP重定向
HTTP重定向就是應(yīng)用層的請求轉(zhuǎn)發(fā) 。用戶的請求其實已經(jīng)到了HTTP重定向負(fù)載均衡服務(wù)器,服務(wù)器根據(jù)算法要求用戶重定向,用戶收到重定向請求后,再次請求真正的集群
- 優(yōu)點:簡單易用;
- 缺點:性能較差 。
DNS域名解析負(fù)載均衡就是在用戶請求DNS服務(wù)器,獲取域名對應(yīng)的IP地址時,DNS服務(wù)器直接給出負(fù)載均衡后的服務(wù)器IP 。
- 優(yōu)點:交給DNS,不用我們?nèi)ゾS護負(fù)載均衡服務(wù)器;
- 缺點:當(dāng)一個應(yīng)用服務(wù)器掛了,不能及時通知DNS,而且DNS負(fù)載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法做更多的改善和更強大的管理 。
在用戶的請求到達反向代理服務(wù)器時(已經(jīng)到達網(wǎng)站機房),由反向代理服務(wù)器根據(jù)算法轉(zhuǎn)發(fā)到具體的服務(wù)器 。常用的Apache,Nginx都可以充當(dāng)反向代理服務(wù)器 。
- 優(yōu)點:部署簡單;
- 缺點:代理服務(wù)器可能成為性能的瓶頸,特別是一次上傳大文件 。
推薦閱讀
- 淺析網(wǎng)站域名空間的2個知識點 網(wǎng)站域名空間是什么
- 整理營銷推廣必備的網(wǎng)站工具大全 網(wǎng)絡(luò)推廣工具有哪些
- 關(guān)于企業(yè)網(wǎng)站要做SEO的原因分析 什么是企業(yè)網(wǎng)站seo
- 提升網(wǎng)站打開速度的5個方法 怎樣提升網(wǎng)站打開速度
- 網(wǎng)站推廣的幾大技巧 如何進行網(wǎng)站推廣
- 免費網(wǎng)站制作的4個功能 如何免費網(wǎng)站制作
- 淺析網(wǎng)站收錄的簡介 如何讓網(wǎng)站收錄
- 分享19個做網(wǎng)站的網(wǎng)站程序 網(wǎng)站程序有哪些
- 分享免費的SEO針對資源 seo網(wǎng)站如何診斷
- 做好網(wǎng)站數(shù)據(jù)分析的幾個方法 怎樣做好網(wǎng)站數(shù)據(jù)分析
