5
우리는 미국 - 동부에 하나의 RabbitMQ 노드가 있고 다른 지역 (아일랜드, 시드니 등)에 생산자가있는 상황이 있습니다. 우리는 다른 영역에서 큐잉 할 때 엄청난 성능 적중률을보고 있습니다. Sydney -> US-East 대기열은 1s이며 메시지 대기열은 Queuing Sydney -> Sydney는 50ms입니다. 채널을 만들고 대기열을 선언하는 데 많은 시간이 소비 된 것 같습니다.지리적 거리에 따른 RabbitMQ 대기 시간 문제
성능을 향상시키기 위해 어떤 옵션을 사용해야합니까? 각 지역에 노드가있는 일종의 분산 RabbitMQ 클러스터를 볼 수 있습니까? 그게 우리를 도울까요? 페더레이션 또는 삽 보라이 사용 사례를 들어
var queueConnection = amqp.connect("OUR amqp servers in each region")
var queueName = "test-queue"
var queueMessage = function(message) {
return queueConnection.then(function(conn) {
return conn.createChannel()
}).then(function(ch) {
var queue = ch.assertQueue(queueName, { durable: false });
return queue.then(function() {
ch.sendToQueue(queueName, new Buffer(JSON.stringify(message)), { deliveryMode: true });
return ch.close()
});
})
};
Promise.map(_.range(0, 10), function(item) {
var timedQueueMessage = timely.promise(queueMessage)
return timedQueueMessage({ name: "Dom" }).then(function(res) {
console.log("Completed in " + timedQueueMessage.time + "ms")
})
}, { concurrency: 10 }).done(process.exit)
하드 질문, 당신은 삽 플러그인으로 시도해 봤어 :
이 페이지는 RabbitMQ가 제공하는 분산 된 각 옵션의 장단점을 설명? 여러 가지 방법이 있습니다. 예를 들어 브로커와 버퍼 집계 간 브리지로 하나의 대기열 만 만들고 메시지를 압축하여 보낼 바이트를 줄일 수 있습니다. – Gabriele
채널을 만드는 데 필요한 바이트 수준에 대해 잘 알고 있습니다. 배후에서 대기열을 만드는 과정에서 RMQ가하는 일에 익숙하지는 않지만 클라이언트로부터 입력이 필요하지는 않습니다. 그러므로 나는 지역간 연결을 통해 다른 일이 진행되고 있다고 결론을 내려야합니다. 성능 문제를 만들기 위해이 프로세스에서 교환 된 데이터가 거의 없습니다. – theMayer