解決高併發的幾種策略

在semaphore信號量很是適合高併發訪問,在新系統上線以前要對系統訪問量進行評估,這個訪問量時根據推廣力度、以往經驗、歷史數據及用戶量等預估出的合理值,若是太大,就會形成資源浪費,若是過小在高峯期會直接壓垮系統 相關概念java

  • pv : page View 網站的訪問總量,頁面的點擊量或瀏覽量,用戶每點擊或刷新一次就會被記錄一次
  • UV : Unique view 一天中00:00-24:00以內相同ip的用戶只記錄一次
  • QPS query pre second 每秒查詢數,qps很大程度上表明瞭網站的繁忙度,每次請求可能伴隨着屢次磁盤I/O,屢次網絡請求,多個CPU時間片等。經過qps能夠直觀瞭解當前系統狀況,當超過所設定的預警閾值,能夠考慮增長服務器對集羣擴容,避免宕機。能夠結合前期的壓力測試獲得估值,再結合後期綜合運維狀況,估算出閾值。
  • RT reponse time 請求響應時間,這個指標很是關鍵,直接說明了用戶體驗
  1. 網絡層面
  2. 服務層面 服務層面包括Nginx負載均衡,服務拆分等
  3. java代碼層面

實例化semaphore時指定數量,每一個線程執行時調用semaphore的acqure()方法,執行結尾處調用semaphore的replace()方法,可以鎖定線程執行最大數量 使用java代碼作限流不是很常見,通常用redis,記錄用戶訪問一樣一個url次數,對這個次數作限制,若是超過某個值,則暫停訪問此url一段時間。redis有expried,數據能夠設置過時時間,例如設置過時時間60秒,每過60秒就清零redis

秒殺系統實現思路 獨立的一個系統,不參與任何一個集成。不論秒殺是否成功,都不影響總體功能。服務器

相關文章
相關標籤/搜索