天天看点

阿里云ONS和微软Azure Service Bus的架构和特性比较阿里云ONS和微软Azure Service bus的架构和特性比较

阿里云ONS和微软Azure Service Bus的架构和特性比较阿里云ONS和微软Azure Service bus的架构和特性比较

一、如图所示,ProducerID1 的producer 实例有三个,可能是部署在三个机器上的三个进程,也可能是一台机

器上的三个进程。每个实例都会发送TopicA 的消息。同理,ProducerID2 与之类似。

二、ConsumerID1 有三个实例,如果是集群消费方式,那么每个实例消费TopicA 的1/3 的消息,如果是广播消

费方式,那么每个实例消费全量的消息。另外,TopicA 也可以被另外的ConsumerId 再次消费。

阿里云ONS和微软Azure Service Bus的架构和特性比较阿里云ONS和微软Azure Service bus的架构和特性比较

一、与阿里云类似,微软的Service bus中消息也可以由多个进程产生。

二、消费Topic中消息由Consumer进程在创建subscription(订阅)时开始监听所有当前Topic中产生的消息,当前subscription中的消息被消费之后,

在当前subscription中就没有了,但是在当前Topic的其他subscription中还存在,其实就是Topic把产生的消息都广播发送到每一个当前Topic下的subscription下。

这和阿里云的广播不一样,阿里云广播消息是指Product进程广播给Consumer进程,而service bus是Product进程发送消息给Topic,由Topic广播给每个Topic下的subscription,然后由每个consumer独自去消费每一个subscription中的消息。service bus除了提供Topic,还有Queues,Relays,Notification Hubs等类型。

1.ONS消息不支持有序,service bus中Queues支持消息有序。

2.ONS消息只保存3天,service bus中的消息如果不被消费且其当前Topic存在,就永远不会被删除。

3.ONS不能保证消息重复,service bus消息不重复。

4.ONS暂时只支持Java客户端,service bus支持.net,java,php,phthon:http://msdn.microsoft.com/en-us/library/azure/jj841071.aspx

5.ONS新创建的 ConsumerId从哪里开始消费

a) 如果订阅的 topic 第一次发送消息是在3天内,那么这个新创建的 ConsumerId默认从服务器保存的最早消息开始消费

b) 如果订阅的topic第一次发送消息是在 3天前,那么这个新创建的ConsumerId默认从服务器保存的最晚消息开始消费 ,也就是队列尾部历史不会再消费

c) 如果这个ConsumerId是第二次启动,那么从上消费的位置开始消费

d) 用户如果想从特定位置开始消费,可以通过ONS Console上消 费进度重置功能,指定到具体的时间开始上消费进度重置功能,每次重置只针对特定 ConsumerId下的特定 下的特定 Topic,不会影响其他ConsumerId。

关于第5点,这个service bus和ONS类似,不过不是3天,而是Topic创建和subscription创建的时间差,个人认为ONS中的CunsumerId和service bus中的subscriptionId很像,ONS有时间定位的功能,但是service bus目前没有,必须从头到尾一条一条取。

注:个人透露一点,service bus经常在网络传输过程中不稳定,ONS有可能也有类似的问题,在实际项目中,我们使用了SQL Server+WCF替换方案。