建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

小路~

发帖: 40粉丝: 11

级别 : 版主

发消息 + 关注

更新于2021年03月18日 10:48:52 503 1
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 自建开源Cassandra与GuassDB(for Cassandra)性能对比测试报告

自建开源Cassandra与GuassDB(for Cassandra)性能对比测试报告

1 概述

本文为自建开源Cassandra与GaussDB(for Cassandra)性能对比测试报告,完整描述了整个测试的环境、测试模型和详细的测试步骤,作为性能的参考。

2 环境描述

2.1 开源Cassandra测试环境

名称 Cassandra版本 集群节点数 操作系统版本 ECS规格
开源Cassandra集群 3.11.5 3 Centos7.4

通用增强型4vCPUs | 16GB

通用增强型8vCPUs |32GB

通用增强型16vCPUs | 64GB

通用增强型32vCPUs | 128GB

        2.2 GaussDB(for Cassandra)测试环境 

名称 Region 集群节点数 可用区 ECS规格
开源Cassandra集群 华东-上海二 3 可用区三

4vCPUs | 16GB

8vCPUs |32GB

16vCPUs | 64GB

32vCPUs | 128GB

2.3 压测工具环境

2.3.1  压测机器规格

名称 CPU 内存 操作系统
测试客户端ECS 16vCPUs 64G Centos7.4

          2.3.2  压测工具信息

测试工具 版本 下载地址
Ycsb 0.12.0 https://github.com/brianfrankcooper/YCSB

3 测试模型

业务模型编号 业务模型 负载描述
S2 _read95_update5 读95%,更新5%
S3 _update50_read50 更新50%,读50%
S4 _read65_update25_insert10 读65%,更新25%,写10%
S5 _insert90_read10 写90%,读10%

4  测试步骤

4.1 开源Cassandra测试详细步骤

4.1.1  购买机器

步骤一:登录弹性云服务器页面,点击右侧的购买弹性云服务器按钮,并按照相关提示,完成ecs服务器购买,其中一些关键参数的取值

区域:华东-上海二;

可用区:可用区3,

规格:通用增强型|c6.xlarge.4,

镜像:公共镜像-CentOS-CentOS 7.6 64bit(40GB);

数据盘:选择超高IO,大小为200G;

网络:选择任意vpc和子网;

其他参数:根据提示设置即可,非必选参数可不填。

                             1.png


步骤二:等待ecs 服务器创建完成之后,我们登录ecs服务器,可以用控制台的远程登录或者通过xshell工具用弹性ip连接;

步骤三:登录五台ecs云服务器,安装jre,执行yum install jre,按照提示,完成安装。

步骤四:我们把五台ecs分别命名为Cassandra-1(192.168.0.15),Cassandra-2(192.168.0.240),Cassandra-3(192.168.0.153),Cassandra-4(192.168.0.175),ycsb-Cassandra(192.168.0.60),其中,Cassandra-1,Cassandra-2,Cassandra-3,为我们的初始化Cassandra集群,Cassandra-4为我们后面扩容用的扩展服务器,ycsb-Cassandra作为压测服务器;

2.png


步骤五:登录五台ecs云服务器,安装Cassandra服务,并创建数据目录,按顺序执行下列命令:

下载Cassandra安装包,执行命令:wget http://mirror-hk.koddos.net/apache/Cassandra/3.11.5/apache-Cassandra-3.11.5-bin.tar.gz ;

解压安装包,tar -zxvf apache-Cassandra-3.11.5-bin.tar.gz -C /root/

更改安装目录:mv /root/apache-Cassandra-3.11.5 /usr/local/Cassandra

配置环境变量:echo “export PATH=/usr/local/Cassandra/bin:$PATH” >> /etc/profile

使环境变量生效:source /etc/profile

创建数据目录:mkdir /data

执行如下命令,回显如下,则表示安装成功:cqlsh

3.png

4.1.2  开源Cassandra集群配置操作手册

步骤一:配置Cassandra集群,并启动;登录Cassandra-1(192.168.0.15),Cassandra-2(192.168.0.240),Cassandra-3(192.168.0.153),进入/usr/local/Cassandra/conf 目录,

修改Cassandra-topology.properties文件,三个节点,这个配置文件,保持一致即可。修改内容如下,注释掉方框中内容,增加圆圈中的内容:

4.png



修改Cassandra.yaml文件,涉及以下几个参数:

data_file_directories:

     - /data

commitlog_directory: /usr/local/Cassandra/commitlog

saved_caches_directory: /usr/local/Cassandra/saved_caches

seed_provider:

    # Addresses of hosts that are deemed contact points.

    # Cassandra nodes use this list of hosts to find each other and learn

    # the topology of the ring.  You must change this if you are running

    # multiple nodes!

    - class_name: org.apache.Cassandra.locator.SimpleSeedProvider

      parameters:

          # seeds is actually a comma-delimited list of addresses.

          # Ex: "<ip1>,<ip2>,<ip3>"

          - seeds: "192.168.0.153,192.168.0.240,192.168.0.15"       ##填写集群三个节点的ip

