1.개요
ㅇ비동기/병렬처리( QUEUE ):대량 메시지 처리성능을 위해 반드시 적용
ㅇ동기처리시 문제..
-트랜잭션이 늘어나면 대기하는 요청들이 늘어나 정체 -> 서버다운
-병렬 처리 못함 -> 응답시간 지연.
ㅇSpring Integration:비동기 병렬처리를 손쉽게 구현.
- spring 기반의 bean들과 설정들을 그대로 사용할 수 있어 매력적임
- Task-executor를 이용한 단순한 구조였음에도 훌륭한 성능.
ㅇ 개선점 ( In memory channel 기반 시스템의..)
- decoupling :
.producer와 consumer간 직접연결로 인한 확장성 문제.
.주소가 바뀌거나 , 서버이전하거나..( Physical decoupling)
.어느 한쪽의 logic이 변경되면......( Logical decoupling )
- 시스템 에러시 queue에 있는 데이타는 유실
- load balancing, clustring ..
- 큐의 상태에 대한 모니터링 도구가 없음.
ㅇ 보다 견고한 시스템 구성이 필요 -> jms, mq 등의 시스템 구성..
2. JMS vs RabbitMQ
ㅇJMS : 메시지 처리에 대한 J2EE API. OpenMQ, HornetQ, ActiveMQ가 이에
해당하는 제품들임
ㅇRabbitMQ : AMQP 프로토콜을 지원하는 오픈소스 메시징 시스템
(AMQP란 -> http://killins.egloos.com/m/3025514 )
ㅇ둘의 차이점
[원본] http://java.dzone.com/articles/jms-vs-rabbitmq
1) Messaging Model
Jms는 2가지 모델을 지원한다.
-> one to one, publish-subscriber
RabbitMQ는 4가지 모델을 지원한다.
->direct, fanout, topic , headers
2) Data Types
JMS는 5가지data types 지원
-> byte, text, stream, map, object
RabbitMQ는 binary type만 지원한다.
3) Workflow strategy
AMQP는 producers가 exchange를 거쳐 queue로 전송하지만
jms는 queue나 topic으로 직접전송한다.
(exchange의 역할은 direct, fanout, topic 등을 수행)
4) Technology compatibility:
jms는 only java이다. RabbitMQ는 다양한 언어를 지원한다.
5) Performance
http://x-aeon.com/wp/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/
에서의 순위는 ZeroMQ다음으로 RabbitMQ의 성능이 뛰어나다고 한다.
(ZeroMQ?->http://blog.naver.com/PostView.nhn?blogId=haje01&logNo=130133918260)
ㅇZeroMQ vs RabbitMQ
-.ZeroMQ에 비해 RabbitMQ는 문서화, 사용편리성등에서 월등하며,
많은 개발자들이 사용하고 있다는 잇점.
-.RabbitMQ는 다양한 언어를 지원함.
( spring integration과 연계됨 )
(시스템 환경, 규모를 고려하지 않는 다면 ..확장성,독립성,성능등에서
RabbitMQ가 적절해 보임)
ㅇps.
ㅇ In memory channel vs rabbitmq
-async-task는 데이타의 누락에 대한 책임을 지지 못함
-rabbitmq는 설치를 해야 하기때문에 관리포이트가 증가한다
-rabbitmq는 모니터링 도구를 제공함.
-----------------------------
ㅇ RabbitMQ의 특징.
- High Availablity
- self-hosted
- multi client language
-------------------------------
댓글
댓글 쓰기