高併發主要是因爲網站PV訪問量大,單臺服務器涌承載大量訪問所帶來的壓力,因此會採用多臺服務器進行分流,採用服務器集羣技術,對於每一個訪問會被髮送到哪臺服務器,咱們採起負載均衡策略,常見的技術有LVS,因爲網站中有大量的靜態頁面,因此採用緩存服務器和反向代理技術,包括HAPROXY,REDIS,數據庫能夠採用數據庫集羣,進行讀寫分離,緩解數據庫壓力。php
大型站點高併發架構就是利用負載均衡技術、反向代理技術、數據庫集羣、web服務器集羣、Nosql技術等,以實現單臺數據器不能達到的併發量,換句話說就是用一羣屌絲代替一個高富帥。html
1.大型站點高併發架構是爲了解決百萬千萬級PV帶來的性能瓶頸。
2.出現高併發架構的緣由是大型網站發如今巨量pv下買更多更好的服務器已經沒法簡單的解決問題,只能從架構 上想辦法來,充分發揮設備的效能。
3. 高可用解決方案(corosync,pacemaker,KeepAlived)負載均衡(LVS)緩存服務(Varnish)反向代理(haproxy)web服務器(Apache,Nginx,Tomcat)站點架構(Lamp,Lnmp)前端
大型站點高併發架構。首先,什麼是大型站點,大型站點至少有兩個特色(1)訪問量大,淘寶的每日PV有幾十億(2)後臺服務器多,淘寶後臺服務器聽說有十多萬臺。而後,大型網站的高併發架構,個人理解就是爲了支持這麼大的併發訪問量,讓衆多的服務器硬件、操做系統、應用軟件協同工做的技術架構。
高併發架構出現的主要緣由,是網站併發訪問量,遠遠超過了單臺PC服務器、單臺小型機的處理能力。爲了讓多個同時到達的用戶請求都能獲得快速響應,同時下降成本,目前是用多臺相對廉價的服務器組成大規模集羣,這就須要高併發架構來支持。
高併發架構主要用到負載均衡、反向代理、分佈式緩存等技術,有大量的開源產品可供使用。包括LVS、varnish、haproxy等。mysql
大型站點高併發架構就是利用負載均衡技術、反向代理技術、數據庫集羣、web服務器集羣、Nosql技術等linux
高併發架構經過使用負載均衡,緩存之類的技術,實現active-active, 或者active-standby的架構。
實現大型web站點高併發: web層可使用LVS實現負載均衡;數據庫層可使用mysql讀寫分離,redis;另外可使用CDN網站加速nginx
技術能夠經過負載均衡技術LVS,haproxy,web集羣技術如nginx 反向代理tomcat集羣或者apache集羣,緩存技術如Varnish,memache,redis,mongodb,數據庫集羣如mysql的AB複製,經過開源的mysql中間件如Atlas,cobar,TDDL實現數據庫的讀寫分離等等。web
1:從用戶瀏覽器端可能就已經使用了瀏覽器的緩存功能,設置了cache-expired的時間,讓重複訪問的內容儘快的被訪問到。
2,在用戶發起請求後,通過DNS的分發的時候,可能使用了DNS的負載均衡或者DNS的策略分發。
3,請求通過分發後,首先會達到CDN。
4,CDN若是有就返回給用戶,若是沒有,則請求源站點。
5,源站點可能用到的技術有LVS, HAPROX,NGINX,VARNISH,TOMCAT等,緩存層可能會用到memcached,redis,mongodb,數據庫層面可能會用到主從 ,主主,MHA等,或者讀寫分離等。redis
另外,我想請問老師,若是老闆問你,我想抗住併發100W用戶的訪問。須要多少硬件資源。
評估的來源是否是:
首先得測試下:單臺服務器能夠抗住多少應用。而後單臺的TPS*N=100W
那用什麼工具來測試呢?loadrun仍是Jmeter.測試服務器自己也達不到100W的TCP鏈接數吧。sql
大型站點高併發網站架構的模型和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 ,分佈式文件系統等等都會有所涉及。mongodb
可以承受大併發用戶訪問的架構;隨着用戶數的增多,對原先的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站點高併發架構通常都採用以下的技術: 一、大量使用緩存技術改善站點的性能,提供用戶體驗;對應的技術點有redis、memcached等 二、應用服務器集羣提升網站的高併發處理能力;對應的技術點有apache、nginx、haproxy等 三、數據庫進行讀寫分離;對應的技術點有MySQL讀寫分離/高可用,NOSQL等 四、使用反向代理和CDN加速網站響應;對應的技術點有suqid、CDN等 五、根據業務須要,使用分佈式文件系統和分佈式數據庫系統;對應的技術點有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
一、海量用戶訪問,如12306等
二、海量用戶數據存儲,如 google等
涉及到的技術:
負載均衡、持久化存儲(mysql、nosql)消息中間件 CDN 分佈式緩存,分佈式文件 搜索引擎 離線計算等
高可用解決方案(corosync,pacemaker,KeepAlived)負載均衡(LVS)緩存服務(Varnish)反向代理(haproxy)web服務器(Apache,Nginx,Tomcat)站點架構(Lamp,Lnmp)以及如今所使用的分佈式架構和NOSQL的架構整合在一塊兒去知足所需。
高併發架構主要運用了:擴展技術(垂直擴展和水平擴展)、冗餘、負載均衡、緩存技術、HTML靜態化、圖片服務器分離、鏡像技術。
優化大型web站點高併發架構的手段包括負載均衡、緩存、反向代理、CDN加速、讀寫分離、系統解耦、消息異步、NoSQL數據庫等多方面