编辑: hys520855 | 2019-07-11 |
01 发布日期 2019-05-05 华为技术有限公司 版权所有 ? 华为技术有限公司 2019.
保留一切权利. 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播. 商标声明 和其他华为商标均为华为技术有限公司的商标. 本文档提及的其他所有商标或注册商标,由各自的所有人拥有. 注意 您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内.除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声 明或保证. 由于产品版本升级或其他原因,本文档内容会不定期进行更新.除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保. 文档版本
01 (2019-05-05) 版权所有 ? 华为技术有限公司 i 目录1分布式消息服务概述.1
2 产品功能.4
3 应用场景.6
4 RabbitMQ 实例介绍.8
5 Kafka 专享实例与普通队列介绍.9 5.1 什么是分布式消息服务 Kafka.9 5.2 产品优势.10 5.3 典型应用场景.11 5.4 Kafka 专享实例与普通队列的差异.14 5.5 产品规格说明.16 5.6 使用限制与配额说明.17 5.7 Kafka 相关概念.17
6 Kafka 与RabbitMQ 的差异.20
7 与其他云服务的关系.23
8 使用限制与配额说明.25
9 基本概念.26
10 权限管理.28 分布式消息服务 产品介绍 目录文档版本
01 (2019-05-05) 版权所有 ? 华为技术有限公司 ii 1分布式消息服务概述 分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集 群技术的消息中间件服务,提供了可靠且可扩展的托管消息队列,用于收发消息和存 储消息. 使用DMS,您可以创建消息队列,将消息队列作为一个传输消息的中转站,存储应用 程序不同组件间传递的消息,从而做到在应用程序的不同组件之间传输消息时,不要 求各个组件同时处于可用状态. DMS生产和消费消息的示意图如图1-1所示. 分布式消息服务 产品介绍
1 分布式消息服务概述 文档版本
01 (2019-05-05) 版权所有 ? 华为技术有限公司
1 图1-1 DMS 的消息生产和消费的示意图 表1-1 说明 步骤 说明
1 生产者将消息M发送到队列中. 消息M在队列中冗余分布,存在多个副本.
2 消费者从队列中消费消息,获取到消息M. 在消费者消费消息M期间,消息M仍然停留在队列中,但消息M从被消费开始 的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费完 成,则DMS认为消息M未消费成功,将可以被继续消费.
3 消费者确认消息M消费完成,消息M将不能被该消费者所在消费组消费. 消息M仍然保持在队列中,并且可以被其它消费组消费,消息在队列中的保 留时间为至少72小时(除非队列被删除),72小时后将会被删除. 分布式消息服务 产品介绍
1 分布式消息服务概述 文档版本
01 (2019-05-05) 版权所有 ? 华为技术有限公司
2 说明 消费确认的动作只需要在使用API的时候做,在使用Console的时候不需要,因为在Console中的 消费动作已经包含了确认,消费后会自动确认. DMS是分布式的队列系统,队列中的消息分布存储,且每条消息存储多个副本,以实 现高可用性,如图1-2所示. 图1-2 消息队列 消息队列具有如下属性: l 消息顺序 普通队列支持 分区有序 和 全局有序 两种模式,Kafka队列均为分区有序. 分区有序的队列通过分布式处理,支持更高的并发,但由于队列的分布式特性, DMS无法保证能够以接收消息的精确顺序进行消费.如果用户要求保持顺序,建 议在每条消息中放置排序信息,以便在收到消息时对消息重新排序. 全局有序的队列对消息消费遵循先入先出规则(FIFO),适用于对消费顺序要求 较高的场景. l 至少一次传递 在极少数情况下,当用户接收或删除消息时,存储消息副本的服务器之一可能不 可用.如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且 在接收消息时可能会再次获得该消息副本. 这被称为 至少一次传递 ,因此,用户的应用程序应该设计为幂等的应用程序 (即,如果应用程序多次处理同一条消息,与单次成功处理该条消息的效果等 价). 分布式消息服务 产品介绍