微服務架構------如何解決高併發的問題

微服務架構中如何處理高併發問題
處理高併發的問題有3種方法:
1、異步
提高業務過程中可異步部分的佔比,提高異步部分的執行效率
2、緩存
將頻繁訪問的數據存儲在離業務處理邏輯更近的地方
3、池化
對於創建起來比較消耗資源的對象進行緩存

  • 異步
    按照異步操作出現的位置,分爲兩類:
    1)在JVM內部,使用異步線程池或異步回調機制
    異常線程池
    java中可以通過Executors和ThreadPoolExecutor的方式創建線程池.一般使用Executor提供的方法
    異步回調機制
    請求發起方不需要等待服務放的響應返回,可以先去做別的業務,接口請求返回後,會自動調用預先埋設的回調函數,進行後續的業務處理

2)在JVM外部,使用消息隊列,redis隊列等中間件

典型的應用是優惠券發放和電商秒殺系統,如下圖所示,只要消息隊列抗住了壓力,後面的訂單,物流,庫存系統就可以保持可用.
在這裏插入圖片描述

  • 緩存

在這裏插入圖片描述
讀數據:先讀緩存,再讀數據庫
寫數據:先操作數據庫,再使緩存失效

緩存穿透:如果key對應的value一定不存在,並且對該key併發請求量很大,就會對後端系統造成很大的壓力.
緩存雪崩:當緩存服務器重啓或大量緩存集中在某一個時間段失效,在失效的時候會給後端系統帶來很大壓力
熱點緩存熱點緩存,可以考慮加入本地緩存緩解此類問題.

更過高併發地文章,請關注公衆號:架構師Plus
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章