消息中间件:RocketMQ详讲 | 您所在的位置:网站首页 › rocketmq组和主题 › 消息中间件:RocketMQ详讲 |
消息中间件,一般也称为「消息队列」,主要的优点如下: 1、异步 2、解耦 3、削峰 关于上述三点的详细解释可以参考消息队列扫盲(RocketMQ 入门) Apache RocketMQ 模型
生产者: 用于在Apache RocketMQ中生成消息的实体。生产者是业务呼叫链接的上游部分。生产者是轻量级的、匿名的,并且没有身份。 生产者和主题有n到n的关系。一个生产者可以向多个主题发送消息,而一个主题可以从多个生产者接收消息。这种多对多关系促进了性能伸缩和灾难恢复。 主题: 在Apache RocketMQ中用于消息传输和存储的分组容器。主题是定义所有消息资源的顶级存储容器。主题是一个逻辑概念,而不是存储消息的实际单元。 使用限制: 一个主题可以包含一个或多个队列,但至少包含一个队列,使用者可以在创建主题时指定队列的数量,建议配置少量的队列,并避免添加不需要的队列。一个主题只能指定一种消息类型消费者组: 在Apache RocketMQ的发布/订阅模型中定义的一组独立的消费身份。消费者组用于集中管理运行在底层的使用者。同一组中的使用者必须彼此保持相同的消费逻辑和配置,并共同消费该组订阅的消息,以扩展该组的消费能力。 消费者: 用于在Apache RocketMQ中使用消息的实体。消费者是业务调用链接的下游部分,消费者必须属于特定的消费群体。 传输模型:点到点模型、发布/订阅模型消息中间件服务有两种常见的传输模型:点到点模型 和 发布/订阅模型。 点对点模型:
![]() 在使用广播消费的场景中,不需要负载均衡,因为每个消费组只包含一个消费者。 但是,在使用集群消费的场景中,每个消费组包含多个消费者。负载均衡策略可以帮助确定如何分配消息。 根据使用者类型的不同,负载均衡策略可分为以下两种类型: 基于消息的负载平衡:推送使用者和简单使用者的默认策略。 消息被均匀地分配给消费者组中的多个消费者。基于消息的负载平衡确保队列中的消息可以由多个消费者并发处理。但是,消息是随机发送给消费者的,这意味着不能指定如何将消息分配给消费者。 基于消息的负载平衡基于主题中单个消息的确认语义。在消费者接收到消息后,代理锁定该消息,以确保它对其他消费者是不可见的,直到它被使用或超时。这可以防止同一队列的消息被不同的使用者多次使用。 场景:由于队列中的消息被离散地分配给消费者,基于消息的负载平衡适用于大多数在线事件处理场景。![]() Apache RocketMQ遵循发布/订阅模式。多个消费者组可以订阅同一个队列。在这样的场景中,当消费者在消费消息后删除消息时,其他消费者将无法使用它。 为了防止这种情况发生,Apache RocketMQ使用消费者偏移量来管理不同消费者的消息消费进度。Apache RocketMQ不会在消费消息后立即删除消息。相反,Apache RocketMQ维护消费者组所使用的最新消息的记录,这也称为消费者偏移量。 在客户机重新启动的情况下,消费者能够基于保存在服务器中的消费者偏移量继续处理消息。如果消费者偏移量过期并被删除,则使用保存在服务器中的队列的MinOffset值(即有效队头数据)作为消费者偏移量。 不同于发布/订阅模型的概念,订阅是使用者在Apache RocketMQ中获取和处理消息的规则和状态设置。 Apache RocketMQ的订阅是基于消费者组和主题设计的。因此,订阅是指定消费组对主题的订阅。 一个主题到多个订阅者如下图: MessageTag是一个细粒度的消息分类属性,它允许将消息细分到主题级别以下。使用者通过订阅特定标记实现消息过滤。 |
CopyRight 2018-2019 实验室设备网 版权所有 |