BackEnd/Java
Apache Mina (아파치 미나)
철철22
2018. 10. 31. 10:17
반응형
반도체 통신 서버를 유지보수를 하게 되면서 MINA 프레임 워크에 대해 알게 되었습니다.
Apache Mina는 네트워크 어플리케이션 프레임워크로 Java NIO를 기초로 TCP/IP & UDP/IP 같은 전송을 통해서 이벤트 중심 비동기 api를 제공하며, 사용자가 쉽게 네트워크 서버를 구현할 수 있게 도와주는 프레임 워크 입니다.
NIO는 Non-Blocking IO 의 줄임말이라고 합니다. NIO에 대해 좋은 글을 한번 찾아봤습니다.
일단 Mina의 특징에 대해 알아보겠습니다.
- 다양한 전송 타입을 위한 통합 API:
- Java NIO를 통한 TCP/IP & UDP/IP
- RXTX를 통한 Serial communication (RS232)
- In-VM pipe communication
- 사용자가 직접 구현
- extension point로의 Filter interface; Servlet filters 와 비슷
- Low-level and high-level API:
- Low-level: uses ByteBuffers
- High-level: 사용자 정의 메세지 객체와 코덱 사용
- Highly customizable thread model:
- Single thread
- One thread pool
- More than one thread pools (i.e. SEDA)
- Java 5 SSLEngine를 사용한 즉시 사용할 수 있는 SSL · TLS · StartTLS 지원
- Overload shielding & traffic throttling
- Unit testability using mock objects
- JMX managability
- Stream-based I/O support via StreamIoHandler
- PicoContainer and Spring 같은 컨테이너와의 통합
- MINA 이후 출시한 NETTY의 원할한 마이그레이션 지원
Mina를 통해 만들어진 어플리케이션은 다음과 같은 기본 구조를 가집니다.
출처 : https://mina.apache.org/mina-project/userguide/ch2-basics/application-architecture.html
Mina는 3개의 레이어로 구성되어 있습니다.
I/O Service - 실제 I/O 수행
I/O Filter Chain - 원하는 데이터 구조 및 그 반대의 데이터를 필터링/변환
I/O Handler - 비즈니스 로직 구현
출처 : https://mina.apache.org/mina-project/userguide/ch2-basics/application-architecture.html
다음은 MINA를 사용한 Server와 Client 구조입니다.
대부분의 구현이 MINA 예제를 기초로 만들 수 있어서
여기에 올리는 것보다 이 URL을 타고 참고하시면 더 좋을 것 같습니다.
Apache Mina :
참고 :
반응형