消息中间件中术语

来源:互联网 发布:淘宝自动回复经典语句 编辑:程序博客网 时间:2024/06/05 20:44

Message :消息,消息队列中信息传递的载体。

Message ID:消息的全局唯一标识,由MQ系统自动生成,唯一标识某条消息。

Message key:消息的业务标识,有消息生产者设置,唯一标识某个业务逻辑。

Topic:消息主题,一级消息类型,通过Topic对消息进行分类。

Tag:消息标签,二级消息类型,用来进一步区分某个Topic下的消息分类。

producer : 消息生产者,负责产生消息,一般由业务系统负责产生消息。

consumer:消息消费者,负责消费消息,一般是后台系统负责异步消息。

Producer ID:一类producer的标识,这类Producer通常生成并发送一条消息,且发送逻辑一致。

Producer 实例:Producer的一个对象实例,不同的Producer实例可以运行在不同进程内或或者不同机器上,Producer实例线程安全,可以在同一个进程内多线程之间共享。

Consumer ID:一类conusmer的标识,这类Consumer通常接收并消费一类消息,并且消费逻辑一致。

Consumer实例:consumer的一个对象实例,不同Consumer实例可以运行在不同进程内或者不同机器上,一个Consumer实例内配置线程池消费消息。

Push Consumer:consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立刻回调Listener接口方法。

Pull Consumer:Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。

Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。

Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致。

Broker:消息中转角色,负责存储消息,转发消息,一般也称为Server,在JMS规范中称为Provider。

广播消费:

一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中 的Consumer Group概念可以认为在消息划分方便无意义。

在JMS规范中,相当于JMS publilsh/subscribe model

集群消费:

一个ConsumerGroup中的Consumer实例平均分摊消费消息,例如某个Topic有9条消息,其中一个ConsumerGroup有3个实例(可能是3个进程,或者3台机器),那么每股实例只消费其中的3条消息。

在JMS规范中,JMS point-to-point model与之类似,但是RocketMQ集群消费功能大等于PTP模型。

因为RocketMQ单个Cosumer Group内的消费者类似于PTP,但是一个Topic/Queue可以被对多个Consumer Group消费。

顺序消息:

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

普通顺序消息:

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

如果业务能容忍在集群异常的情况下(如某个Broker宕机或者重启)下,消息短暂的乱序,使用普通顺序方式比较合适。

严格顺序消息:

顺序消息的一种,无论正常异常情况下都能保证顺序,但是牺牲了分布式FailOVer特性,即Broker集群中只要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。

如果服务器部署为同步双写模式,此缺陷可通过备机自动切换为主避免,不过仍然会存在几分钟的服务不可用(依赖同步双写,主备切换,自动切换功能目前还未实现)

目前已知的应用只有数据库binlog同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序,推荐使用普通的顺序消息。


Message Queue

在RocketMQ中,所有的消息队列都是持久化,长度无限的数据结构,所谓的长度无限是指队列中的每个存储单元都是定长,访问其中的存储单元使用offset来访问,offset为java long类型,64位,理论上在100年内不会溢出,所以认为是长度无限的,另外队列中只保存最近几天的数据,之前的数据会按照过期时间来删除。

也可以认为Message Queue是一个长度无限的数组,offset就是下标。

消息过滤:订阅者可以根据消息标签(Tag)对消息进行过滤,确保订阅者最终只接收被过滤后的消息类型,消息过滤在MQ服务端完成。

消息轨迹:在一条消息从发布者到订阅者消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,用户能清晰定位消息从发布者发出,经由MQ服务端,投递给消息订阅者的完整链路,方便定位排查问题。

重置消费位点:以时间轴为坐标,在消息持久化存储的时间范围内(默认3天),重新设置消息订阅者对其订阅Topic的消费进度,设置完成后订阅者将接收设定时间点之后由消息发布者发送到MQ服务端的消息。


0 0
原创粉丝点击