rabbitmq - wan和lan上的主动有源解决方案

时间:2014-01-28 21:41:45

标签: rabbitmq messagebroker

来自主动/主动文件 -
     we have developed active/active high availability for queues

  

这个解决方案仍然需要一个RabbitMQ集群,这意味着它无法应对       与集群内的网络分区无缝连接,因此不是       建议在WAN上使用(当然,客户端仍可以连接       尽可能接近和尽可能远)

“不推荐在WAN上使用”是什么意思 我不明白这句话 - 如果我在ec2上购买三台机器,我需要建立域控制器/ DNS服务器吗? 这种限制意味着什么?为什么?

2 个答案:

答案 0 :(得分:0)

这意味着如果群集中有3个EC2实例,它们应位于同一数据中心。例如,不是美国东部和美国西部。 RabbitMQ使用Erlang的节点通信,非常健谈。低延迟通信对于拥有高性能群集至关重要。

*理想情况下甚至是同一个子网,但这并不总是可行的。

答案 1 :(得分:0)

复制是一个时间敏感的应用程序,这意味着必须完成时序假设才能使分布式状态在副本之间同步。

互联网是一个异步网络,每个定义,网络异步发展,无法对交付时间做出假设,无论是在MPLS(多协议标签交换)路径定义的情况下:BGP(边界网关协议)引入了许多不可预测性,路径可能非常不可预测,并且这会导致不可预测的延迟。

根据以上所述,不可预测的延迟是主动 - 主动复制的一个杀手因素(即,在副本之间同步镜像状态以达到一致的分布式状态)。

要考虑的另一个问题包括网络分区:在一组副本中,可以隔离一个或多个创建非一致副本的岛屿":让我们假设副本集 R = {R1,R2,R3,...,RN} ,出于网络连接的原因(例如BGP问题),副本的子集,如 { R1,R2,R3} 可以与其余的分离。网络分区意味着分布式状态不一致:副本的子集将是一致的,但在全局范围内,它们会独立地发展为损坏的分布式状态。

CAP Theorem处理WAN(广域网,即Internet)上的复制问题。它声明:

  

无法通过WAN或其他异步网络实现一致性,可用性和分区,需要为大规模分布式系统选择2个中的2个(例如,众所周知的NoSQL数据库的可用性和网络分区)。

回到最初的问题:根据上面的说法,该声明(来自RabbitMQ文档)试图以实用的方式总结我在上面强调的问题(即无法通过WAN实现主动 - 主动复制)。因此,如果您需要通过WAN复制Broker实例,则ShovelingFederation等技术通常用于RabbitMQ部署。