zoukankan      html  css  js  c++  java
  • Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件

    引言

    上期我们对比了RocketMQ和Kafka在多Topic场景下,收发消息的对比测试,RocketMQ表现稳定,而Kafka的TPS在64个Topic时可以保持13万,到了128个Topic就跌至0.85万,导致无法完成测试。我们不禁要问:

    为什么看不到Kafka性能暴跌的趋势呢?

    今天的测试,就来排查一下这个问题,然后验证一下两个系统对外服务的稳定性。本次测试,要引入“稳定性测试”这个概念,那什么是稳定性测试呢?我们先来看一下定义:

    稳定性测试:测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标以及服务器的负载指标。

    好像有点抽象,我们还是看一个例子吧。

    下面的测试对比图,是用来评测汗血宝马和蒸汽机车谁快的一组竞速曲线:

    图1 汗血宝马和蒸汽火车的速度稳定性对比图1 汗血宝马和蒸汽火车的速度稳定性对比

    上图的横轴表示测试时间,纵轴表示火车和马的速度,可以看到,马的加速和最高速度均好于火车。但是由于体力原因,15分钟后,马就很难维持最高速度,只能稍作休息再加速,直至体力耗尽;而火车全程达到最高速度就基本不会变了。所以结论很明显,火车的速度稳定性优于汗血宝马。

    假想一下:如果测试时间只取15分钟会得到什么结论呢?汗血宝马无论是加速,还是最高速度,乃至单位时间内通过的路程均完胜火车。所以如果是要对长途运输做一个评测的话,那么正确的测试方式是——拉长测试时间,以观察被测对象的稳定性。

    OK,再次回到我们上次测试留下的疑问——暴跌无趋势。其原因很可能是,在早期的32Topic,64Topic时,Kafka就已经出现了下跌的趋势,只是我们压测的时间不够,算作测试通过了。

    本期测试,我们沿用上一期的测试方式,唯一不同的就是把压测时间从15分钟拉长到1小时,看看在较长的压力时间内,Kafka和RocketMQ哪一个产品对外服务更稳定。

    测试目的

    消息收发端共存的情况下,RocketMQ和Kafka各运行约1个小时,观察不同Topic数量时,Kafka、RocketMQ性能指标(TPS&响应时间)的波动性。

    测试场景

    默认每个Topic的分区数为8,每个Topic对应一个订阅者,逐步增加Topic的数量,这里性能是否抖动根据趋势图做直观的判断,数据如下:

    做完全部的测试场景后会发现,正如之前的猜测,Kafka在32和64个Topic时,就已经出现了不稳定的情况。下面看一下32和64个Topic的详细数据,如下图所示:

    图2. 32个Topic性能曲线对比图2. 32个Topic性能曲线对比

    蓝色Kafka的TPS曲线在18分钟以后,就开始上下波动,毫无规律,而RocketMQ则表现稳定。下面再看64个Topic的情况,如下图所示:

    图3. 64个Topic性能曲线对比图3. 64个Topic性能曲线对比

    图4. 64个Topic客户端发送响应时间对比图4. 64个Topic客户端发送响应时间对比

    Kafka的TPS在前20分钟保持稳定,并大幅度领先RocketMQ。20分钟后又开始出现不规则波动,这些波动直接导致响应时间的变化(图4),某个时刻Kafka的客户端响应时间会达到25毫秒,而RocketMQ全程都是5毫秒。
    这次的对比3个场景中, Kafka胜出一个,就是8个Topic的场景,如图5所示,由于Topic个数和分区数的限制,导致Kafka只适合小规模的业务系统。

    图5. 8个Topic性能曲线对比图5. 8个Topic性能曲线对比

    测试结论

    1. Topic数的增加对RocketMQ无影响,长时间运行服务非常稳定。
    2. Kafka 的Topic数量建议不要超过8个。8个以上的Topic会导致Kafka响应时间的剧烈波动,造成部分客户端的响应时间过长,影响客户端投递的实时性以及客户端的业务吞吐量。

    附录

    测试环境

    服务端为单机部署,机器配置如下:

    CPU24核
    内存 94G
    硬盘 Seagate Constellation ES (SATA 6Gb/s) 2.00 TB 7202 rpm
    网卡 1000Mb/s

    应用版本:

    消息中间件版本
    Kafka 0.8.2
    RocketMQ 3.4.8

    测试脚本:

    压力端Jmeter的java客户端
    消息大小 128 字节
    并发数 能达到服务端最大TPS的最优并发
    Topic分区数量 8
    刷盘策略 异步落盘

    未完待续

    经过本期的测试,RocketMQ在稳定性上也是完胜Kafka,如果只是小规模的业务,Kafka可以满足需求,但要是对业务的复杂度和稳定性有更高的要求,RocketMQ则是更好的选择。

  • 相关阅读:
    Jquery Validate验证是否为图片格式
    cosbench read异常解决办法。 Unable to verify integrity of data download. Client calculated content hash didn't match hash calculated by Amazon S3. The data may be corrupt.
    Ceph RGW 和 niginx 配置要点
    RGW/SWIFT对象存储性能测试工具--COSBench安装
    CEPH DAYS 2016 APAC ROADSHOW Ceph社区分享资料
    使用s3cmd操作ceph rgw
    gdb调试常用实用命令和core dump文件的生成
    What is GSLB
    转 ext文件系统及块组
    转 浅谈算法和数据结构: 十 平衡查找树之B树
  • 原文地址:https://www.cnblogs.com/felixzh/p/6198221.html
Copyright © 2011-2022 走看看