09_簡單 dispatcher 實現 RPC 調用全流程

  1. rpc 畫圖全流程
  2. 服務端 dispatch 封裝接口
  3. boss group 組綁定不同的端口
  4. 網卡接收數據的底層優化

1. RPC 流程圖

image-20210131183609976

2. 服務端綁定端口

第一種情況:一個 serverbootstrap 綁定一個端口

image-20210131184238238

第二種情況:一個 serverbootstrap 綁定多個端口:

image-20210131184410446

第三種情況:多個 serverbootstrap 綁定多個端口:

image-20210131184455519

3. IO 密集型與計算密集型的模型

image-20210131184847304

4. IO 模型程序的優化

提高 APP 從內核的 queue 搬運到程序進程內存數據的速度:

image-20210131185034964

數據從客戶端發送到服務端後,服務端的數據處理流程:

  1. 數據會先進入服務端機器的網卡緩衝區,當數據接收特別頻繁時,內核會做一個暫時關閉中斷的優化,將 CPU 的時間片讓出來,直接干預數據的 DMA 拷貝
  2. 內核會把網卡的緩衝區數據傳輸到內核的 queue 緩存區中
  3. APP 程序通過調用系統的 epoll 多路複用器進行 IO 操作,會將內核的 queue 數據搬移到自己的 jvmqueue 中

系統層面已經做了數據接收的搬運,我們開發程序要做的優化的目標是儘快的從內核 queue 搬運數據到 jvmqueue,這裏就需要用到了 IO 線程與業務處理線程。

  1. IO 線程的工作只是負責讀取 IO 數據
  2. 業務線程的工作只是負責程序業務的邏輯

兩者線程各司其職,充分利用 CPU,儘快的搬移 IO 數據。

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