Cassandra 插入数据压力测试

我们的集群是双节点集群,机器配置比较垃圾,都是2个Linux VM.

Cassandra 插入数据压力测试

具体配置为:

cpu信息:在 /proc/cpuinfo

Cassandra 插入数据压力测试

内存信息:在/proc/meminfo

Cassandra 插入数据压力测试

我们用最基本的Cassandra thrift API 来实现插入50万条记录到这个Cassandra集群的负载。为了公平起见,我们不去设置备份,也就是把repliaction因子设为1,这样它不需要额外的写副本的开销:

Cassandra 插入数据压力测试

最终代码如下:

下面的类是工具类,因为在信息实际存在Cassandra内存中,所以这个工具类负责在内存和字符串之间转换:

/*   */ package com.charles.cassandra.util;  import Java.io.UnsupportedEncodingException; import java.nio.ByteBuffer;  /**  *  * Description: 这个类提供了一些Cassandra操作的工具类  *  * @author charles.wang  * @created May 19, 2012 11:18:27 AM  *   */ public class CassandraOperationUtil {          /**      *因为在Cassandra中,信息都存在内存的,所以都是以ByteBuffer形式存储的,但是ByteBuffer对于人类来说没有String可读性强      *所以这个方法可以吧字符串转为ByteBuffer      */     public static ByteBuffer stringToByteBuffer(String s) throws UnsupportedEncodingException{                  return ByteBuffer.wrap(s.getBytes("UTF-8"));     }          /**      *因为在Cassandra中,信息都存在内存的,所以都是以ByteBuffer形式存储的,但是ByteBuffer对于人类来说没有String可读性强      *所以对称的,这个方法吧ByteBuffer转为人类可读的字符串      */     public static String byteBufferToString (ByteBuffer b) throws UnsupportedEncodingException{                  //先构建一个字节数组         byte[] bytes = new byte[b.remaining()];         //吧bytebuffer里面的内容全部存入字节数组         b.get(bytes);         //然后把这些bytes转为String         return new String(bytes,"UTF-8");     }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/59c1ecc686e2406a845ceb42702e7dae.html