listen_address: 192.168.0.153       #各节点的ip地址                   

rpc_address: 192.168.0.153                          #各节点的ip地址

修改完以上两个配置之后,我们现在可以启动Cassandra集群了,分别在三个节点执行:Cassandra –R &

集群的配置和启动,到此就结束了。

 

4.1.3  开源Cassandra集群扩容节点

步骤一:登录Cassandra-4节点,进入/usr/local/cassnadra/conf目录,编辑Cassandra-topology.properties文件,注释方框内容,添加圆圈中内容

5.png


修改Cassandra.yaml文件,关键参数如下:

data_file_directories:

     - /data

commitlog_directory: /usr/local/Cassandra/commitlog

saved_caches_directory: /usr/local/Cassandra/saved_caches

seed_provider:

    # Addresses of hosts that are deemed contact points.

    # Cassandra nodes use this list of hosts to find each other and learn

    # the topology of the ring.  You must change this if you are running

    # multiple nodes!

    - class_name: org.apache.Cassandra.locator.SimpleSeedProvider

      parameters:

          # seeds is actually a comma-delimited list of addresses.

          # Ex: "<ip1>,<ip2>,<ip3>"

          - seeds: "192.168.0.153,192.168.0.240,192.168.0.15"       ##填写集群三个seed节点的ip,和步骤一填写的值保持一致

listen_address: 192.168.0.175       #各节点的ip地址                   

rpc_address: 192.168.0.175                          #各节点的ip地址

登录Cassandra-1节点,停止所有节点的压缩,执行命令: nodetool disableautocompaction

登录Cassandra-1节点,停止正在执行的压缩,执行命令: nodetool stop COMPACTION

登录Cassandra-1节点,限制节点的迁移流量(这里我们设置为32MB/S,避免对业务造成太大的影响),执行命令: nodetool setstreamthroughput 32

登录Cassandra-4节点,启动Cassandra服务,执行: Cassandra –R &

步骤二:登录Cassandra-1,扩容过程中(这里请记录开始扩容的时间点t1),每30s执行一次nodetool status,当Cassandra-4节点的状态为UJ时,说明还在数据迁移,直到状态为UN时,迁移才算完成。迁移中如下图:

6.png

4.2  GaussDB(for Cassandra)测试步骤

4.2.1  购买Cassandra集群

步骤一:创建Cassandra实例,选择上海二区域,云数据库GaussDB(for Cassandra)服务,点击购买数据库实例,按照提示完成Cassandra实例购买,其中一些参数选择如下;

       性能规格:4核|16GB

       存储空间:200G

       节点数量:3

       虚拟私有云,内网安全组:和创建的弹性云服务器保持一致

7.png

步骤二:等待Cassandra实例创建完成,进行性能测试;

 

4.2.2  GaussDB(for Cassandra)集群扩容节点

步骤一:登录GaussDB(for Cassandra)控制台,点开实例详情页面,点击途中的”+”按钮,跳转到添加节点页面,选择添加1个节点,点击提交;

8.png

       步骤二:等待扩容完成,操作完成,观察在扩容过程中QPS 的浮动情况,可以看到在GaussDB(for Cassandra)场景下,对实例进行节点扩容,仅有十秒左右的qps小幅下降,对业务几乎无影响,扩容操作从下发到扩容完成,大约十分钟左右。在扩容操作完成之后,也可以跳回步骤八九,对测试过程数据进行分析。下面仅提供

9.png

4.3  ycsb测试详细步骤

登录ycsb-Cassandra,下载ycsb工具并安装,

curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz

使用终端工具如xshell通过客户端ECS实例弹性公网IP连接。

ycsb具体使用方法: https://github.com/brianfrankcooper/YCSB/tree/master/Cassandra

5 测试结果

5.1  性能结果

1.png


5.2 测试结论

1. GaussDB(for Cassandra)扩容较快,影响业务的时间较为短暂,为10s,且不涉及参数调整,扩容过程十分钟。

2. 社区版根据数据量的大小,参数的设置,整个扩容流程比较长,对性能的影响也参差不齐,50G预置数据,在实验场景中,扩容会超过30分钟。

3. 计算公式:最快迁移速度=(nodetool setstreamthroughput 32设置的迁移流量限制,默认为200Mbps)*原节点数。

4. 本测试过程中,最快的迁移速度=32Mbps/s*3=12MB/S=720MB/min=0.703GB/min,计算可得50GB数据在此场景下迁移的最快时间是:50/0.703=71.1分钟。

  • 各性能模型下,只要有读操作,同规格的GaussDB(for Cassandra)集群性能远高于社区版集群。

  • 社区版Cassandra对读非常不友好,GaussDB(for Cassandra)在读时延的性能表现上,要优于社区版数十倍。

  • 在写性能表现上,GaussDB(for Cassandra)与社区版基本保持一致。

  • 社区版和GaussDB(for Cassandra)在节点扩容过程中,对业务都有轻度的影响。

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

满心

发帖: 102粉丝: 3

发消息 + 关注

发表于2021年03月03日 09:12:03
直达本楼层的链接
沙发
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200