290 likes | 405 Views
Introduction to MINA. Trustin Lee trustin@apache.org http://people.apache.org/~trustin/. Agenda. Overview In-depth View Implementation Demo Future Conclusion. Overview. A M ultipurpose I nfrastructure for N etwork A pplications. Overview. What is MINA?. An acronym for
E N D
Introduction to MINA Trustin Lee trustin@apache.org http://people.apache.org/~trustin/
Agenda • Overview • In-depth View • Implementation Demo • Future • Conclusion ApacheCon US 2005
Overview A Multipurpose Infrastructure for Network Applications
Overview What is MINA? • An acronym for A Multipurpose Infrastructure For Network Applications • A network application framework • A subproject of • the Apache Directory Project ApacheCon US 2005
Overview Features • Unified API • Easy • Event-driven • Abstracted from existing I/O APIs • Elegant application design ApacheCon US 2005
Overview Supported Transport Layers • Out-of-the-box • Based on Java NIO (New I/O) • Socket (TCP/IP) • Datagram (UDP/IP) • In-VM pipe • Pending: • Multicast • Serial and parallel port • <your favorite one> ApacheCon US 2005
Overview Elegant Application Design • Unit test friendly • The Abstract API lets you test your application without a real client or server via mock objects. • Extensible • Runtime modification of application behavior using ‘filters’ • Maintainable and Reusable • Separation of networking code (MINA), protocol codec, and business logic ApacheCon US 2005 With High Productivity
Overview Who Uses MINA? • The Apache Directory Project • QuickFIX – QuickFIXEngine.org • Financial Information eXchange Protocol • RED5 Server – OSFlash.org • Macromedia Flash Media RTMP • JStyx – JStyx.sf.net • Styx, a file sharing NFS-like protocol • Proprietary SMPP / SMS servers ApacheCon US 2005
In-depth View A Multipurpose Infrastructure for Network Applications
In-depth At the First Glance • IoSessionManager • Where real I/O occurs • Generates I/O events • Processes I/O requests • IoFilters • Filters I/O events and requests • IoHandler • <Your protocol logic> • IoSession • Represents a connection ApacheCon US 2005
In-depth IoSessionManagers Server-side:Accepts clients Client-side:Connects to a server And their implementations ApacheCon US 2005
In-depth IoSession • A connection between an IoHandler and a remote peer • Provides ways to send an I/O request • Write a message • Close the current connection • State information • Idleness • Last I/O time • Transport layer parameters • Attributes: Protocol-specific data storage ApacheCon US 2005
Where you implement your network application In-depth IoHandler ApacheCon US 2005
A reusable event & request interceptor Hot-deployable Scope: An IoSession or an IoSessionManager In-depth IoFilter ApacheCon US 2005
In-depth IoFilter (Cont’d) • Out-of-the box filters: • SSL / TLS • Remote peer blacklisting • Thread pool • Logger • Pending filters: • Profiler • Traffic throttle • Lightweight firewall • Overload prevention ApacheCon US 2005
In-depth Thread Pooling with IoFilter ApacheCon US 2005
In-depth Protocol Codec • By default, • IoHandler uses a ByteBuffer to do I/O • Tight coupling ofprotocol codec and business logic :( • ProtocolCodecFilter is an IoFilter • Performs transformation betweena ByteBuffer and a POJO (Plain Old Java Object) • Clear separation ApacheCon US 2005
In-depth Protocol Codec (Cont’d) ApacheCon US 2005
In-depth In-VM Pipe Transport Type • A virtual pipe • Requires no protocol codec • I/O events and requests are converted into direct method invocations. • Two MINA servers in the same VM • Can bypass: • Protocol codec • Network latency ApacheCon US 2005
Implementation Demo A Multipurpose Infrastructure for Network Applications
Demo More Complex Examples • Realistic examples: • Visit Here:http://directory.apache.org/subprojects/network/getting_started.html ApacheCon US 2005
Future A Multipurpose Infrastructure for Network Applications
Future MINA as a Platform Integration with Apache ASN.1 for complex protocols Users can build customized servers with ready-made protocol codecs. Just like drawing an ERDiagrams! ApacheCon US 2005
Future Real-Time Management System • A universal management view • JMX console and Web browser • Real time access • Server traffic • IoFilter Hot-deploy • Which client is sending what message now? • Which message takes toolong to process? • And <what you want to monitor> ApacheCon US 2005
Future We Need Your Participation! • Sounds exciting? • Please help MINA team! • Try MINA • Ask questions • Criticize • Report bugs • Benchmark • Contribute code • Contribute a tutorial ApacheCon US 2005
Conclusion A Multipurpose Infrastructure for Network Applications
Conclusion Conclusion • MINA is an extensible network application framework that helps you implement your network application elegantly without compromising productivity. • MINA can be a complete network application development & management platform if we get our effort together. ApacheCon US 2005
Resources • Homepage • http://directory.apache.org/subprojects/network/ • Mailing List • dev@directory.apache.org(Please use ‘[mina] prefix) ApacheCon US 2005
Thank You! Q & A