【问题标题】:Factors Affected for Low Performance of middleware Messaging Softwares影响中间件通讯软件性能低下的因素
【发布时间】:2011-11-17 14:32:08
【问题描述】:

我计划在我的 Web 应用程序中集成消息传递中间件。现在我正在测试不同的消息中间件软件,如 RabbitMQ、JMS、HornetQ 等。 该软件提供的示例正在运行,但没有提供预期的结果。
那么,我想知道哪些是提高性能的因素应该引起人们的注意?
开发人员应该注意哪些方面来提高中间件消息传递软件的性能?

【问题讨论】:

    标签: jms messaging rabbitmq middleware hornetq


    【解决方案1】:

    我是 HornetQ 的项目负责人,但我会尽量给你一个通用的答案,可以应用于你选择的任何消息系统。

    我看到的一个常见问题是人们问为什么单个生产者/单个消费者不会给您预期的性能。

    当您发送消息并立即要求确认时,您需要等待:

    • 从客户端到服务器的消息传输
    • 消息被持久化在磁盘上
    • 服务器通过向客户端发送回调来确认收到消息

    类似地,当您收到一条消息时,您会向服务器确认:

    • ACK 从客户端发送到服务器
    • ACK 被持久化
    • 服务器发回一个回调,说明回调已完成

    如果您需要对所有消息发送和消息确认进行确认,则需要等待这些步骤,因为您有一个硬件涉及持久化磁盘和在网络上发送比特。

    消息系统将尝试与许多生产者和消费者一起扩大规模。也就是说,如果许多生产者都应该使用服务器上为所有消费者共享的可用资源。

    有一些方法可以加速单个生产者或单个消费者:

    • 一个是使用事务。因此,您可以最大限度地减少在磁盘上执行的块和同步,同时在服务器上持久化并在网络上往返。 (这实际上在任何数据库上都是一样的)

    • 另一种方法是使用回调而不是阻塞消费者。 (JMS 2 提出了一个类似于 HornetQ 上的 ConfirmationHandler 的回调)。

    另外:我认识的大多数供应商都会在他们的文档中有一个性能部分,其中包含对该特定产品的要求和建议。您应该单独查看每个产品

    【讨论】:

    • 您能接受答案还是讨论为什么不接受?如果您不接受答案,请提供一些信息说明原因,以便我们为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多