在不知道您要达到的服务质量和 SLA 的情况下,我在评估任何应用程序的消息传递服务实现时遵循的基本规则如下......
性能高于可靠性
- 快速消息传递
- 可接受的间歇性消息丢失
- 消息是非持久的
- 几乎没有成本
在这种情况下,像 ZeroMq(和其他类似产品)这样的产品就足够了,因为它在套接字级别工作,是分散的,提供极低的延迟并在大型分布式系统中很好地扩展,并且是开源的,因此成本可以忽略不计。如果某些用例需要持久性和可靠性,请准备好实施传统消息中间件提供的开箱即用的自定义解决方案(持久性、持久性、复制等)。
平衡性能和可靠性
- 性能和可靠性同样重要
- 不接受丢失的消息
- 消息是持久的
- 需要一些支持
- 成本相对较低
这就是 ActiveMQ、RabbitMq 等产品发挥作用的地方。基于代理的中间件解决了可靠性和持久性问题,同时提供了良好的性能和可扩展性。支持成本通常足够低,中小型公司可以在不破产的情况下负担得起。可以肯定地说,大多数消息传递需求都属于这一类,因为它提供了对性能和可靠性的可访问性,并且随着应用程序的成熟,您可以根据未来的需求为另一个牺牲一个,而不会因为做出错误的选择而更换整个消息传递基础架构几年前。
可靠性高于性能
- 可靠性最重要
- 消息不能被丢弃
- 开箱即用的消息重新传递
- 开箱即用的集群、HA、复制等。
- 需要企业级的全球支持和专业服务
- 成本高
金融公司、交易系统、银行应用程序等通常具有这样的要求,其中消息系统的可靠性具有附加的美元价值,并且当事情不起作用时,金钱就会丢失。因此,消息持久性、HA/容错、故障转移都非常重要。如果成本不是问题,请查看 WebLogic、Websphere、SonicMQ 或 TIBCO 等产品,它们价格昂贵,但都提供可靠的可靠性、企业支持并且在负载下表现良好。我使用过 SonicMQ,它是一款很棒的产品,非常快速和可靠,但它需要花费一条胳膊和一条腿。
希望能帮助到你...