这七个关于分布式消息服务的常见问题,你知道吗?
分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供了可靠且可扩展的托管消息队列,用于收发消息和存储消息。
使用DMS,您可以创建消息队列,将消息队列作为一个传输消息的中转站,存储应用程序不同组件间传递的消息,从而做到在应用程序的不同组件之间传输消息时,不要求各个组件同时处于可用状态。
那么我们在使用分布式消息服务的过程中会遇到哪些常见的问题呢?
下面小编就来问问这七个基本的常见问题,看看大伙是不是都知道呢
一、是否提供对消息的先入先出(FIFO)访问?
支持。DMS创建队列时,可以选择“普通队列 > 全局有序”。全局有序的队列适用于对顺序要求较高的场景,严格按照接收消息的顺序消费消息;分区有序的队列适用于需要高并发度的场景,由于采用分布式设计,不能保证完全按照接收消息的顺序消费消息。
二、是否提供“至少一次”的消息交付功能?
是的。分布式消息服务会在多台服务器上存储消息的副本,以实现冗余和高可用性。在极少数情况下,当您接收或删除消息时,存储消息副本的服务器之一可能不可用。如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且您在接收消息时可能会再次获得该消息副本。这被称为“至少一次”交付。因此,您必须将您的应用程序设计为幂等的应用程序(即,如果您的应用程序多次处理同一条消息,则不得受到不利影响)。
三、消息在服务器保存多长时间?
普通队列的消息保存至少72小时,超过72小时的消息将会被删除。Kafka队列的消息保存时间在创建队列时可以设置,可设置范围为1~72小时。
四、消息的长度限制是多少?
消息负载的总大小不超过512KB(包括消息体、消息标签和消息属性)。
在管理控制台生产消息时,每次只能发送一条消息,界面输入框会提示剩余可输入的消息大小,超过512KB后,无法单击“确定”按钮进行生产消息。
直接使用API接口进行生产消息时,单次可批量发送多条消息,总负载不能超过512KB,如果超过512KB会生产消息失败,提示“The message size is {message size}, larger than the size limit {max allowed size}.”。
使用Kafka SDK接口生产消息到Kafka队列时,单条消息最大限制为10MB。使用管理控制台生产消息到Kafka队列时,最大限制依然是512KB。
五、是否能保证消息不重复?
不能保证消息不重,但是在绝大部分情况下,消息是不重复的,在网络异常情况下,会出现消息重复。
六、如何保证消息队列中的消息是安全的?
分布式消息服务提供了安全可靠的身份验证机制,确保消息队列受到保护,防止遭到未经授权的访问。
- 通过控制台管理消息时,必须完成口令认证,并受到domain以及project限制。
- 使用API接口进行消息发送与消费,需先完成token认证,并在业务接口通信请求报文头中携带获取到的token。同时还需要使用AK(Access Key ID)、SK(Secret Access Key)对请求进行签名,才能通过API网关发送请求。关于token认证以及AK/SK文件获取,请参考《分布式消息服务 API参考》。
七、每个项目可以创建多少队列?
每个用户可以有多个项目(project),每个project默认最多可以创建30个队列,如果您想创建更多队列,请联系客服申请增加配额。
好啦今天小编就跟大家分享这七个问题啦,是不是都特别常见,但是很重要的问题呢?如果你有什么疑问需要答疑解惑,可以参考华为云帮助中心哦,这里有更详细的解答。