消息服务metaq Notify

Notify在设计思路上与传统的MQ有一定的不同,他的核心设计理念是
1. 为了消息堆积而设计系统。消费者出现问题是个非常常见的情况,而消息系统则必须能够在后端消费不稳定的情况下,仍然能够保证用户写入的正常并且TPS不降。
2. 无单点,可自由扩展的设计

MetaQ对外提供的是一个队列服务,内部实现也是完全的队列模型,这里的队列是持久化的磁盘队列,具有非常高的可靠性,并且充分利用了操作系统cache来提高性能。

  • 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。
  • Producer、Consumer、队列都可以分布式。
  • Producer向一些队列轮流发送消息,队列集合称为Topic,Consumer如果做广播消费,则一个consumer实例消费这个Topic对应的所有队列,如果做集群消费,则多个Consumer实例平均消费这个topic对应的队列集合。
  • 能够保证严格的消息顺序
  • 提供丰富的消息拉取模式
  • 高效的订阅者水平扩展能力
  • 实时的消息订阅机制
  • 亿级消息堆积能力


    n  广播消费

    一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次。

    在CORBA Notification规范中,消费方式都属于广播消费。

    n  集群消费

    一个Consumer Group中的Consumer实例平均分摊消费消息,类似于JMS规范中的Point-to-Point Messaging

    特点如下:

    u  Each message has only one consumer.

    u  A sender and a receiver of a message have no timing dependencies. The receiver can fetch the message whether or not it was running when the client sent the message.

    u  The receiver acknowledges the successful processing of a message.

    扫描二维码关注公众号,回复: 323219 查看本文章

    n  主动消费

    Consumer主动向Broker发起获取消息请求,控制权完全在于Consumer应用。

    类似于JMS规范中描述的Synchronously方式消费

    n  被动消费

    Consumer注册一个Callback接口,由Metaq后台自动从Broker接收消息,并回调Callback接口。

    类似于JMS规范中的描述的Asynchronously方式消费

    n  顺序消息

    消费消息的顺序要同发送消息的顺序一致,在Metaq中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送的顺序去消费消息。

    n  普通顺序消息

    顺序消息的一种,正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致。

    n  严格顺序消息

    顺序消息的一种,无论正常异常情况都能保证顺序,但是牺牲了分布式Failover特性。

猜你喜欢

转载自zeraw.iteye.com/blog/2333325