【问题标题】:Using Apache Camel for Load Balancing使用 Apache Camel 进行负载平衡
【发布时间】:2012-06-04 23:52:56
【问题描述】:

我可以从另一台机器或 JVM 访问 SEDA 或 VM 队列吗?
我实际上想在 Camel 的帮助下实现负载平衡,但不想为此引入另一个消息传递框架。我只想使用一些内置队列将负载从生产者分配给不同的消费者。
可能吗?如果不是,那我有什么选择?
另一种方法:(拉动方法) 不确定新方法有多优化或新方法的优缺点是什么,所以请帮助我分析这种方法。
消息将被放入主队列,所有工作系统都将监听主队列。假设有 100,000 条消息被放入主队列,5 个工作系统正在监听它。工作系统会一一处理来自主队列的消息。这种方法有两大好处:

  1. 我无需担心向生产者注册我的工作系统。第六个系统刚刚启动并开始收听主队列。
  2. 我无需担心将消息发送到免费的消费者系统。当工作系统处理完一条消息后,它会从主队列中获取另一条消息。
    让我知道您对此的看法。

【问题讨论】:

    标签: apache load-balancing apache-camel


    【解决方案1】:

    SEDA 和 VM:// 只能在同一个 JVM 上工作。

    Java 消息传递中的负载平衡通常使用 JMS 和Competing Consumers pattern 来实现。您将消息发送到队列,并且多个消费者竞争处理它们。

    如果代理及其队列成为瓶颈 - 考虑使用扇出模式和代理网络。

    【讨论】:

    • 你太棒了!你建议的和我需要的一样!
    【解决方案2】:

    最简单的方法是使用 jms。如果您有 n 条路由在同一个 jms 队列上侦听,那么它们将自动进行负载平衡。如果一个消失了,负载将在其余的负载上得到平衡。我建议从 ActiveMQ 开始,因为它很容易设置并且与 Camel 很好地集成。为了使代理具有高可用性,您可以设置两个独立的代理或为每个骆驼实例设置一个嵌入式代理。

    【讨论】:

      【解决方案3】:

      SEDA 和 VM 端点分别对主机上下文和 JVM 有效。为了促进 JVM 到 JVM 的消息传递,您需要使用无线协议组件,例如但不限于 Mina、HTTP 或 JMS。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 2018-12-20
        • 2013-03-24
        • 1970-01-01
        • 2016-12-28
        • 2019-10-20
        相关资源
        最近更新 更多