不知道服务的品质是什么和SLA的你想实现的,在评估任何应用程序通讯服务实现时,我遵循的基本规则如下......
性能超过可靠性
- 快速消息
- 间歇消息丢失可接受
条
- 消息是不持久的
- 几乎没有成本
在这种情况下,像ZeroMq(和其他人一样),产品就足够了,因为它工作在插座的水平,是分散的,提供了非常低在大型分布式系统中延迟和扩展性好,开源,因此成本可以忽略不计。如果某些用例需要持久性和可靠性,则准备实施传统消息中间件提供开箱即用(持久性,持久性,复制等)的定制解决方案。
平衡性能和可靠性
- 性能和可靠性同样重要
- 丢失的消息不被接受
- 是持久性消息
- 需要有一定的支持
- 成本相对较低
以下是ActiveMQ,RabbitMq等产品发挥作用的地方。基于代理的中间件解决了可靠性和持久性问题,同时提供了良好的性能和可扩展性。对于中小型企业来说,支持成本通常足够低,而不会打破银行业务。可以肯定地说,大多数消息传递需求属于这个类别,因为它提供了对性能和可靠性的可访问性,并且随着应用程序的成熟,您可以根据未来的需求为另一个牺牲另一个,而不会因为选择不当而丢失整个消息传递基础结构几年前。
可靠性在性能
- 可靠性是最重要的
- 消息不能被丢弃
- 消息交还出来的现成
- 集群,HA,复制等。可立即使用。
- 需要企业级的全球支持和专业服务
- 成本高
金融公司,交易系统,银行业务应用等,通常有这样的要求,其中信息系统的可靠性有一美元价值的附加对此,当事情不奏效时,金钱就会流失。因此,消息持久性,HA /容错性,故障切换都是非常重要的。如果成本不是问题,请查看像WebLogic,Websphere,SonicMQ或TIBCO等产品......这些产品非常昂贵,但都提供了可靠性,企业支持和负载下的良好性能。我已经使用SonicMQ,它是一款非常棒的产品,非常快速和可靠,但它需要一只手臂和一条腿。
希望它有帮助...
你可能需要解释你的情况多一点。消息频率/消息大小在播放。您是否有持续的消息?任何HA设置(任何共享磁盘或数据库持久存储)?你是否打算分发多个服务器的负载? 有一些非常轻便的基于套接字的解决方案,例如http://www.zeromq.org/但是,这可能需要您重新设计一些轮子,并进行适当的设计,而不是通过扩展AMQ/JMS解决方案。在高负载的情况下,你不能只添加一台服务器吗? –
'你能不能在高负荷情况下添加一台服务器......首先,你需要确定瓶颈发生的位置,以便在生产者,消费者或/和经纪人级别定位到哪里进行扩展。 – raffian