TreodeDB测试及总结

参考资料:http://treode.github.io/store/ 官方网站

实际测试环境:3台有公网IP的服务器,一台阿里云,另两台公司内部

1host IP地址 IP1
java -jar server.jar -init -serve -host 0xF47F4AA7602F3857 -cell 0x3B69376FF6CE2141 store.db
2host IP地址 IP2
java -jar server.jar -init -serve
    -com.twitter.finatra.config.port :7071
    -com.twitter.finatra.config.adminPort :9991
    -host 0x4A348994B2B21DA3
    -cell 0x3B69376FF6CE2141
    -port 6279
    -hail 0xF47F4AA7602F3857=IP1:6278
    store2.db
3host 未使用   
java -jar server.jar -init -serve
    -com.twitter.finatra.config.port :7072
    -com.twitter.finatra.config.adminPort :9992
    -host 0x4FC3013EE2AE1737
    -cell 0x3B69376FF6CE2141
    -port 6280
    -hail 0xF47F4AA7602F3857=IP1:6278
    store3.db    
    
这时进行数据操作都是会直接返回500错误的,因为未将服务器编组,谁也不知道由谁来进行操作,即服务器启动是没有主次之分的.虽然有先后的区别
    
编组
curl -i -w' ' -XPUT -d@-
    -H'content-type: application/json'
    http://IP1:7070/atlas << EOF
[ {"hosts": ["0xF47F4AA7602F3857"] } ]
EOF

给一台机器插入数据
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v":"antelope"}'
    http://IP1:7070/table/0x1?key=apple

另一台机器也可以查询到    
curl -w' ' -i http://IP1:7070/table/0x1?key=apple

搞定

将三台服务器都设置进来.
curl -w' ' -i -XPUT -d@-
    -H'content-type: application/json'
    http://IP1:7070/atlas << EOF
[ { "hosts": ["0xF47F4AA7602F3857", "0x4A348994B2B21DA3", "0x4FC3013EE2AE1737"] } ]
EOF



给机器2插入数据
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v1":"antelope"}'
    http://IP2:7071/table/0x1?key=apple1

另一台机器也可以查询到    
curl -w' ' -i http://IP1:7070/table/0x1?key=apple1

这时关掉机器1上的程序
给机器2插入数据,两台机器时就访问不了了,500错误 报超时
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v2":"antelope"}'
    http://IP2:7071/table/0x1?key=apple2

重新启动机器1,机器2应用
给机器1插入数据
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v3":"antelope"}'
    http://IP1:7070/table/0x1?key=apple3

另一台机器也可以查询到    
curl -w' ' -i http://IP2:7071/table/0x1?key=apple3

关掉机器2上的应用
给机器1插入数据
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v4":"antelope"}'
    http://IP2:7071/table/0x1?key=apple4

查询不到,看样子需要启动机器3测试   
curl -w' ' -i http://IP2:7071/table/0x1?key=apple4


给机器1插入数据
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v5":"antelope"}'
    http://IP1:7070/table/0x1?key=apple5

另一台机器也可以查询到    
curl -w' ' -i http://IP1:7072/table/0x1?key=apple5
curl -w' ' -i http://IP2:7071/table/0x1?key=apple5

关掉机器2
机器1,机器3仍然能查询到数据
curl -w' ' -i http://IP1:7072/table/0x1?key=apple5
curl -w' ' -i http://IP1:7070/table/0x1?key=apple5

给机器插入数据,以验证服务器的断线数据同步
curl -w' ' -i -XPUT
    -H'content-type: application/json'
    -d'{"v6":"antelope"}'
    http://IP1:7070/table/0x1?key=apple6


curl -w' ' -i http://IP1:7072/table/0x1?key=apple6
机器2启动后进行查询,可以看到数据是同步的.
curl -w' ' -i http://IP2:7071/table/0x1?key=apple6

总结

1 安全性接口缺失,从目前的接口来看,没看到安全性控制类接口,全凭key就可以获取.商业化运行必须考虑这些.
2 数据访问类接口,可用,但读写速度并不均衡,在2MS~5000MS(最高值有可能受网络状况影响)
3 设备,主机操作类接口基本可用
4 对主机依赖性较大,且正常模式必须保持一主一备的模式运行.其余备机断线基本不受影响,
  主机断线备机则无法再提供服务,即使主机重启也不行,说明主备模式切换有可能存在问题

 
 
 
原文地址:https://www.cnblogs.com/decwang/p/4062351.html