1월, 2014의 게시물 표시

대용량 메시지 처리 시스템을 구성을 위한 고려사항

@see http://www.slideshare.net/indeedeng/indeedeng-how-to-get-a-job-35-million-times-a-day-using-rabbitmq# Durability - 내구성   시스템 장애가 발생하더라도 메시지가 유실되지 않아야 한다. persistent messages - using database  persistent 와 clustering은 성능저하를 가져오는 요인임->요구수준의 성능을 보장토록 구성 High throughput - 대량 처리량   대량 메시지의 순간처리량 뿐아니라, 월간, 연간 처리량이 목표수준에 도달해야 한다. 병렬 처리 비동기 처리 Low latency - 낮은 대기시간   유입되는 요청메시지의 부하로 인한 처리대기시간이 짧아야 한다.   High latency - mq가 없는 단일접점 서비스로 구성된 시스템 Message Queue 시스템 구성 병렬처리 시스템으로 구성 비동기 처리 시스템으로 구성 Partition-tolerance -분할내성   메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있도록 처리 mirrored queues in clustering persistent and clustering Efficient use of the database - 효과적인 데이타베이스 사용   persistent message 를 위한  편리성이 제공되어야 한다. 설정값에 의한 mode 전환

비동기 메시지 처리 시스템(4) - RabbitMQ toturial(2) - Spring Integration + RabbitMQ

이미지
@see https://github.com/airlee00/rabbitmq-tutorial/tree/master/RabbitMQTutorial  1. context xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/integration/amqp http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-ra

비동기 메시지 처리 시스템(2)- RabbitMQ 설치

이미지
개요 RabbitMQ 는 Advanced Message Queuing Protocol (AMQP) 를 구현한 오픈소스 message broker 이다. RabbitMQ 서버는 Erlang 프로그래밍 언어로 작성되고, 클러스터링 및 failover를 위한 오픈 통신 플랫폼의 프레임 워크가 내장되어 있다. AMQP에 대한 내용을 먼저 알고 있어야 하는데  http://killins.egloos.com/m/3025514   에서 참조 할 수 있다. 또는  http://blog.saltfactory.net/90  에서는 기본 개념과 설치 방법을 포스팅 하고 있으니 참조 할 만 하다. RabbitMQ 설치   1. erlang 다운 및 설치      http://www.erlang.org/download.html 에서 window용 파일을 다운받아 설치   2. rabbitmq window버전 다운 및 설치      http://www.rabbitmq.com/download.html      에서 installer버전을 다운받아 설치   3. plugins 설치      명령프롬프트에서 c:\Program Files\RabbitMQ Server\rabbitmq_server-x.x.x\sbin      으로 이동후      > rabbitmq-plugins enable rabbitmq_management 실행           4. RabbitMQ 서비스 재시작  5. http://localhost:15672 로 접속 하여  monitoring

비동기 메시지 처리 시스템(3) - RabbitMQ toturial(1)

이미지
RabbitMQ toturials는  rabbitmq  에 잘 정리되어 있음. eclipse & maven 기반으로 toturials을 실행하기 위해서 먼저 아래와 같이 dependancy를 pom.xml파일에 추가한다. 1. maven dependancy     <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.2.2</version> </dependency> 2. 첫번째 샘플인 Sending & Receiving 부터 마지막 RPC 예제 소스를 다운받아 eclipse에서 실행해보면 기본적인 이용방법을 알수 있다.  http://www.rabbitmq.com/tutorials/tutorial-one-java.html 3. 예제를 실행하면 rabbitmq의 관리페이지에서 다양한 view를 확인할 수 있다.

비동기 메시지 처리 시스템(1)-JMS, RabbitMQ

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