本篇內(nèi)容介紹了“Web技術(shù)整體架構(gòu)是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供義馬網(wǎng)站建設(shè)、義馬做網(wǎng)站、義馬網(wǎng)站設(shè)計、義馬網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、義馬企業(yè)網(wǎng)站模板建站服務(wù),10余年義馬做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
開始的開始,就是各種框架一搭,然后扔到Tomcat容器中跑就是了,這時候我們的文件、數(shù)據(jù)庫、應(yīng)用都在一個服務(wù)器上。
服務(wù)分離
隨著系統(tǒng)的的上線,用戶量也會逐步上升,很明顯一臺服務(wù)器已經(jīng)滿足不了系統(tǒng)的負(fù)載,這時我們就要在服務(wù)器還沒有超載時,提前做好準(zhǔn)備。
由于我們是單體架構(gòu),優(yōu)化架構(gòu)在短時間內(nèi)是不現(xiàn)實的,增加機器是一個不錯的選擇。這時,我們可能要把應(yīng)用和數(shù)據(jù)庫服務(wù)單獨部署,如果有條件也可以把文件服務(wù)器單獨部署。
反向代理
為了提升服務(wù)處理能力,我們在Tomcat容器前加一個代理服務(wù)器,我一般使用Nginx,當(dāng)然你如果更熟悉Apache也未嘗不可。
用戶的請求發(fā)送給反向代理,然后反向代理把請求轉(zhuǎn)發(fā)到后端的服務(wù)器。
嚴(yán)格意義上來說,Nginx是屬于Web服務(wù)器,一般處理靜態(tài)HTML、CSS、JS請求,而Tomcat屬于Web容器,專門處理JSP請求,當(dāng)然Tomcat也是支持html的,只是效果沒Nginx好而已。
反向代理的優(yōu)勢,如下:
動靜分離
基于以上Nginx反向代理,我們還可以實現(xiàn)動靜分離,靜態(tài)請求如HTML、CSS、JS等請求交給Nginx處理,動態(tài)請求分發(fā)給后端Tomcat處理。
Nginx 升級到1.9.5+可以開啟HTTP/2.0時代,加速網(wǎng)站訪問。
當(dāng)然,如果公司不差錢,cdn也是一個不錯的選擇。
服務(wù)拆分
在這分布式微服務(wù)已經(jīng)普遍流行的年代,其實我們沒必要踩過多的坑,就很容易進行拆分。市面上已經(jīng)有相對比較成熟的技術(shù),比如阿里開源的Dubbo(官方明確表示已經(jīng)開始維護了),Spring家族的Spring Cloud,當(dāng)然具體如何去實施,無論是技術(shù)還是業(yè)務(wù)方面都要有很好的把控。
Dubbo
SpringCloud
微服務(wù)與輕量級通信
持續(xù)集成部署
服務(wù)拆分以后,隨著而來的就是持續(xù)集成部署,你可能會用到以下工具:Docker、Jenkins、Git、Maven。
圖片源于網(wǎng)絡(luò),基本拓?fù)浣Y(jié)構(gòu)如下所示:
整個持續(xù)集成平臺架構(gòu)演進到如下圖所示:
Web技術(shù)整體架構(gòu)
Web技術(shù)整體架構(gòu)
服務(wù)集群
Linux集群主要分成三大類( 高可用集群, 負(fù)載均衡集群,科學(xué)計算集群)。其實,我們最常見的也是生產(chǎn)中最常接觸到的就是負(fù)載均衡集群。
負(fù)載均衡實現(xiàn)
分布式session
大家都知道,服務(wù)一般分為有狀態(tài)和無狀態(tài),而分布式sessoion就是針對有狀態(tài)的服務(wù)。
分布式Session的幾種實現(xiàn)方式
分布式Session的幾種管理方式
Session Replication 方式管理 (即session復(fù)制)
Session Sticky 方式管理
緩存集中式管理
目前生產(chǎn)中使用到的
負(fù)載均衡策略
負(fù)載均衡策略的優(yōu)劣及其實現(xiàn)的難易程度有兩個關(guān)鍵因素:負(fù)載均衡算法,對網(wǎng)絡(luò)系統(tǒng)狀況的檢測方式和能力。
1、rr 輪詢調(diào)度算法。顧名思義,輪詢分發(fā)請求。
優(yōu)點:實現(xiàn)簡單
缺點:不考慮每臺服務(wù)器的處理能力
2、wrr 加權(quán)調(diào)度算法。我們給每個服務(wù)器設(shè)置權(quán)值weight,負(fù)載均衡調(diào)度器根據(jù)權(quán)值調(diào)度服務(wù)器,服務(wù)器被調(diào)用的次數(shù)跟權(quán)值成正比。
優(yōu)點:考慮了服務(wù)器處理能力的不同
3、sh 原地址散列:提取用戶IP,根據(jù)散列函數(shù)得出一個key,再根據(jù)靜態(tài)映射表,查處對應(yīng)的value,即目標(biāo)服務(wù)器IP。過目標(biāo)機器超負(fù)荷,則返回空。
4、dh 目標(biāo)地址散列:同上,只是現(xiàn)在提取的是目標(biāo)地址的IP來做哈希。
優(yōu)點:以上兩種算法的都能實現(xiàn)同一個用戶訪問同一個服務(wù)器。
5、lc 最少連接。優(yōu)先把請求轉(zhuǎn)發(fā)給連接數(shù)少的服務(wù)器。
優(yōu)點:使得集群中各個服務(wù)器的負(fù)載更加均勻。
6、wlc 加權(quán)最少連接。在lc的基礎(chǔ)上,為每臺服務(wù)器加上權(quán)值。算法為:(活動連接數(shù)*256+非活動連接數(shù))÷權(quán)重 ,計算出來的值小的服務(wù)器優(yōu)先被選擇。
優(yōu)點:可以根據(jù)服務(wù)器的能力分配請求。
7、sed 最短期望延遲。其實sed跟wlc類似,區(qū)別是不考慮非活動連接數(shù)。算法為:(活動連接數(shù)+1)*256÷權(quán)重,同樣計算出來的值小的服務(wù)器優(yōu)先被選擇。
8、nq 永不排隊。改進的sed算法。我們想一下什么情況下才能“永不排隊”,那就是服務(wù)器的連接數(shù)為0的時候,那么假如有服務(wù)器連接數(shù)為0,均衡器直接把請求轉(zhuǎn)發(fā)給它,無需經(jīng)過sed的計算。
9、LBLC 基于局部性的最少連接。均衡器根據(jù)請求的目的IP地址,找出該IP地址最近被使用的服務(wù)器,把請求轉(zhuǎn)發(fā)之,若該服務(wù)器超載,最采用最少連接數(shù)算法。
10、LBLCR 帶復(fù)制的基于局部性的最少連接。均衡器根據(jù)請求的目的IP地址,找出該IP地址最近使用的“服務(wù)器組”,注意,并不是具體某個服務(wù)器,然后采用最少連接數(shù)從該組中挑出具體的某臺服務(wù)器出來,把請求轉(zhuǎn)發(fā)之。若該服務(wù)器超載,那么根據(jù)最少連接數(shù)算法,在集群的非本服務(wù)器組的服務(wù)器中,找出一臺服務(wù)器出來,加入本服務(wù)器組,然后把請求轉(zhuǎn)發(fā)之。
讀寫分離
MySQL主從配置,讀寫分離并引入中間件,開源的MyCat,阿里的DRDS都是不錯的選擇。
如果是對高可用要求比較高,但是又沒有相應(yīng)的技術(shù)保障,建議使用阿里云的RDS或者redis相關(guān)數(shù)據(jù)庫,省事省力又省錢。
全文檢索
如果有搜索業(yè)務(wù)需求,引入solr或者elasticsearch也是一個不錯的選擇,不要什么都塞進關(guān)系型數(shù)據(jù)庫。
緩存優(yōu)化
引入緩存無非是為了減輕后端數(shù)據(jù)庫服務(wù)的壓力,防止其"罷工"。
常見的緩存服務(wù)有,Ehcache、OsCache、MemCache、Redis,當(dāng)然這些都是主流經(jīng)得起考驗的緩存技術(shù)實現(xiàn),特別是Redis已大規(guī)模運用于分布式集群服務(wù)中,并證明了自己優(yōu)越的性能。
消息隊列
異步通知:比如短信驗證,郵件驗證這些非實時反饋性的邏輯操作。
流量削鋒:應(yīng)該是消息隊列中的常用場景,一般在秒殺或團搶活動中使用廣泛。
日志處理:系統(tǒng)中日志是必不可少的,但是如何去處理高并發(fā)下的日志確是一個技術(shù)活,一不小心可能會壓垮整個服務(wù)。工作中我們常用到的開源日志ELK,為嘛中間會加一個Kafka或者redis就是這么一個道理(一群人涌入和排隊進的區(qū)別)。
消息通訊:點對點通信(個人對個人)或發(fā)布訂閱模式(聊天室)。
日志服務(wù)
消息隊列中提到的ELK開源日志組間對于中小型創(chuàng)業(yè)供公司是一個不錯的選擇。
Web技術(shù)整體架構(gòu)
安全優(yōu)化
以上種種,沒有安全做保證可能都會歸于零。
架構(gòu)裝逼必備詞匯
高可用
高并發(fā)
分布式事務(wù)
隊列
擴容
網(wǎng)絡(luò)安全
架構(gòu)裝逼必備工具
操作系統(tǒng)
Linux(必備)、某軟的
負(fù)載均衡
DNS、F5、LVS、Nginx、OpenResty、HAproxy、負(fù)載均衡SLB(阿里云)
分布式框架
Dubbo、Motan、Spring-Could
數(shù)據(jù)庫中間件
DRDS (阿里云)、Mycat、360 Atlas、Cobar (不維護了)
消息隊列
RabbitMQ、ZeroMQ、Redis、ActiveMQ、Kafka
注冊中心
Zookeeper、Redis
緩存
Redis、Oscache、Memcache、Ehcache
集成部署
Docker、Jenkins、Git、Maven
存儲
OSS、NFS、FastDFS、MogileFS
數(shù)據(jù)庫
MySql、Redis、MongoDB、PostgreSQL、Memcache、HBase
網(wǎng)絡(luò)
專用網(wǎng)絡(luò)VPC、彈性公網(wǎng)IP、CDN
“Web技術(shù)整體架構(gòu)是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!