一、單機(jī)結(jié)構(gòu):Web服務(wù)和App服務(wù)在一臺機(jī)器或者分開兩臺機(jī)器上
二、集群結(jié)構(gòu):Web&App服務(wù)用多臺機(jī)器負(fù)載分擔(dān),DB的瓶頸也可以采用分區(qū)、分庫、分表的方式來緩解。
負(fù)載均衡,目前主要是對TCP\IP協(xié)議的四層與七層進(jìn)行負(fù)載分發(fā),四層的有LVS、F5,七層Tengine、Nginx、Haproxy、Vanish、ATS、Squid等。目前多企業(yè)采用LVS+Tengine/Nginx。
三、分布式結(jié)構(gòu):系統(tǒng)分層、系統(tǒng)服務(wù)化(SOA架構(gòu)、微服務(wù)化等)、服務(wù)分布式、DB分布式、緩存分布式及良好的水平擴(kuò)展能力。
1、服務(wù)化:業(yè)務(wù)隔離,把系統(tǒng)中若干主要功能拆分成多個子項(xiàng)目,降低開發(fā)難度,更方便維護(hù)。使用不同的War包不同的服務(wù)器進(jìn)行發(fā)布,每個服務(wù)器完成特定的業(yè)務(wù)功能,這就是服務(wù)化。
2、DB分布式:Mariadb,Hash算法。
3、緩存:磁盤讀取數(shù)據(jù)慢,需要緩存。緩存的數(shù)據(jù)以讀為主。
4、良好的擴(kuò)展性:Dubbo高效分布式服務(wù)框架,使用dubbo框架開發(fā)的應(yīng)用可以通過注冊中心(zookeeper)注冊服務(wù),用戶請求通過注冊中心查找到服務(wù),然后發(fā)送請求到目的服務(wù)器,用戶不用關(guān)心是那臺服務(wù)器在處理。

1,DNS&CDN靜態(tài)加速
DNS:智能DNS,用戶請求進(jìn)入后,域名解析服務(wù)器智能判斷用戶請求的線路,如果是電信用戶就解析到電信IP,聯(lián)通用戶就解析到聯(lián)通IP。
CDN:多臺靜態(tài)資源服務(wù)器加智能DNS的結(jié)合體,CDN服務(wù)其實(shí)就是把靜態(tài)頁面緩存到不同地區(qū)很多臺專門的緩存服務(wù)器上,然后根據(jù)用戶線路所在的地區(qū)通過CDN服務(wù)商的智能DNS自動選擇一個最近的緩存服務(wù)器讓用戶訪問,以此提高速度。
2,負(fù)載均衡器
負(fù)載均衡器的作用是把用戶請求按一定規(guī)則分發(fā)到不同的服務(wù)器進(jìn)行處理,在使用負(fù)載均衡集群時,負(fù)載均衡是一件性能要求極高的事情,流行的產(chǎn)品有LVS、nginx、apache、F5等。
LVS:LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù),也就是能夠在TCP/IP的第四層請求分發(fā)。
Tengine:強(qiáng)大的高性能反向代理服務(wù)器,Tengine是由淘寶網(wǎng)發(fā)起的Web服務(wù)器項(xiàng)目,他在Nginx的基礎(chǔ)上針對大訪問量網(wǎng)站的需求,添加了很多高級功能和特性。
3,Web服務(wù)分布式集群
Web:Web服務(wù)層,按照MVC的設(shè)計理念Web服務(wù)層主要是進(jìn)行頁面渲染,Session保持等工作。這些應(yīng)用部署在Tomcat、Jetty、Jboss這些容器上。圖10-13所示為一個典型的Web結(jié)構(gòu),Client請求通過前端負(fù)載均衡器(比如LVS+Tengine)分發(fā)到Web層,Web層通過ZK(Zookeeper)注冊中心找到提供業(yè)務(wù)處理(App層中的某一個節(jié)點(diǎn))的節(jié)點(diǎn)。Web層請求傳送到App層的路由負(fù)載算法來實(shí)現(xiàn),通常叫軟路由,他能夠把請求按照一定規(guī)則分發(fā)到App層的各節(jié)點(diǎn)上,Dubbo框架中就內(nèi)置了這樣的軟路由。
Web層中的session信息由redis分布式集群實(shí)現(xiàn)。
Zookeeper:開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是hadoop和Hbase的重要組件,為分布式引用提供一致性服務(wù),比如配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。
4,App服務(wù)分布式集群
App:應(yīng)用服務(wù)層,實(shí)現(xiàn)主要的業(yè)務(wù)邏輯。Dubbo、Docker。
5,分布式緩存
Cache:緩存數(shù)據(jù)到內(nèi)存,解決熱點(diǎn)數(shù)據(jù)問題。比如redis,memcache等。
內(nèi)存中存儲數(shù)據(jù)問題包括數(shù)據(jù)的安全性和存儲量。解決安全性主要是數(shù)據(jù)持久化與數(shù)據(jù)冗余;解決存儲量主要是分而治之,分布式存儲,每一個存儲節(jié)點(diǎn)我們叫做分片。
Hash算法,redis,zookeeper。
6,分布式數(shù)據(jù)庫
目前廣泛使用的持久化工具有HDFS、HBase、Mariadb等。HDFS取自Hadoop中的分布式文件存儲;HBase也是Hadoop下的一個子項(xiàng)目,是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫;Mariadb是Mysql的開源版本。
Dubbo:阿里出品的分布式服務(wù)框架,眾多互聯(lián)網(wǎng)公司在使用。另外一個叫HFS。
Memcache:支持分布式的緩存產(chǎn)品,實(shí)際可以當(dāng)數(shù)據(jù)庫用。
Redis:支持分布式的緩存產(chǎn)品,實(shí)際可以當(dāng)數(shù)據(jù)庫用,眾多秒殺系統(tǒng)中經(jīng)常用到。
Mariadb:開源的分布式數(shù)據(jù)庫產(chǎn)品。