29
Introduction to MINA Trustin Lee [email protected] http:// people.apache.org/~trustin /

Introduction to MINA

  • 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

Page 2: Introduction to MINA

December 13, 2005 ApacheCon US 2005 2

Agenda• Overview• In-depth View• Implementation Demo• Future• Conclusion

Page 3: Introduction to MINA

OverviewA Multipurpose Infrastructure for Network Applications

Page 4: Introduction to MINA

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

Page 5: Introduction to MINA

December 13, 2005 ApacheCon US 2005 5

Features• Unified API

• Easy• Event-driven• Abstracted from existing I/O APIs• Elegant application design

Overview

Page 6: Introduction to MINA

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

Page 7: Introduction to MINA

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

Page 8: Introduction to MINA

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

Page 9: Introduction to MINA

In-depth ViewA Multipurpose Infrastructure for Network Applications

Page 10: Introduction to MINA

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

Page 11: Introduction to MINA

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

Page 12: Introduction to MINA

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

Page 13: Introduction to MINA

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

Page 14: Introduction to MINA

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’

Page 15: Introduction to MINA

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

Page 16: Introduction to MINA

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

Page 17: Introduction to MINA

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

Page 18: Introduction to MINA

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

Page 19: Introduction to MINA

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

Page 20: Introduction to MINA

Implementation DemoA Multipurpose Infrastructure for Network Applications

Page 21: Introduction to MINA

December 13, 2005 ApacheCon US 2005 21

More Complex Examples• Realistic examples:

• Visit Here:http://directory.apache.org /subprojects/network/getting_started.html

Demo

Page 22: Introduction to MINA

FutureA Multipurpose Infrastructure for Network Applications

Page 23: Introduction to MINA

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

Page 24: Introduction to MINA

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

Page 25: Introduction to MINA

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

Page 26: Introduction to MINA

ConclusionA Multipurpose Infrastructure for Network Applications

Page 27: Introduction to MINA

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

Page 28: Introduction to MINA

December 13, 2005 ApacheCon US 2005 28

Resources• Homepage

• http://directory.apache.org/subprojects/network/

• Mailing List• [email protected]

(Please use ‘[mina] prefix)

Page 29: Introduction to MINA

Thank You!Q & A