客戶端異步、服務端異步與並發事務處理數、連接數的關系【重點】


如果想不過來,可以想1條連接的並發數、連接數

 

 

  服務端同步 服務端異步
客戶端同步

服務端無論同步異步,效果是一樣的

想象一下1條連接的情況下,服務端同一時刻只有1個req被客戶端發送到並處理

1條連接在處理完並寫回前,永遠不會收到第2個req

tcp(netty)的調用同步化(異步阻塞)及與http協議、瀏覽器關系 客戶端同步的經典案例

線程池的取值(二)設計吞吐量【重點】 客戶端強制同步模擬壓測並發數

 同 同步

https://www.jianshu.com/p/890525ff73cb 開發了一個純異步的redis客戶端

客戶端異步

並發數==連接數

服務端1條連接,同一時刻只有1個事務被處理,

連接處理阻塞在處理事務而不會去讀第二個req

netty 是否要開啟業務線程池

並發數>連接數

服務端1條連接,由於異步,可能處理多於1個的req,

甚至有可能第2個req先於第1個req處理完並寫回客戶端

netty 是否要開啟業務線程池

 

用廁所坑位來舉例

比如有4個小房間4個坑位,門就是連接通道

起初,門口阿姨一個一個放人進去,出來一個進去一個,這就是客戶端同步,並發數最多==門(連接)數==4

過了一段時間,門口阿姨阿爾茨海默了,人沒出來就放進去了,但每個房間只有一個坑,放進去的人就站在門口等,此時同時處理事務數仍然==坑位(連接)數==4;這種搞法有個問題,總有一天門被擠爆了,對於netty而言netty 是否要開啟業務線程池),要么tcp接收緩沖區窗口擠滿,要么接收區直接內存爆掉;對於異步投遞線程池,線程池的取值(二)設計吞吐量【重點】 組合設計qps【重點】 ,即是任務隊列爆掉

又過了一段時間,發現小房間里面有個小門,尼瑪還有個暗格,里面有個大房間可以隨時隨地,小房間只起一個通道的作用,大房間的人(並發)數遠大於坑位(連接)數4

 

 

 

netty爆掉:

因為netty的鏈路會自己讀內核,內核永遠可以接收數據,tcp內核緩沖區-netty堆外緩存-堆內-handler

1)handler處理慢的話,對外內存爆掉,如上述中間那幅圖

2)用業務線程,遲早如上述右邊圖

相關 :

netty設置socket用戶緩沖區

netty 是否要開啟業務線程池

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM