티스토리 뷰

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 :

https://mina.apache.org/


참고 : 

https://wizardee.tistory.com/40,

http://mckdh.net/130

https://homoefficio.github.io/2016/08/06/Java-NIO%EB%8A%94-%EC%83%9D%EA%B0%81%EB%A7%8C%ED%81%BC-non-blocking-%ED%95%98%EC%A7%80-%EC%95%8A%EB%8B%A4/

http://sooin01.tistory.com/entry/%EC%95%84%ED%8C%8C%EC%B9%98-%EB%AF%B8%EB%82%98Apache-MINA-%EC%82%AC%EC%9A%A9%EB%B2%95

반응형

'BackEnd > Java' 카테고리의 다른 글

JAVA 디자인 패턴 강좌  (0) 2018.11.06
JAVA Singleton Pattert 싱글톤 패턴  (0) 2018.10.31
Thread pool(쓰레드 풀)  (0) 2018.10.22
Java Socket 통신  (0) 2018.10.08
cmd에서 java 실행  (0) 2018.10.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함