大型站點高併發架構技術 高併發: 高併發主要是由於網站PV訪問量大,單台伺服器涌承載大量訪問所帶來的壓力,所以會採用多台伺服器進行分流,採用伺服器集群技術,對於每個訪問會被髮送到哪台伺服器,我們採取負載均衡策略,常見的技術有LVS,由於網站中有大量的靜態頁面,所以採用緩存伺服器和反向代理技術,包括H ...
大型站點高併發架構技術
高併發:
高併發主要是由於網站PV訪問量大,單台伺服器涌承載大量訪問所帶來的壓力,所以會採用多台伺服器進行分流,採用伺服器集群技術,對於每個訪問會被髮送到哪台伺服器,我們採取負載均衡策略,常見的技術有LVS,由於網站中有大量的靜態頁面,所以採用緩存伺服器和反向代理技術,包括HAPROXY,REDIS,資料庫可以採用資料庫集群,進行讀寫分離,緩解資料庫壓力。
大型站點高併發架構就是利用負載均衡技術、反向代理技術、資料庫集群、web伺服器集群、Nosql技術等,以實現單台數據器不能達到的併發量,換句話說就是用一群屌絲代替一個高富帥。
1.大型站點高併發架構是為瞭解決百萬千萬級PV帶來的性能瓶頸。
2.出現高併發架構的原因是大型網站發現在巨量pv下買更多更好的伺服器已經無法簡單的解決問題,只能從架構 上想辦法來,充分發揮設備的效能。
3. 高可用解決方案(corosync,pacemaker,KeepAlived)負載均衡(LVS)緩存服務(Varnish)反向代理(haproxy)web伺服器(Apache,Nginx,Tomcat)站點架構(Lamp,Lnmp)
什麼是大型站點
大型站點高併發架構。首先,什麼是大型站點,大型站點至少有兩個特點(1)訪問量大,淘寶的每日PV有幾十億(2)後臺伺服器多,淘寶後臺伺服器據說有十多萬台。然後,大型網站的高併發架構,我的理解就是為了支持這麼大的併發訪問量,讓眾多的伺服器硬體、操作系統、應用軟體協同工作的技術架構。
高併發架構出現的主要原因,是網站併發訪問量,遠遠超過了單台PC伺服器、單台小型機的處理能力。為了讓多個同時到達的用戶請求都能得到快速響應,同時降低成本,目前是用多台相對廉價的伺服器組成大規模集群,這就需要高併發架構來支持。
高併發架構主要用到負載均衡、反向代理、分散式緩存等技術,有大量的開源產品可供使用。包括LVS、varnish、haproxy等。
大型站點高併發架構就是利用負載均衡技術、反向代理技術、資料庫集群、web伺服器集群、Nosql技術等
高併發架構通過使用負載均衡,緩存之類的技術,實現active-active, 或者active-standby的架構。
實現大型web站點高併發: web層可以使用LVS實現負載均衡;資料庫層可以使用mysql讀寫分離,redis;另外可以使用CDN網站加速
技術可以通過負載均衡技術LVS,haproxy,web集群技術如nginx 反向代理tomcat集群或者apache集群,緩存技術如Varnish,memache,redis,mongodb,資料庫集群如mysql的AB複製,通過開源的mysql中間件如Atlas,cobar,TDDL實現資料庫的讀寫分離等等。
1:從用戶瀏覽器端可能就已經使用了瀏覽器的緩存功能,設置了cache-expired的時間,讓重覆訪問的內容儘快的被訪問到。
2,在用戶發起請求後,經過DNS的分發的時候,可能使用了DNS的負載均衡或者DNS的策略分發。
3,請求經過分發後,首先會達到CDN。
4,CDN如果有就返回給用戶,如果沒有,則請求源站點。
5,源站點可能用到的技術有LVS, HAPROX,NGINX,VARNISH,TOMCAT等,緩存層可能會用到memcached,redis,mongodb,資料庫層面可能會用到主從 ,主主,MHA等,或者讀寫分離等。
另外,我想請問老師,如果老闆問你,我想抗住併發100W用戶的訪問。需要多少硬體資源。
評估的來源是不是:
首先得測試下:單台伺服器可以抗住多少應用。然後單台的TPS*N=100W
那用什麼工具來測試呢?loadrun還是Jmeter.測試伺服器本身也達不到100W的TCP連接數吧。
大型站點高併發網站架構的模型和OSI七層模型是一樣的,都是分層的架構。
而這種高併發的站點架構都是隨著公司的業務規模不斷增長,對我們的技術人員提出了更為高標準的要求;在某個程度上來說。可以說是公司業務規模的發展早就了這種大型站點的架構。比如淘寶,騰訊等等。
現在來說淘寶的單天的日誌數據量已經達到TB級別,甚至是更多了;更不要說是獨立的ip,pv以及DB數據量了哦。
網站架構也由最初的LAMP。也就是nginx作為流量的入口,交給後面的php和MySQL交互處理網站事務;後來隨著業務的增長,首先是從前端的流量入口開始拆分,可能是使用了lvs做四層的流量轉發,到後端的web入口,此時web前端還有可能增加了類似varnish之類的web緩存,然後到資料庫的緩存等等;甚至是TFS這種分散式的文件系統等等。可以說是在每個可以拆分的點上面又按照業務甚至頁面進行了獨立的拆分。
這就是典型的大型網站架構的水平拆分,由單台---多台----單一的文件系統和資料庫,一步一步演變為每個業務都是有上千台的獨立伺服器做支撐。
上面說到負載均衡器作為整個流量的入口,那麼,如果此時的負載均衡器壞掉了怎麼辦呢?這時,高可用的概念就出來了。高可用一般是master|slave的架構,作為流量的入口對他們進行檢測,以lvs或者nginx為例,這些都是可以作為負載均衡或者反向代理的軟體,那麼如果其中一臺掛了怎麼辦呢?此時整個用戶的訪問就會中斷了,也就是拒絕服務了;那麼此時如果有類似keepalived之類的高可用軟體就可以很好的解決整個問題。當keepavived檢測到對方的keepalived掛了之後,就直接接管了,從而不間斷對用戶的服務。
所謂的大型架構無非就是:負載均衡+高可用+緩存(DB 緩存以及WEB緩存),當然了還有隊列,以及NoSQL ,分散式文件系統等等都會有所涉及。
能夠承受大併發用戶訪問的架構;隨著用戶數的增多,對原先的LAMP架構逐步調整,比如將apache換成能夠承受更高併發的nginx;並且增加一層webcache,比如squid等;於此同時,增加資料庫的cache,如memcache,redis等;並且對資料庫進行優化,對資料庫進行水平分割或者換成nosql的資料庫來提高併發性能.
技術包括負載均衡、緩存、鏡像、圖片伺服器分離、資料庫集群和庫表散列等。
負載均衡LVS、緩存服務Varnish、反向代理HAproxy等技術來分流,保證網站的正常運行,以實現大型網站的高併發架構。此外,還會通過Corosync+Pacemaker、Keepalived等高可用技術來保證大型網站的運行。
對於負載均衡,有硬體的負載均衡和軟體的負載均衡。
硬體負載均衡效率高,但是價格貴,比如F5等。
軟體負載均衡系統價格較低或者免費,效率較硬體負載均衡系統低,不過對於流量一般或稍大些網站來講也足夠使用,比如lvs。
高併發架構包括幾個層次:
1.可以高可用的負載均衡器(可用lvs),
2.緩存伺服器(varnish),
3.反向代理伺服器(haproxy)
4.可能會需要各種不同的web伺服器(apache, tomcat, ....)
高併發架構需要有以下的功能:
1) 可以承載高併發的伺服器軟體,包括Apache,nginx,Tomcat。以及用來動態請求的應用伺服器,例如PHP伺服器,JavaEE伺服器。
2) 要有負載均衡的功能。我個人目前所維護的系統使用硬體來做負載均衡,軟體方面的話可以用LVS實現。
3) 要有處理高併發請求的能力。使用緩存服務varnish,和haproxy技術。
4) 要有HA功能,保證集群中的任何一臺或幾台伺服器出問題不至於影響到整個系統的運作。會使用到如下的技術:
corosync+pacemaker, KeepAlived
集群加上其它技術,就出現了高併發架構,現在的技術各種各樣,可謂八仙過海,各顯神通,有mysql+heartbeat+DRBD+LVS,nginx+php+mysql+memcache+mongodb,Node.js越來越熱,hadoop及其子項目雖然成熟,但spark,storm越來越流利
高併發的架構用到的知識點包括:負責均衡策略,CDN策略,反向代理技術,LVS,緩存伺服器,資料庫的讀寫分離技術,分散式資料庫技術等等技術
負載均衡系統、反向代理系統、Web伺服器系統、分散式存儲系統、底層服務系統、資料庫系統
對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰
HTML靜態化效率最高、消耗最小的就是純靜態化的html頁面,所以我們儘可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的mod_proxy緩存模塊,也可以使用外加的Squid進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
負載均衡將是大型網站解決高負荷訪問和大量併發請求採用的終極解決辦法。
大型Web站點高併發架構一般都採用如下的技術: 1、大量使用緩存技術改善站點的性能,提供用戶體驗;對應的技術點有redis、memcached等 2、應用伺服器集群提高網站的高併發處理能力;對應的技術點有apache、nginx、haproxy等 3、資料庫進行讀寫分離;對應的技術點有MySQL讀寫分離/高可用,NOSQL等 4、使用反向代理和CDN加速網站響應;對應的技術點有suqid、CDN等 5、根據業務需要,使用分散式文件系統和分散式資料庫系統;對應的技術點有hadoop等
整個系統的架構可以是LVS+VANISH緩存+HAPROXY+Apache/Ngnix。負載均衡還涉及到CDN,DNS等等方面的問題。
大型站點高併發架構主要利用了以下一些技術:
資料庫,使用讀寫分離,分庫分表解決大量的讀寫請求。
伺服器,使用負載均衡(4層lvs,7層nginx,apache等做反向代理)保證多台機器能夠提供服務
緩存,使用squild等做反向代理
一.大型站點高併發架構:
1.1 滿足高併發用戶請求&滿足節點負載均衡高可用
1.2 功能變數名稱智能解析、資源按區域多節點cdn推送
1.3 後端高併發高可用型資料庫讀寫處理能力
二.為什麼會出現高併發架構
2.1 滿足高密集、高速的互聯網發展時代,必須出現高併發架構
三.主要運用了哪些技術等對大型web站點高併發架構
3.1 高可用負載均衡技術&cdn及各種cache網路推送技術
3.2 提供加速處理能力的中間件
3.3 讀寫性能交優異的硬體及軟優化調試資源
3.4 高性能讀寫的nosql處理能力
3.5 多節點web、DB服務池
3.6 良好的代碼執行率 & 大型防火牆
上次看資料時看到應該從分層的角度去看
前端架構
瀏覽器優化技術(緩存,壓縮,合併減少請求)
CDN
靜態資源獨立部署
反向代理
DNS
應用層架構
併發結構
負載均衡
session管理
動態轉靜態(訪問多,變化少)
業務拆分
服務層架構
分散式服務
分散式消息
分散式緩存
分散式配置
存儲層架構
分散式文件系統
關係資料庫分庫
NOSQL
數據同步
後臺架構
搜索引擎
數據倉庫
推薦系統
數據採集與監控
瀏覽器數據採集
伺服器(業務,性能)數據採集
系統監控
系統報警
安全架構
WEB攻擊
數據保護
高併發架構使用的技術包括:負載均衡(LVS、F5設備、Haproxy、Nginx),高速緩存服務(Varnish)、,反向代理(squid)等技術來實現訪問分流,多設備實現高可用技術(corosync+pacemker,KeepAlived等),資料庫也採用反向代理、Memcache等技術實現快速查詢。
1.我們常用的系統架構有三種,第一種是linux+Apache+PHP+MySQL、第二種是Linux+Apache+Java(WebSphere)+Oracle、第三種是Windows Server+IIS+C#/ASP.NET+資料庫
2. 大型網站一般都使用緩存伺服器群,並使用多層緩存。最常用的有Squid、memcahe、e-Accelerator
常見的高併發架構技術:
LAMP、LNMP
負載均衡系統 LVS
反向代理系統:Haproxy
緩存伺服器:Varnish
Web伺服器集群:Apache、Nginx、Tomcat
高併發架構主要是為瞭解決等待而且出現的,比如在淘寶上如果找一個商品要等上10分鐘,我想就沒有人會在淘寶上買東西了,再比如偉大的12306,是不是讓人抓狂呢?所以高併發架構一定是業務出現瓶頸了,才想辦法解決瓶頸出現的各種方案的彙總。
3.重要的高併發技術
1.負載均衡技術:為瞭解決伺服器集群的高可用及負載,平均分配資源,以減少服務的延時。常用的硬體解決方案如F5;軟體解決方案如LVS(工作在4層和7層),Haproxy,Nginx(工作在7層)以及zookeeper等。
2.CDN技術,這是為瞭解決靜態頁面及圖片緩存的,提高訪問效率
3.緩存技術
4.資料庫級的高併發技術,如分庫、分表,高可用集群等。
消息中間件,分散式緩存,分散式資料庫,再加上負載均衡器(包括簡單的HTTP/TCP的,也包括其它的像MyCAT這種資料庫的)。這些都是實現高併發架構的重要組成部分。
高併發有三個瓶頸:
傳輸層,大量用戶發出請求後,會對網路帶寬和web伺服器的I/O造成瓶頸;
計算層,將會造成業務伺服器的瓶頸;
存儲層,會導致資料庫和存儲的瓶頸。
大型併發架構就是利用負載均衡,緩存,分散式集群等技術,把訪問量分散到不同的機器上處理
主要運用了哪些技術等對大型web站點高併發架構進行論述:
--web伺服器:apache、nagix、tomcat
--lamp、lnmp
--負載均衡技術:lvs
--緩存伺服器:varnish
--緩存代理:haproxy
--高併發:haproxy
--高可用:corosync+pacemaker 、KeepAlived
1、海量用戶訪問,如12306等
2、海量用戶數據存儲,如 google等
涉及到的技術:
負載均衡、持久化存儲(mysql、nosql)消息中間件 CDN 分散式緩存,分散式文件 搜索引擎 離線計算等
高可用解決方案(corosync,pacemaker,KeepAlived)負載均衡(LVS)緩存服務(Varnish)反向代理(haproxy)web伺服器(Apache,Nginx,Tomcat)站點架構(Lamp,Lnmp)以及現在所使用的分散式架構和NOSQL的架構整合在一起去滿足所需。
高併發架構主要運用了:擴展技術(垂直擴展和水平擴展)、冗餘、負載均衡、緩存技術、HTML靜態化、圖片伺服器分離、鏡像技術。
優化大型web站點高併發架構的手段包括負載均衡、緩存、反向代理、CDN加速、讀寫分離、系統解耦、消息非同步、NoSQL資料庫等多方面
轉自:http://f.dataguru.cn/thread-513146-1-1.html