Introduction to MINA

Post on 21-Mar-2016

30 views 1 download

description

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 - PowerPoint PPT Presentation

Transcript of Introduction to MINA

Introduction to MINATrustin Leetrustin@apache.org

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• dev@directory.apache.org

(Please use ‘[mina] prefix)

Thank You!Q & A