整個框架最核心的幾個包是:org.apache.mina.core.service, org.apache.mina.core.session, org.apache.mina.core.polling以及org.apache.mina.transport.socket。
最近使用Mina開發一個Java的NIO服務端程序,因此也特意學習了Apache的這個Mina框架。 首先,Mina是個什么東西?看下官方網站(http://mina.apache.org/)對它的解釋: Apache的Mina(Multipurpose Infrastructure Networked Applications)是一個網絡應用框架,可以幫助用戶開發高性能和高擴展性的網絡應用程序;它提供了一個抽象的、事件驅動的異步API,使Java NIO在各種傳輸協議(如TCP/IP,UDP/IP協議等)下快速高效開發。
前言筆者之前的工作主要是做java的web端開發,后因工作原因參與了一個國家級的大項目,主要負責其中底層通訊的前置機模塊。幾經波折,將該系統完成后,結果在第一輪的測試中就慘敗退回。其根本原因就在于原設計文檔的要求單“通信機”與“終端”()之間的并發量要達到2W以上的連接通信,而實際運行并發量只能達到2600個相差了近十倍左右。經過代碼調優、擴展JVM內存等等手段,但因基礎數據相差過大,所取得的優化效果十分有限。后考慮在根本著手,只有更改整個系統的通信接口,才有可能達到設計文檔上的要求。
First of all, it's good to know that MINA is written on top of NIO 1. A new version has been designed in Java 7, NIO-2, we don't yet benefit from the added features this version is carrying. It's also important to know that the N in NIO means New, but we will use the Non-Blocking term in many places. NIO-2should be seen as a New New I/O.
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 組織一個較新的項目,它為開發高性能和高可用性的網絡應用程序提供了非常便利的框架。當前發行的 MINA 版本支持基于 Java NIO 技術的 TCP/UDP 應用程序開發、串口通訊程序(只在最新的預覽版中提供),MINA 所支持的功能也在進一步的擴展中。。本文將通過官方網站上的快速入門程序 來介紹 MINA 的基礎架構的同時演示如何使用MINA 開發網絡應用程序。
Apache MINA 是一個網絡應用框架,有助于用戶非常方便地開發高性能、高伸縮性的網絡應用。它通過Java NIO提供了一個抽象的、事件驅動的、異步的位于各種傳輸協議(如TCP/IP和UDP/IP)之上的API, Apache MINA 通常可被稱之為: NIO 框架庫; 客戶端/服務器框架庫; 或者一個網絡socket庫。Apache MINA 是一個網絡應用程序框架,它對Java中的socket和NIO進行了有效和清晰的封裝,方便開發人員開發TCP/UDP程序,從而拋開在使用原始的socket時需要考慮的各種繁雜而又煩人問題(線程、性能、會話等),把更多精力專著在應用中的業務邏輯的開發上。
二.Mina一個請求的主要實現流程:服務器啟動時,構造NioSocketAcceptor,服務器同時也會構造NioProcessor。client請求->NioSocketAcceptor建立連接,在bind監聽端口后,調用startupAcceptor()方法->接收線程Acceptor啟動->processHandles()方法調用->初始化session,并把session加入到NioProcessor待處理session隊列中。
Reactor模式實現不同,mina中采用了Multiple Reactor的方式,由NioSocketAcceptor和IoProcessor分別承擔多個Reactor的職責。NioSocketAcceptor和NioProcessor使用不同selector,能夠更加充分的榨取服務器的性能。
如何正確使用NIO來構架網絡服務器一直是最近思考的一個問題,于是乎分析了一下Jetty、Tomcat和Mina有關NIO的源碼,發現大伙都基于類似的方式,我感覺這應該算是NIO構架網絡服務器的經典模式,并基于這種模式寫了個小小網絡服務器,壓力測試了一下,效果還不錯。廢話不多說,先看看三者是如何使用NIO的。
筆者之前的工作主要是做 java 的 web 端開發,后因工作原因參與了一個國家級的大項目,主要負責其中底層通訊的前置機模塊。幾經波折,將該系統完成后,結果在第一輪的測試中就慘敗退回。其根本原因就在于原設計文檔的要求單“通信機”與“終端”(注一)之間的并發量要達到 2W 以上的連接通信,而實際運行并發量只能達到 2600 個相差了近十倍左右。經過代碼調優、擴展 JVM 內存等等手段,但因基礎數據相差過大,所取得的優化效果十分有限。后考慮在根本著手,只有更改整個系統的通信接口,才有可能達到設計文檔上的要求。某天在某個技術 QQ 群里一次討論中,有網友向我推薦了一個框架,這就是本文要介紹的主角 -MINA 。
最近使用Mina開發一個Java的NIO服務端程序,因此也特意學習了Apache的這個Mina框架。Apache的Mina(Multipurpose Infrastructure Networked Applications)是一個網絡應用框架,可以幫助用戶開發高性能和高擴展性的網絡應用程序;它提供了一個抽象的、事件驅動的異步API,使Java NIO在各種傳輸協議(如TCP/IP,UDP/IP協議等)下快速高效開發。
這一篇先來看org.apache.mina.core.service。第一個要說的接口是IoService,它是所有IoAcceptor和IoConnector的基接口.對于一個IoService,有哪些信息需要我們關注呢?1)底層的元數據信息TransportMetadata,比如底層的網絡服務提供者(NIO,ARP,RXTX等),2)通過這個服務創建一個新會話時,新會話的默認配置IoSessionConfig。3)此服務所管理的所有會話。
簡介:Apache MINA2是一個開發高性能和高可伸縮性網絡應用程序的網絡應用框架。它提供了一個抽象的事件驅動的異步API,可以使用TCP/IP、UDP/IP、串口和虛擬機內部的管道等傳輸方式。ApacheMINA2可以作為開發網絡應用程序的一個良好基礎。本文將介紹ApacheMINA2的基本概念和API,包括I/O服務、I/O會話、I/O過濾器和I/O處理器。另外還將介紹如何使用狀態機。本文包含簡單的計算器服務和復雜的聯機游戲兩個示例應用。
Apache 組織一個較新的項目,它為開發高性能和高可用 性的網絡應用程序提供了非常便 apache mina利的框架 。當前發行的 MINA 版本支持基于 Java NIO 技術的 TCP/UDP 應用程序開發、串口通訊程序(只在最新的預覽 版中提供),MINA 所支持的功能也在進一步的擴展中。 NIO(new IO新的輸入、輸出),1.4引入。提供更高速, 面向塊的IO 原來的IO庫(java.io.*)以流的方式處理數據,NIO已塊 的方式處理數據。面像流,已一個字節一個字節進行處理 ,塊,則是按整塊處理(字節集合)。
因為開發需要用到Apache MINA框架,所以看了一下其文檔,順手譯了一部分,下面內容沒有測試,只是譯了出來,后面測試一下,如果有問題再提出來。
Apache的Mina(Multipurpose Infrastructure Networked Applications)是一個網絡應用框架,可以幫助用戶開發高性能和高擴展性的網絡應用程序;它提供了一個抽象的、事件驅動的異步API,使Java NIO在各種傳輸協議(如TCP/IP,UDP/IP協議等)下快速高效開發。
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 組織一個較新的項目,它為開發高性能和高可用性的網絡應用程序提供了非常便利的框架。當前發行的 MINA 版本支持基于 Java NIO 技術的 TCP/UDP 應用程序開發、串口通訊程序(只在最新的預覽版中提供),MINA 所支持的功能也在進一步的擴展中。。本文將通過官方網站上的快速入門程序 來介紹 MINA 的基礎架構的同時演示如何使用MINA 開發網絡應用程序。
大并發量socket通信的解決方案?-- MINA框架的使用心得及相關要點。
題記:因為開發需要用到Apache MINA框架,所以看了一下其文檔,順手譯了一部分,下面內容沒有測試,只是譯了出來,后面測試一下,如果有問題再提出來。
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 組織一個較新的項目,它為開發高性能和高可用性的網絡應用程序提供了非常便利的框架。當前發行的 MINA 版本支持基于 Java NIO 技術的 TCP/UDP 應用程序開發、串口通訊程序(只在最新的預覽版中提供),MINA 所支持的功能也在進一步的擴展中。。本文將通過官方網站上的快速入門程序 來介紹 MINA 的基礎架構的同時演示如何使用MINA 開發網絡應用程序。