qps多少才算高并發
首先是無狀態前端機器不足以承載請求流量,需要進行水平擴展,一般QPS是千級, 然后是關系型資料庫無法承載讀取或寫入峰值,需要資料庫橫向擴展或引入nosql,一般是千到萬級, 之后是單機nosql無法承載,需要nosql橫向擴展,一般是十萬到百萬QPS, 最后是難以單純橫向擴展nosql,比如微博就引入多級快取架構,這種架構一般可以應對百萬到千萬對nosql的訪問QPS, 當然面向用戶的介面請求一般到不了這個量級,QPS遞增大多是由于讀放大造成的壓力,單也屬于高并發架構考慮的范疇,
PV和QPS
比如微博每天1億多pv的系統一般也就1500QPS,5000QPS峰值,
比如有人說:
2C4G機器單機一般1000QPS,
8C8G機器單機可承受7000QPS,
php怎么處理高并發問題?
通俗來講,高并發是指在同一個時間點,有很多用戶同時的訪問同一 API 介面或者 Url 地址,它經常會發生在有大活躍用戶量,用戶高聚集的業務場景中,
處理高并發的業務邏輯是:
前端:異步請求+資源靜態化+cdn
后端:請求佇列+輪詢分發+負載均衡+共享快取
資料層:redis快取+資料分表+寫佇列
存盤:raid陣列+熱備
網路:dns輪詢+DDOS攻擊防護
php處理高并發問題的方法
1、應用和靜態資源分離
將靜態資源(js,css,圖片等)放到專門的服務器中,
2、頁面快取
將應用生成的頁面快取起來可以節省大量cpu資源,對于部分頁面經常變換資料的,可以使用ajax來處理,
3、集群和分布式
集群,多臺服務器具有相同的功能,主要起分流的作用,分布式,將不同的業務放到不同的服務器中,處理一個請求可能需要多臺服務器,進而提高一個請求的處理速度,又分為靜態資源集群和應用程式集群,后者較復雜,經常要考慮session同步等問題,
4、反向代理
客戶端直接訪問的服務器并不是直接提供服務的服務器,它從別的服務器獲取資源,然后將結果回傳給用戶,
代理服務器和反向代理服務器:
代理服務器是代我們訪獲取資源,然后將結果回傳,例如,訪問外網的代理服務器,反向代理服務器是我們正常訪問一臺服務器的時候,服務器自己呼叫了別的服務器,
代理服務器我們主動使用,是為我們服務的,不需要有自己的域名;反向代理是服務器自己使用的,我們并不知道,有自己的域名,
5、CDN
CDN是一種特殊的集群頁面緩沖服務器,和普通的集群的多臺頁面緩沖服務器相比主要區別是:其存放位置和分配請求方式不同,
CDN的服務器分布在全國各地,接收到請求后會將請求分配到最合適的CDN服務器節點來獲取資料,其每一個CDN節點就是一個頁面快取服務器,
分配方式:
并不是普通的負載均衡,而是專門的CDN域名決議服務器在決議域名的時候就分配好的,
一般的做法是:ISP那里使用CNAME將域名決議到一個特定的域名,然后再將決議到的那個域名用專門的CDN服務器決議(回傳給瀏覽器,再訪問)到相應的CDN節點,每個節點可能也集群了多臺服務器,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30833.html
標籤:PHP
上一篇:妖哥 能給我一個mmtools c++builer的版本嗎?
下一篇:給我大佬,求幫助
