본문
JMS(Java Message Service)
# JMS(Java Message Service)
- 응용프로그램 간에 비동기적으로 메시지를 교환할 수 있는 방법을 제공
- JMS는 MOM을 이용하기 위한 API
- 두 개 혹은 그 이상의 클라이언트 간 메시지 통신을 위한 MOM(Message Oriented Middleware) API
- 애플리케이션 컴포넌트들끼리 메시지를 생성, 송/수신, 읽기 기능을 제공하는 메시징(messaging) 표준
# JMS 역할
분산된 애플리케이션끼리 느슨하게 연결해주고 신뢰성을 보장하며, 비동기 처리가 가능하도록 한다.
# MOM(Message Oriented Middleware)
분산 시스템 간 메시지를 주고 받는 기능을 지원하는 소프트웨어
ex) ActiveMQ, apache KAFKA ..
# Apache Kafka와 기존 JMS 비교
# Apache Kafka
- 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템
단, 특화된 시스템이기 때문에 범용 메시징 시스템에서 제공하는 다양한 기능들은 제공되지 않는다.
- 파일 시스템에 메시지를 저장하기 때문에 별도의 설정을 하지 않아도 데이터의 영속성(durability)이 보장된다.
# 기존 JMS (ActiveMQ)
- 다양한 기능 제공
- Open Source
- JMS가 DOWN되면 데이터의 영속성(durability)이 보장되지 않는다
- 큐(Queue)에 처리되지 않고 남아있는 메시지의 수가 많을수록 시스템의 성능이 크게 감소
기존 메시징 시스템에서는 처리되지 않고 남아있는 메시지의 수가 많을수록 시스템의 성능이 크게 감소하였으나, Kafka에서는 메시지를 파일 시스템에 저장하기 때문에 메시지를 많이 쌓아두어도 성능이 크게 감소하지 않는다. 또한 많은 메시지를 쌓아둘 수 있기 때문에, 실시간 처리뿐만 아니라 주기적인 batch작업에 사용할 데이터를 쌓아두는 용도로도 사용할 수 있다.
- 참고 : http://wiki.intellicode.co.kr/doku.php?id=%EA%B0%9C%EB%B0%9C:kafka
댓글