You need to enable JavaScript to run this app.
导航

跨可用区部署 RocketMQ 实例

最近更新时间2024.02.18 14:47:27

首次发布时间2023.11.17 15:45:26

跨可用区部署可提高实例的可用性,本文档介绍跨可用区部署方式对于实例的影响。

注意事项

创建跨可用区部署的 RocketMQ 实例前,应确认以下问题:

  • 部署 RocketMQ 客户端的 ECS 和 RocketMQ 实例所在的可用区应尽量一致,避免故障域不对等的问题。
  • 跨可用区部署的实例可能会出现 2ms~3ms 的网络延迟,确认单请求时延上升对业务是否有影响。
  • 客户端使用同步方式调用接口的情况下,实例的吞吐性能可能会下降,需要考虑预留一定的性能空间、升配到更高的计算规格或改为异步调用接口。

设置跨可用区部署

消息队列 RocketMQ版支持跨可用区部署 RocketMQ 实例,即支持多 AZ。跨可用区部署的实例具备更强的容灾能力,全方位保障集群数据的可靠性和服务的可用性。
在购买 RocketMQ 实例时,部署方式设置为跨可用区部署,并选择 3 个可用区即可实现跨可用区容灾。创建实例后,不可修改实例的部署方式,即单可用区部署的实例无法切换为跨可用区部署。跨可用区部署的实例在使用姿势上对客户端没有区别。但是建议客户端机器也分散到和服务端相同的多个可用区部署,以提升整体服务的可用性,也可以避免可用区孤立场景下的故障问题。
对于已购买的 RocketMQ 实例,您可以在 RocketMQ 实例的实例详情页签中基本信息区域找到可用区一行,查看可用区数量。如果可用区数量大于 1,表示该实例为跨可用区部署的实例。

可用性与故障域

跨可用区部署的实例,网络资源、计算节点、存储节点等底层资源均会分散在多个可用区,故障在多个可用区之间互相隔离,确保单个可用区内的底层资源故障不影响其他可用区的节点。某个可用区内如果出现计算、存储等类型故障,在集群内部均可以切换到其他可用区,保障业务持续可用。如果出现一个以上的可用区故障依然会出现可用性问题。
如果两个可用区之间出现网络故障,即可用区之间网络不通,此时数据可以正常写入,但是可能会影响副本数据的同步进度。

性能影响

跨可用区部署的场景下,包括副本在内的数据会分散到多个可用区,数据请求链路也会分散至多个可用区,即默认不亲和,而多个可用区之间的网络延迟会 0.5~1ms 范围内,比可用区内略高,因此跨可用区部署对请求时延会有一定的影响,也会增加副本同步间的延迟时长。
RocketMQ 实例中,数据会自动同步到副本,因此吞吐量峰值能力影响对比单可用区会有一定的性能损耗。通常情况下,同步发送性能损耗小于 20%,异步发送小于 10%。