http://blog.chinaunix.net/u3/93118/showart_2215041.html
Cassandra
Cassandra的主要特点就是它
不是一个数据库,而是由一堆数据库节点共同构成的一个
分布式网络服务,对Cassandra的一个
写操作,会
被
复制到其他节点上去,对Cassandra的
读操作,也会被
路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事
情,只管在群集里面添加节点就可以了。我看到有文章说Facebook的Cassandra群集有超过100台服务器构成的数据库群集。
本文目的 是
写-复制 和
读-路由 的功能测试
。
0. 环境
* java-1.6
* apache-cassandra-0.6.0
* 服务器 47 , 207 ( 目前测试服务器少,请大家 谅解。后面后添加多台 测试结果也会完善 )
1.
测试1.1 配置 (具体 可以 google
<安装和配置 Cassandra> )
* 47 和 207 服务配置都修改 -$> vim conf/storage-conf.xml
1.1.1 配置集群节点信息
<Seeds>
<Seed>192.168.102.47</Seed>
<Seed>192.168.102.207</Seed>
</Seeds>
1.1.2 配置集群节点之间交互的监听地址
直接留空即可:
<ListenAddress></ListenAddress>
1.1.3 配置Thrift Server监听的地址
直接留空即可:
<ThriftAddress></ThriftAddress>
1.1.4 配置集群的名称
每一个集群的名称都应该是不用的
<ClusterName>gpcuster.cnblogs.com</ClusterName>
1.1.5 开启节点自动加入集群的功能
<AutoBootstrap>true</AutoBootstrap>
1.1.6 配置数据的备份数 (特别注意这里配置为 1 就是 单机本地存储,其他机器路由取值 )
<ReplicationFactor>1</ReplicationFactor>
|
1.2 服务启动(
特别注意 : 服务器 的时间 要 同步 date )
207-serv$> ./bin/cassandra -f
47-serv$> ./bin/cassandra -f
1.2.0 先简单的 语法介绍 ( get , set , del )
set Keyspace1.Standard2['jsmith']['first'] = 'John'
\ \ \ \ \
\ \ \_ key \ \_ value
\ \ \_ column
\_ keyspace \_ column family
1.3 测试 ( 单机 结果
路由 )
1.3.1 客户端启动
207-cli$>./cassandra-cli --host 192.168.102.207 --port 9160
47-cli$>./cassandra-cli --host 192.168.102.47 --port 9160
1.3.2 : 207 insert 数据 ( 207 insert 结果
成功! )
207-cli$> set Keyspace1.Standard2['jsmith']['first'] = 'John'
207-cli$> get Keyspace1.Standard2['jsmith']['first']
=> (column=first, value=John, timestamp=1271303623077000)
1.3.3 47 路由 数据 查看 ( 47 路由 查询 数据
成功 )
47-cli$> get Keyspace1.Standard2['jsmith']['first']
=> (column=first, value=John, timestamp=1271303623077000)
207-服务器$> <ctrl+c> 关闭 207 服务器
47-cli$> get Keyspace1.Standard2['jsmith']['first']
#已经路由不到 207 取得结果,并且 第一次查询速度非常 慢 ,性能测试有待注意 Exception null
207-服务器$> ./bin/cassandra -f #启动
207-cli$>
# 需要重启 要不,什么都取不到 47-cli$> get Keyspace1.Standard2['jsmith']['first']
#又能正常 取得 => (column=first, value=John, timestamp=1271303623077000)
1.3.4 47 路由修改 (
成功 )
47-cli$> set Keyspace1.Standard2['jsmith']['first'] = '
liukaiyi'
47-cli$> get Keyspace1.Standard2['jsmith']['first']
#如果 2台服务器时间不同步,数据 可能就没有修改 ,根据 timestamp展现最后一条数据
=> (column=first, value=
liukaiyi, timestamp=1271303623077000)
1.4 测试 ( 双机 结果
复制 )
1.4.1 47 207 都 修改配置
, 配置数据的备份数 (特别注意这里配置为 2 就是都会存 数据)
<ReplicationFactor>2</ReplicationFactor>
1.4.2 服务重启启动
./bin/cassandra -f
1.4.3 客户端启动
207-cli$>./cassandra-cli --host 192.168.102.207 --port 9160
47-cli$>./cassandra-cli --host 192.168.102.47 --port 9160
1.4.4 测试
207-cli$> get Keyspace1.Standard2['jsmith']['first']
=> (column=first, value=
John, timestamp=1271304586125000)
47-cli$> get Keyspace1.Standard2['jsmith']['first']
#有一小段等待时间 => (column=first, value=
John, timestamp=1271304586125000)
207-服务器$> <ctrl+c> 关闭 207 服务器
47-cli$> get Keyspace1.Standard2['jsmith']['first']
#结果 还能查询,表明有同步复制
=> (column=first, value=
John,
timestamp=1271304586125000)
207-服务器$> ./bin/cassandra -f #启动
1.4.5 同步修改 (
成功 )
47-cli$> set Keyspace1.Standard2['jsmith']['first'] = '
liukaiyi'
47-cli$> get Keyspace1.Standard2['jsmith']['first']
=> (column=first, value=
liukaiyi,
timestamp=1271304586125000)
207-cli$> set Keyspace1.Standard2['jsmith']['first'] = 'liukaiyi_1'
47-cli$> get Keyspace1.Standard2['jsmith']['first']
#成功 => (column=first, value=
liukaiyi_1, timestamp=1271305603524000)
* 关闭 207 服务器 ,查询 47 还能查询 。
* 再次修改 first = liukaiyi_2 , 开启 服务 207 ,207 客户端 查询 firest = liukaiyi_2
posted on 2010-04-26 19:52
decker 阅读(792)
评论(0) 编辑 收藏 引用 所属分类:
分布式