RabbitMQ Broker를 분산환경하에 사용하는 방법은 3가지가 있다.
1) Clustering
다중 머신을 하나의 논리적인 브로커형태로 연결한다. Erlang message-passing을 통해서 연결되므로 같은 Erlang cookie를 가지고 있어야 한다. 네트워크도 항상 연결되어있고, 같은 버젼의 RabbitMQ와 Erlang으로 구성되어야 한다.
Virtual hosts, exchanges, permission 들이 복제됨 Queue는 하나의 node에만 있을 수도있고 복제되어 다중 node에 존재 할 수도 있는데 Client는 어떤 node에나 붙어서 모든 Queue를 바라볼 수도 있다.
보통 같은 지역의 여러머신을 고가용성(high availability)와 처리량의 증가하도록 구성하는데 쓰임
2) Federation
AMQP를 통해서 한 broker의 exchange(or Queue)에서 다른 broker의 exchanges(or Queue)를 연결한다. 두 broker는 적합한 User, permission이 부여되어야 연결 가능하다.
Federation Exchange는 point-to-point link로 단방향성으로 연결됨
보통 인터넷 넘어의 브로커들을 pub/sub메시징처리나 Work Queueing로 연결하는데 사용함
3) The Shovel
Shovel은 federation과 비슷한데 더 low level로 동작함
한 브로커에 있는 메시지를 Consume해서 다른 브로커의 exchange에 forward 해줌
보통 federation이 제공하지 못하는 세세한 control이 필요할 때 사용
Dynamic Shovel는 하나의 브로커의 ad-hoc환경하에 메시징처리에도 유용함
Summary
구분 | Federation / Shovel | Clustering |
---|---|---|
머신구성 | 브로커가 분리, 브로커 주인이 다르다 | 하나의 논리적인 브로커 |
RabbitMQ와 Erlang 버젼 | 달라도 구성가능 | 같아야 구성가능 |
Communication 방식 | AMQP | Erlang |
네트워크 | WAN,LAN가능 | LAN가능 |
연결인증 | user/permissions | erlang cookie |
연결구성 | 단방향 or 양방형 Link | 모든 노드들의 연결 |
CAP | AP(Availability & Partition Tolerance) | CP (Consistency & Partition Tolerance) |