提升系統併發能力,總結起來有三點:異步,緩存,並行。redis
好比咱們在某段業務邏輯中加了一個同步寫kafka的操做,tp99瞬間多了30毫秒,這樣在整個監控曲線看起來很是扎眼,因而咱們須要將這個同步改爲異步。
對於老系統須要在業務進行梳理,若是業務場景中不關心返回值,這樣徹底能夠作成異步。
若是業務關心返回值,好比訂單邏輯,不少下游服務須要傳入本次主訂單ID與下游服務進行鏈接,這樣寫主訂單就必須變成了一個同步邏輯,可是主要關心的仍是這個OrderId,咱們能夠創建一個OrderId生成器,這樣單獨的一個OrderId服務性能更好,能夠將整個業務邏輯串起來。緩存
爲了提高整個邏輯鏈路的響應時間,咱們應該將數據離訪問更近,這樣響應更快。
有了緩存,咱們可能產生某種依賴,將盡量多的數據放入緩存,而沒有好好的進行梳理和分析。
這樣緩存數據可能愈來愈大,內存成本愈來愈高,當一段促銷形成的流量愈來愈大,若是沒有進行合理的擴容,則會形成想不到的問題。
好比咱們的營銷活動放到redis作緩存,每一個營銷活動實際上是有不少聚合信息,而且每一個活動有失效期的,這樣比較適合緩存場景的,可是某天產品同窗的運營策略變了,在雙11咱們須要提早作一些預熱,這樣用戶領取的優惠券的週期就變長了,若是簡單的是放到了redis,其實總體的活動信息在高峯來時,原有的redis容量就形成了必定的性能影響。併發
下游的服務咱們經過創建線程池,進行異步處理,因而咱們須要關心設置合理的線程池。
梳理系統的代碼,將不少同步的for,while的循環改爲基於Future的同步模型,提高總體並行度,達到必定的性能提高。異步