日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MINA核心结构和处理消息的逻辑流程

發布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MINA核心结构和处理消息的逻辑流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.MINA 核心結構

IoService

最底層的是IOService,負責具體的IO相關工作。這一層的典型代表有IOSocketAcceptor和IOSocketChannel,分別對應TCP協議下的服務端和客戶端的IOService。IOService的意義在于隱藏底層IO的細節,對上提供統一的基于事件的異步IO接口。每當有數據到達時,IOService會先調用底層IO接口讀取數據,封裝成IoBuffer,之后以事件的形式通知上層代碼,從而將Java NIO的同步IO接口轉化成了異步IO。所以從圖上看,進來的low-level IO經過IOService層后變成IO Event。

具體的代碼可以參考org.apache.mina.core.polling.AbstractPollingIoProcessor的私有內部類Processor。

IoFilterChain

Mina的設計理念之一就是業務代碼和數據包處理代碼分離,業務代碼只專注于業務邏輯,其他的邏輯如:數據包的解析,封裝,過濾等則交由IoFilterChain來處理。IoFilterChain可以看成是Mina處理流程的擴展點。這樣的劃分使得結構更加清晰,代碼分工更明確。開發者通過往Chain中添加IoFilter,來增強處理流程,而不會影響后面的業務邏輯代碼。

IoHandler

IoHandler是實現業務邏輯的地方,需要有開發者自己來實現這個接口。IoHandler可以看成是Mina處理流程的終點,每個IoService都需要指定一個IoHandler。

IoSession

IoSession是對底層連接的封裝,一個IoSession對應于一個底層的IO連接(在Mina中UDP也被抽象成了連接)。通過IoSession,可以獲取當前連接相關的上下文信息,以及向遠程peer發送數據。發送數據其實也是個異步的過程。發送的操作首先會逆向穿過IoFilterChain,到達IoService。但IoService上并不會直接調用底層IO接口來將數據發送出去,而是會將該次調用封裝成一個WriteRequest,放入session的writeRequestQueue中,最后由IoProcessor線程統一調度flush出去。所以發送操作并不會引起上層調用線程的阻塞。

2.MINA處理消息的邏輯流程

第1種:

  • IOAcceptor 監聽網絡數據包傳入的連接;
  • 為每個新的連接(Connection)創建一個session,同一個端口+ip的后續請求將通過session進行處理;
  • 同一個session收到的所有數據,通過過濾鏈進行過濾.通過PacketEncoder/Decoder進行有效的編碼,解碼處理(負責把底層傳輸的對象拼裝為更高一層的對象方便后續的處理,最后傳輸的數據被交給IOHandler);
  • 最后根據自己的業務需求完成Handler的業務邏輯處理.

第2種:

通過SocketAcceptor 同客戶端建立連接;

連接建立之后 I/O的讀寫交給了I/O Processor線程,I/O Processor是多線程的;

通過I/O Processor 讀取的數據經過IoFilterChain里所有配置的IoFilter, IoFilter 進行消息的過濾,格式的轉換,在這個層面可以制定一些自定義的協議;

最后 IoFilter 將數據交給 Handler 進行業務處理,完成了整個讀取的過程;

寫入過程也是類似,只是剛好倒過來,通過IoSession.write 寫出數據,然后Handler進行寫入的業務處理,處理完成后交給IoFilterChain,進行消息過濾和協議的轉換,最后通過 I/O Processor 將數據寫出到 socket 通道。

總結

以上是生活随笔為你收集整理的MINA核心结构和处理消息的逻辑流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。