gpt4 book ai didi

java - Java 客户端和 Java 之间的高性能消息传递 'Back End'

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:21 25 4
gpt4 key购买 nike

我有一个基本的 Java 消息传递应用程序,它可以将 JAVA 对象发送到远程服务器进行处理。我在网络的两端都利用了 Spring 支持,并使用 ActiveMQ 作为我的 JMS 提供者。它运行良好 - 我们在同时发送消息的 10 个客户端上没有遇到任何实际问题。

但是,我们现在真的很想扩大规模。客户数量可能会增加到大约 500 个。此外,每个客户端使用的带宽比最初宣布的问题更严重。

我想知道是否有人认为 ActiveMQ 是完成这项工作的正确工具 - 或者基于套接字的 TCP/UDP 是否会帮助我们更好地扩展。我们并不精通 AMQ 的一些“高级”功能,因为我们将它与基本的 Spring JMS 模板支持一起使用。

如有任何意见/想法,我们将不胜感激。

谢谢

最佳答案

在不知道您要达到的服务质量和 SLA 的情况下,我在评估任何应用程序的消息服务实现时遵循的基本规则如下...

性能优于可靠性

  • 快速消息传递
  • 可接受间歇性消息丢失
  • 消息是非持久的
  • 几乎没有成本

在这种情况下,像 ZeroMq(和其他类似产品)这样的产品就足够了,因为它在套接字级别工作,是分散的,提供极低的延迟并在大型分布式系统中扩展良好,并且是开源的,因此成本可以忽略不计。如果某些用例需要持久性和可靠性,请准备好实现传统消息传递中间件提供的开箱即用的自定义解决方案(持久性、持久性、复制等)。

平衡性能和可靠性

  • 性能和可靠性同等重要
  • 不接受丢失的消息
  • 消息是持久的
  • 需要一些支持
  • 成本相对较低

这就是 ActiveMQ、RabbitMq 等产品发挥作用的地方。基于代理的中间件解决了可靠性和持久性问题,同时提供了良好的性能和可扩展性。支持成本通常很低,中小企业无需倾家荡产就能负担得起。可以肯定地说,大多数消息传递需求都属于这一类,因为它提供了对性能和可靠性的可访问性,并且随着应用程序的成熟,您可以根据 future 的需求牺牲一个来代替另一个,而不会因为做出错误的选择而更换整个消息传递基础设施几年前。

可靠性优于性能

  • 可靠性最重要
  • 不能丢弃消息
  • 开箱即用的消息重新传递
  • 集群、HA、复制等开箱即用。
  • 需要企业级的全局支持和专业服务
  • 成本高

金融公司、交易系统、银行应用程序等通常有这样的要求,其中消息系统的可靠性具有附加的美元值(value),当事情不起作用时,金钱就会损失。因此,消息持久化、HA/容错、故障转移都非常重要。如果成本不是问题,请查看 WebLogic、Websphere、SonicMQ 或 TIBCO 等产品,...它们价格昂贵,但都提供可靠的可靠性、企业支持并且在负载下表现良好。我使用过 SonicMQ,它是一个很棒的产品,非常快速和可靠,但价格昂贵。

希望对你有帮助

关于java - Java 客户端和 Java 之间的高性能消息传递 'Back End',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com