2015-01-08 9 views
5

米国東部には1つのRabbitMQノードがあり、他のゾーン(アイルランド、シドニーなど)にはプロデューサがあります。我々は、他のゾーンからのキューイング時に大きなパフォーマンスヒットを見ている。シドニー - >シドニー - >シドニーは50msですが、US-Eastキューは1秒です。多くの時間は、チャネルを作成してキューを宣言するのに費やされているようです。地理的な距離にわたる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) 
+0

ハード質問を、あなたはシャベルプラグインでみてくださいましたか? 多くの方法があります。たとえば、ブローカとバッファ集約の間にブリッジとして1つのキューしか作成せず、メッセージを圧縮して送信するバイト数を減らすことができます。 – Gabriele

+1

私はチャネルを作成するバイトレベルの詳細に精通しています。私は舞台裏で待ち行列を作成する過程でRMQが何をしているかに精通していませんが、クライアントからの入力は必要ないと思います。したがって、私は地域間のつながりに何か他のことが起こっていると結論づけなければなりません。パフォーマンス上の問題を引き起こすために、このプロセスで交換されるデータはほとんどありません。 – theMayer

答えて

1

は、ここでは、テストに使用しているコードです。

このページでは、RabbitMQのによって提供される分散型の各オプションの長所と短所を説明しますhttp://www.rabbitmq.com/distributed.html

関連する問題