自適應流控方案

2021-08-14 22:21:42 字數 704 閱讀 2160

問題:在netty中引入業務執行緒池帶來的問題就是速率不匹配,如果io執行緒接受資料的速度超過業務執行緒的處理速度,就會出現緩衝佇列溢位,此時需要能夠對客戶端的傳送速率進行控制。

如下圖所示,提供了一種基於tcp flow-control機制的自適應流控方案。當緩衝區溢位時,服務端會按一定的規則選取出最消耗業務執行緒資源的客戶端,然後將客戶端對應連線的auoread屬性設定為false,過段時間再重新恢復,設為true。背後的原理就是利用了tcp的 flow-control機制,當auoread設為false時,selector不再監聽連線的讀事件,這樣很快tcp的接受緩衝區就會被填滿,進而客戶端接受到的ack中的視窗大小會逐漸變小,直至變成0,從而達到客戶端降低傳送資料速率的目的。

注意:連線的autoread不能長時間關閉。如果autoread被長期設為false,對端傳送fin的時候,接收端應用層是感知不到的。此時核心將這個socket的狀態變成close_wait,但是因為應用層感知不到,所以應用層一直沒有呼叫close,此時這個連線就會長期處於close_wait狀態。

查閱:

自適應方案

整理了各種用過的看過的自適應方案,列出了每乙個的優缺點,根據情況自行選擇 廢話不多說,直接開始啦!注意 各種容器和盒子能用內容撐開的就用內容撐開,有固定寬高的話使用rem單位,配合 查詢可以使容器大小根據頁面大小自適應。最後給最外層容器新增 margin 0 auto 達到頁面始終居中的效果。優點 ...

HTML 自適應方案

1.設定標籤頭 2.設定body html 全屏 3.避免使用px單位 盡量使用rem 百分比單位並在螢幕發生改變和初始化頁面的時候呼叫以下函式 function resizerem else 4.使用 media標籤做一套橫屏和豎屏的適配 media all and orientation por...

rem絕對自適應方案

這個單位代表根元素的 font size大小 例如元素的font size 使用這個單位可以建立完美的可擴充套件布局,只需根據頁面大小去修改html的font size,就能達到適配整個頁面的目的。那麼問題來了,如何使html的font size自適應呢?media的用法這裡就不贅述,簡單說明通過 ...