Upload
yates
View
25
Download
1
Embed Size (px)
DESCRIPTION
Introduction to MINA. Trustin Lee [email protected] 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 - PowerPoint PPT Presentation
Citation preview
Introduction to MINATrustin [email protected]
http://people.apache.org/~trustin/
December 13, 2005 ApacheCon US 2005 2
Agenda• Overview• In-depth View• Implementation Demo• Future• Conclusion
OverviewA Multipurpose Infrastructure for Network Applications
December 13, 2005 ApacheCon US 2005 4
What is MINA?• An acronym for
A Multipurpose Infrastructure For Network Applications
• A network application framework• A subproject of
• the Apache Directory Project
Overview
December 13, 2005 ApacheCon US 2005 5
Features• Unified API
• Easy• Event-driven• Abstracted from existing I/O APIs• Elegant application design
Overview
December 13, 2005 ApacheCon US 2005 6
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>
Overview
December 13, 2005 ApacheCon US 2005 7
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
Overview
December 13, 2005 ApacheCon US 2005 8
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
• LDAP• Kerberos
• DNS• NTP
Overview
In-depth ViewA Multipurpose Infrastructure for Network Applications
December 13, 2005 ApacheCon US 2005 10
At the First GlanceRemote Peer
IoSessionManager
IoHandler
IoFilterChain
CoreExtension Point
Protocol Implementation
Legend
Filtered I/O
Event I/O
Re
ques
t
I/O Event
Filte
red
I/O
Re
ques
t
Low-level
I/O
Low
-leve
l I/
O
IoFilter #1
IoFilter #2IoFilter #3
IoSession
• 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
In-depth
December 13, 2005 ApacheCon US 2005 11
IoSessionManagersIn-depth
IoAcceptor IoConnector
nio::DatagramConnector
nio::SocketConnector
vmpipe::VmPipeAcceptor vmpipe::VmPipeConnector
nio::DatagramAcceptor
nio::SocketAcceptor
IoSessionManagerServer-side:
Accepts clients
Client-side:Connects to a server
And their implementation
s
December 13, 2005 ApacheCon US 2005 12
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
In-depth
December 13, 2005 ApacheCon US 2005 13
IoHandler• Where you implement your network
application«interface»
common::IoHandler
~ sessionCreated(IoSession) : void~ sessionOpened(IoSession) : void~ sessionClosed(IoSession) : void~ sessionIdle(IoSession, IdleStatus) : void~ exceptionCaught(IoSession, Throwable) : void~ messageReceived(IoSession, Object) : void~ messageSent(IoSession, Object) : void
In-depth
December 13, 2005 ApacheCon US 2005 14
IoFilter• A reusable event & request interceptor
• Hot-deployable• Scope:
• An IoSession or an IoSessionManager
In-depth
Event A IoFilter Event A’
December 13, 2005 ApacheCon US 2005 15
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
In-depth
December 13, 2005 ApacheCon US 2005 16
IoAcceptor IoHandler
No thread pool: single thread setting for minimal latency
Thread Pooling with IoFilter
IoAcceptorThreadPoolFilter
CPU-intensive
jobs(IoFilter)
ThreadPoolFilter
IoHandler
More than one thread pool: special setting for CPU-intensive jobs
IoAcceptorThreadPoolFilter
IoHandler
One thread pool: general setting for high throughput
In-depth
December 13, 2005 ApacheCon US 2005 17
Protocol Codec• By default,
• IoHandler uses a ByteBuffer to do I/O Tight coupling of
protocol codec and business logic :(
• ProtocolCodecFilter is an IoFilter• Performs transformation between
a ByteBuffer and a POJO (Plain Old Java Object)
Clear separation
In-depth
December 13, 2005 ApacheCon US 2005 18
Protocol Codec (Cont’d)Remote Peer
IoSessionManager
IoHandler
IoFilterChain
CoreExtension Point
Protocol Implementation
Legend
Filtered I/O
Event I/O
Re
ques
t
I/O Event
Filte
red
I/O
Re
ques
t
Low-level
I/O
Low
-leve
l I/
O
IoSession
ProtocolCodecFilter
Protocol Codec Factory
EncoderDecoder
Encode
Decode
In-depth
December 13, 2005 ApacheCon US 2005 19
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
In-depth
Implementation DemoA Multipurpose Infrastructure for Network Applications
December 13, 2005 ApacheCon US 2005 21
More Complex Examples• Realistic examples:
• Visit Here:http://directory.apache.org /subprojects/network/getting_started.html
Demo
FutureA Multipurpose Infrastructure for Network Applications
December 13, 2005 ApacheCon US 2005 23
Integration with Apache ASN.1 for complex protocols Users can build customized servers
with ready-made protocol codecs.
Just like drawing an ER Diagrams!
MINA as a PlatformFuture
Real-Time Management System
MINA
HTTP
SMTP
FTP
……
Popular Protocols
Visual Protocol Designer
(ASN.1-based)
Rapidly Prototyped Protocol
Others
LDAP
Kerberos
ASN.1Codec
December 13, 2005 ApacheCon US 2005 24
Real-Time Management System• A universal m anagement v iew• JMX console and W eb 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>
Future
December 13, 2005 ApacheCon US 2005 25
We Need Your Participation!• Sounds exciting?• Please help MINA team!
• Try MINA• Ask questions• Criticize• Report bugs• Benchmark• Contribute code• Contribute a tutorial
Future
ConclusionA Multipurpose Infrastructure for Network Applications
December 13, 2005 ApacheCon US 2005 27
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.
Conclusion
December 13, 2005 ApacheCon US 2005 28
Resources• Homepage
• http://directory.apache.org/subprojects/network/
• Mailing List• [email protected]
(Please use ‘[mina] prefix)
Thank You!Q & A