【RocketMQ】开启DLedger高可用之后的坑:性能骤降30倍

2023-12-17 20:32

本文主要是介绍【RocketMQ】开启DLedger高可用之后的坑:性能骤降30倍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在做性能测试的时候发现,当集群开启了DLedger高可用之后,性能很差,TPS相差有30倍之多,详细过程记录如下:

集群信息
集群1:版本4.7.1,3Master,每个Master两个Slave,单Broker8G内存,异步复制,异步刷盘

集群2:所有配置一样,不同点是开启了DLedger

压测结果

使用相同参数进行压测:线程数:128,消息大小:128byte,压测结果对比如下:

集群1:

集群2:

可以看到,开启DLedger之后,性能骤降30倍,TPS只有3000+,有点懵,于是怀疑是否是集群2的配置错了,检查了一下集群2的Broker配置:

检查了配置,确定了是ASYNC_MASTER,但是从console看到的却不一样


可以看到运行时的Broker配置已经被改成了SYNC_MASTER的

于是带着疑问,看了一下代码

可以看到,LEADER角色的Broker,角色会被改成SYNC_MASTER

那为何会这样呢?

官方GitHub有两个issues:
https://github.com/apache/rocketmq/issues/2583

https://github.com/apache/rocketmq/issues/2278

大致的原因:开启DLedger之后,由于使用了Raft协议来保证集群的一致性,由于Raft主从复制的原理,和原来的Master/Slave模式的不一样,如果使用了Raft协议,主从复制是由Master发起,主动向每个从节点同步消息,而异步的方式是由从节点发起,向主节点上报offset,主节点再根据offset向从节点同步,所以开启了DLedger后,配置了ASNYC_MASTER会不生效,在最新的4.8.0中使用了Pipeline模式和批量复制,性能有所提升。

于是我重新搭建了个4.8.0的DLedger集群,压测结果如下:


单机TPS能达到1.4W+,性能确实提升不少,但是相比普通的Master/Slave模式,还是损失了一半左右的性能。

这篇关于【RocketMQ】开启DLedger高可用之后的坑:性能骤降30倍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/505755

相关文章

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr