2016-10-25 11 views
2

브로커의 최종 실패시 브로커가 아직 전달하지 않은 메시지를 잃지 않도록 메시지 대기열 복제가있는 확장 가능한 아키텍처를 구현하기 위해 Mosca 또는 Mosquitto 브로커 (오픈 소스)를 사용할 계획이었습니다.
모스 킷토는 성숙하고 매우 안정적인 솔루션으로 브리지를 사용한 수평 확장 성을 갖추고 있습니다. 하지만 데이터베이스 (모든 브로커 공통)에 메시지를 쓰는 플러그인을 찾을 수 없었습니다. 따라서 두 브로커가 균형을 맞춰 부하가 분산되어 있고 그 중 하나가 죽으면이 모든 메시지가 무시 될 수 있기 때문에 이것이 한계라고 생각합니다. 브로커가 복구 될 때까지 브로커를 전달할 수 없습니다. 반면에 Mosca는 Redis를 사용하여 규모를 조정할 수 있으며 브로커 1이 종료되면 broker2는 공통 데이터베이스에 저장되므로 메시지를 전달할 수 있습니다. 그리고 그런 식으로 단일 실패 지점을 피하기 위해 redis의 마스터 - 슬레이브 구성을 사용할 수 있습니다. Mosquitto와 Mosca의 수평 확장 성과 복원력?

그래서 제 질문은 다음과 같습니다

1) 모스카 생산을위한 좋은 선택인가?

2) 모스키토로 메시지 대기열을 할당 할 때 redis를 사용할 수 있습니까?

답변

5

처음부터 확장 성을 위해 엔지니어링이 필요하기 때문에 수평 확장 성은 MQTT 브로커에 기능으로 추가하기가 매우 어렵습니다. 또한 배달되지 않은 메시지에 대한 대기열을 복제하는 것은 복원력 또는 내결함성에 도움이되지 않습니다.

가 쉽게 추가 할 수있을 것입니다 경우에도

, 그것은 본질적으로 메시지 손실 이후는, 레디 스에 가지 않을 것입니다 : 당신은 수평 확장 성을 원하는 경우에, 나는 클러스터링이있는 브로커를 확인하는 것이 좋습니다 것 https://aphyr.com/posts/283-jepsen-redis

을, 수평 적 (또는 양호 : 선형) 확장 성이 내장되어 있으며 네트워크 분할을 허용합니다.

다음은 MQTT 및 클러스터링에 대한 시리즈입니다. http://www.hivemq.com/blog/clustering-mqtt-introduction-benefits/