【问题标题】:Clustered ActiveMQ Artemis and producer/consumer load balancing configuration when broker fails代理失败时的集群 ActiveMQ Artemis 和生产者/消费者负载平衡配置
【发布时间】:2021-01-18 17:09:08
【问题描述】:

我创建了一个带有两个活动代理的 ActiveMQ Artemis 集群。我创建了一个自定义负载均衡器,以便能够根据我的要求和工作负载以静态方式最初分配我的队列。

<connectors>
  <connector name="broker1-connector">tcp://myhost1:61616</connector>
  <connector name="broker2-connector">tcp://myhost2:62616</connector>
</connectors>

<cluster-connections>
  <cluster-connection name="myhost1-cluster">
    <connector-ref>broker1-connector</connector-ref>
    <retry-interval>500</retry-interval>
    <use-duplicate-detection>true</use-duplicate-detection>
    <message-load-balancing>ON_DEMAND</message-load-balancing>
    <max-hops>1</max-hops>
    <static-connectors>
      <connector-ref>broker2-connector</connector-ref>
    </static-connectors>
  </cluster-connection>
</cluster-connections>

我的问题是,当 broker1 关闭时,基于此拓扑,我可以在 broker2 上重新创建其队列以避免丢失消息(通过在生产者 (tcp://myhost1:61616,tcp://myhost2:62616) 上使用连接字符串)。

但是当 broker1 再次可用时,我的生产者并没有意识到这一点,它仍然使用到 broker2 的连接(如果这很重要,broker2 redistribution-delay 设置为 0 并且没有注册消费者)。有没有办法或一些配置来恢复我的生产者只写给broker1。

这会影响我最初连接到 broker1 的消费者,我不确定是否还有某种方式/配置可以使它们在这些代理之间透明地反弹,或者我是否需要创建两个消费者(实际上其中一个将处于空闲状态) 每一个都针对相应的代理?

【问题讨论】:

  • 您是否进行了性能基准测试以确定您确实需要一个由 2 个代理组成的集群?
  • 实际上我即将进行性能测试。我的主要问题是我将在某个时间点安排几十万条消息(约 1/4 百万)。我需要能够尽快解决这个问题,因为我有 2 个代理可用,集群解决方案似乎是安全的方法
  • 如果你还没有测试,你怎么知道消息的数量是否真的是一个问题?此外,整体性能更有可能与您拥有的消费者和生产者的数量相关。 ActiveMQ Artemis 可以很好地扩展大量客户端,但如果您只有几个生产者和消费者连接,那么这将是您的性能瓶颈。
  • 另外,不清楚您所说的“我将在某个时间点安排几十万条消息(约 1/4 万条)”是什么意思。这是否意味着消息已经在队列中并计划在特定时间传递?这是否意味着生产者被安排在特定时间将这些消息发送到队列?另外,您所说的“我需要能够尽快应对”是什么意思?您是说您需要满足项目截止日期,还是需要经纪人/客户尽快处理消息?
  • 好吧,我最初的假设是,如果我可以拥有两个代理,我可以更轻松地扩展我的负载。在一个节点上拥有多个消费者和生产者会对性能产生影响。

标签: activemq-artemis


【解决方案1】:

代理无法告诉客户端它应该连接到另一个加入集群的节点。

我的建议是使用 HA 和故障恢复,这样当一个节点发生故障时,连接到该节点的所有客户端都故障转移到备份,然后当原始节点恢复时,所有客户端都故障恢复到原始节点。

您可能还会发现您实际上并不需要 2 个代理的集群。许多用户从不执行必要的性能测试来确认集群是必要的。他们只是假设集群是必要的。这样的假设可能会不必要地使平台的架构复杂化并浪费宝贵的资源。 ActiveMQ Artemis 的性能相当不错。在某些用例中,单个节点每秒可以处理数百万条消息。

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2012-01-10
    • 2018-02-10
    • 2012-08-04
    相关资源
    最近更新 更多