Message Queues是地理分布式部署的正确工具吗?

时间:2013-01-10 00:31:25

标签: synchronization message-queue amqp

我们的场景如下(我猜这不是唯一的):我们在两个不同的主机托管设施中拥有数据库支持的Web应用程序。一个设施具有主数据库,另一个具有从设备。

即使master数据库处于脱机状态,我们也希望slave工具继续工作(如有必要,可以在受限模式下工作)。当master数据库进行备份时,数据应该同步。

我在想我可以使用邮件队列来发送数据更新说明。如果从服务器和主服务器之间断开连接,则从服务器中的消息队列将保留其消息。当连接恢复时,消息将流动,主服务器将更新数据库。

我错过了什么吗?这对消息队列不是很好用吗?

2 个答案:

答案 0 :(得分:2)

是的,但它并不像在数据中心使用消息队列那么简单。您可能需要在两个持久性消息集群之间建立桥接架构。一种方法是在每个物理位置设置RabbitMQ代理(或代理群集),然后使用其他协议桥接这些位置,例如使用此ZeroMQ插件https://github.com/rabbitmq/rmq-0mq/wiki

最终结果是消息代理的联合。根据数据量和位置之间的距离,您可能希望使用压缩的VPN链接进行体系结构压缩,或者在群集之间进行某种批处理和压缩。

但这不是唯一的方法。另一种方法是拥有一个中央RabbitMQ集群,并通过Internet使用SSL客户端连接到此集群。如果位置相对靠近,这将是更好的解决方案。例如,如果所有地点都在美国东北部,这就是我要这样做的方式。但如果这些地点位于美国,欧洲和亚洲,那么最好使用联合解决方案在经纪人集群之间桥接数据。

在一个非常大的组织中,比如三大洲的100个地点,您可能希望将两种解决方案结合起来。

但是,如果这真的就像拥有主数据库和副本的两个位置一样简单,我认为你最好坚持使用标准的数据库复制解决方案,并考虑用它们之间的压缩链接补充它,如果数据真的很大。我知道的复制解决方案已经处理了保存更新,以便在主服务器和从服务器之间的链接断开时稍后发送。在这种情况下最好忘记AMQP。

答案 1 :(得分:0)

IBM DB2有一个名为"Q Replication"的工具,用于将已提交的事务数据从DB2(R)UDB源复制到目标。 Q Replication使用WebSphere MQ个队列和两个程序Q CaptureQ Apply来复制数据。 Q Capture程序在源上运行,捕获数据并发送到WebSphere MQ队列。 Q Apply程序在目标上运行,从WebSphere MQ队列接收消息并将数据应用于目标数据库。

您可以找到有关Q Replication here

的更多信息