분류 전체보기
-
RabbitMQ RPC(Remote procedure call)Cloud 2015. 3. 18. 09:00
예제소스 rpc_server.py #!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.queue_declare(queue='rpc_queue') def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) def on_request(ch, method, props, body): n = int(body) print " [.] fib(%s)" % (n,) response = fib(n) ch..
-
RabbitMQ 토픽Cloud 2015. 3. 17. 09:00
특정 주제에 대한 메세지를 주고받는 기능. topic exchange로 보내지는 메세지는 반드시 routing_key를 가지고 있어야함. routing_key 크기는 255 바이트. 바인딩 키에 특수문자 사용가능. - * 하나의 단어를 의미 - # 없거나 하나이상의 단어를 의미 예제소스 emit_log_topic.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='topic_logs', type='topic'..
-
RabbitMQ 라우팅Cloud 2015. 3. 16. 09:00
원하는 메세지만 선택해서 받기 위한 기능. exchange와 큐를 바인딩하기위해 routing_key 매개변수를 이용함. 예제소스 emit_log_direct.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='direct_logs', type='direct') severity = sys.argv[1] if len(sys.argv) > 1 else 'info' message = ' '.join(sys.argv..
-
RabbitMQ를 이용한 메세지 발행/구독 모델Cloud 2015. 3. 13. 09:00
워크큐에서는 하나의 메세지가 하나의 워커에게만 전달되지만 발행/구독 모델에서는 하나의 메세지가 모든 구독자에게 전달이 되는 구조. rabbitmq에서는 메세지를 바로 큐로 보내지 않고 exchange에 먼저 보내는데, 이 exchange 타입을 fanout으로 설정 하면 됨. 예제 emit_log.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='logs', type='fanout') message = ' ..
-
RabbitMQ 작업 큐로 이용하기Cloud 2015. 3. 12. 09:00
메세지를 받아간 워커가 작업중에 죽더라도 해당 메세지는 큐에 남아서 다른 워커에게 전달할 수 있게 하기위해서 RabbitMQ는 acknowledgments를 지원함. ack(nowledgments)는 워커가 메세지를 받아가서 처리했다는걸 RabbitMQ에게 알려서 RabbitMQ가 그 메세지를 지울 수 있게함. ack없이 워커가 죽으면 RabbitMQ는 그 메세지가 정상적으로 처리되지 않았다고 판단해서 다른 워커에게 메세지를 전달. 타임아웃은 없음. RabbitMQ 서버가 죽더라도 큐안의 메세지를 보존하기위해서는 durable 옵션을 True로 설정해서 큐를 생성함. 라운드로빈방식으로 메세지를 보내서 특정 워커에 작업이 쌓이는 것을 방지하기위해 basic_qos 옵션을 줄 수 있음. 메세지 흐름 구조 예..
-
RabbitMQ 파악하기Cloud 2015. 3. 11. 09:00
메세지 브로커(broker). 메세지를 중개/관리해주는 역할을 수행.데이터 전달, 논블럭킹 운영, 푸시 알림. 발행/구독, 비동기 처리, 작업 큐 등의 역할. 지원 프로토콜 : AMQP 0-9-1/0-9/0-8/1.0, STOMP, MQTT, HTTP 설치OS : Mac OS X 10.10.2RabbitMQ 버전 : 3.4.4 파일 다운로드 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.4/rabbitmq-server-mac-standalone-3.4.4.tar.gztar zxvf rabbitmq-server-mac-standalone-3.4.4.tar.gzcd rabbitmq_server-3.4.4/ 서버 실행sbin/rabbitmq-serve..
-
AMQP(Advanced Message Queuing Protocol)Cloud 2015. 3. 10. 09:00
메세지 미들웨어용 표준 프로토콜. 애플리케이션 레이어 프로토콜.메세지 전달을 3가지 방식중 하나로 보장함.at-most-once : 각 메세지는 한번만 전달되거나 아예 전달되지 않음.at-least-once : 각 메세지는 최소 한번이상 전달되고 여러번 전달될수도 있음.exactly-once : 메세지는 딱 한번만 전달됨. 정의하고 있는 주요기능- 메세지 관리- 큐잉(queuing)- 라우팅(점대점, 발행/구독 포함)- 신뢰성- 보안 AMQP에서는 데이터의 기본단위를 프레임(frame)이라고 함. 메세지 초기화/관리/전송등을 위한 9개의 프레임 바디(frame body)가 있음.- open, begin, attach, transfer, flow, disposition, detach, end, close ..
-
trove 개념 잡기Cloud 2015. 2. 25. 09:00
OpenStack에서 관계형/비관계형 데이터베이스를 DBaaS로 제공하기 위한 프로젝트. Icehouse(2014. 04. 17)에서의 제공기능 - 사용자/스키마 관리 - Flavor/Cinder 볼륨 크기 변경 - 전체 기능 지원 DB : MySQL, Percona - 일부 기능 지원 DB : MongoDB, Redis, Cassandra, Couchbase - 설정 그룹 : 설정 옵션들의 집합을 정의함. - 백업/복구 : 전체/증분 백업 지원 Juno(2014. 10. 16)에서의 제공기능 - mysql 인스턴스의 비동기 replication(master-slave replicas) 지원 - 클러스터링 API 제공 : MongoDB 클러스터 지원 - Neutron 지원. 기존에는 nova-networ..