跨地理距离的RabbitMQ延迟问题

跨地理距离的RabbitMQ延迟问题,rabbitmq,Rabbitmq,我们在美国东部有一个RabbitMQ节点,其他地区(爱尔兰、悉尼等)有生产商。当从其他区域排队时,我们看到了巨大的性能损失。悉尼->美国东部排队是1s,而悉尼->悉尼排队是50ms。似乎很多时间都花在创建通道和声明队列上 我们有哪些选项来提高性能?我们可以看看某种分布式RabbitMQ集群,每个区域都有一个节点吗?这对我们有帮助吗 下面是我们用来测试的代码: var queueConnection = amqp.connect("OUR amqp servers in each region")

我们在美国东部有一个RabbitMQ节点,其他地区(爱尔兰、悉尼等)有生产商。当从其他区域排队时,我们看到了巨大的性能损失。悉尼->美国东部排队是1s,而悉尼->悉尼排队是50ms。似乎很多时间都花在创建通道和声明队列上

我们有哪些选项来提高性能?我们可以看看某种分布式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提供的每个分布式选项的优缺点:

很难回答的问题,您是否尝试过铲子插件?有很多方法,例如,您可以只创建一个队列作为代理和缓冲区聚合之间的桥梁,并压缩消息以减少必须发送的字节。我熟悉创建通道的字节级详细信息。虽然我不太熟悉RMQ在幕后创建队列的过程中所做的工作,但我认为不需要客户机提供任何输入。因此,我必须得出结论,在你们的区域间联系中还发生了其他一些事情。在这个过程中,几乎没有足够的数据交换来产生性能问题。