代码之家  ›  专栏  ›  技术社区  ›  Chris Sears

动物园管理员和Rabbitmq/qpid在一起-杀戮过度还是一个好的组合?

  •  13
  • Chris Sears  · 技术社区  · 16 年前

    问候语,

    我正在评估多数据中心分布式系统的一些组件。我们将使用消息队列(通过rabbitmq或qpid),这样代理可以向其他代理发出异步请求,而不必担心寻址、路由、负载平衡或重新传输。

    在许多情况下,代理将与非设计用于高度并发访问的组件进行交互,因此需要进行锁定和跨代理协调以避免竞争条件。此外,我们希望系统能够自动响应代理或数据中心故障。

    考虑到上述用例, ZooKeeper 似乎很适合。但是我想知道尝试同时使用zk和消息队列是否有点过分。好像动物园管理员在做什么 能够 由我自己的集群管理器使用AMQP消息传递来完成,但这很难真正做到。另一方面,我看到了一些例子,其中ZooKeeper被用于实现消息队列,但我认为rabbitmq/qpid更适合这种情况。

    有人用过这样的组合吗?

    事先谢谢,

    -克里斯

    2 回复  |  直到 15 年前
        1
  •  5
  •   manku    15 年前

    这么晚才来,不过也许会有点用处。主要考虑的应该是系统的性能特征。如您所说,ZooKeeper能够使用分布式队列来实现任务分发系统,但目前,zk的读操作比写操作更为优化(这只在每秒1000次操作的范围内起作用)。如果您的吞吐量需求小于此值,那么使用zk来实现您的系统将减少运行时组件的数量并使其更简单。当然,在决定之前,您应该始终运行性能测试。

    分布式协调真的很难做到正确,所以我绝对推荐使用ZooKeeper,而不是自己滚动。

        2
  •  0
  •   Bubba88    16 年前

    不太确定ZooKeeper究竟是什么,但我想在您自己管理分布式同步和组服务之前,最好使用Apache中的组件(如果它很适合您的需要)。当然,您可以雇佣一个开发人员团队,尤其是为此目的,但这并不能保证更好的实现。

    我想,不管怎样,它都是作为一个单独的组件实现的,因为另一种方式可能会带来很大的复杂性,并减慢工作流的速度;所以ZooKeeper或任何类似的方式的偏好(对我来说)是显而易见的。

    当然,除非您处于项目工作流的全局优化阶段,否则我想最好使用rabbitmq或类似的方法(我甚至会强调,AMQP的CUZ实现(特别是商业实现)比您想到的所有方法都更可靠)。

    因此,我会同时选择这两种产品,仔细选择合适的第三方产品,但尽可能多地使用它们。这只是我的意见,谢谢阅读:)