参考资料: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'\n' -XPUT -d@- \
    -H'content-type: application/json' \
    http://IP1:7070/atlas << EOF
[ {"hosts": ["0xF47F4AA7602F3857"] } ]
EOF

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

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

搞定

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

 
 
 

TreodeDB测试及总结的更多相关文章

  1. SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

    目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列.. 先谢谢大家的支持.. 我们来聊聊SignalR的性能监测与服务器的 ...

  2. Apache Ignite之集群应用测试

    集群发现机制 在Ignite中的集群号称是无中心的,而且支持命令行启动和嵌入应用启动,所以按理说很简单.而且集群有自动发现机制感觉对于懒人开发来说太好了,抱着试一试的心态测试一下吧. 在Apache ...

  3. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

    之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...

  4. TechEmpower 13轮测试中的ASP.NET Core性能测试

    应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚.在选择框架时, ...

  5. .NET Core系列 :4 测试

    2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...

  6. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  7. 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

    1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...

  8. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  9. CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

    上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...

随机推荐

  1. bzoj 2434: [Noi2011]阿狸的打字机

    #include<cstdio> #include<iostream> #include<cstring> #define M 100008 using names ...

  2. 12.Object-C--浅谈OC的内存管理机制

    昨天学习了OC的内存管理机制,今天想总结一下,所以接下来我要在这里bibi一下:OC的内存管理. 首先我要说的是,内存管理的作用范围. 内存管理的作用范围: 任何继承了NSObject的对象,对其他基 ...

  3. mongoose深层修改问题

    https://cnodejs.org/topic/50dde64ea7e6c6171a80a678 各位大神好,好久没写点什么东西了,最近也是cnode社区不知道咋的了都登录不进去,今天总算能回到这 ...

  4. CIO谈:基于K2 BPM平台怎么做报销?

    即时!可视!可控!高效! 面对报销系统四大业务目标,有一个对策——用K2! 演讲人:沈明 大鹏天然气CIO 查看完章分享内容请关注K2官方微信

  5. C++中的容器类详解

    一.STL容器类 STL(Standard Template Library)的六大组件:容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adap ...

  6. [转] C中的位域

    一.位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一 ...

  7. 算法导论 第六章 思考题 6-3 d叉堆

    d叉堆的实现相对于二叉堆变化不大,首先看它如何用数组表示. 考虑一个索引从1开始的数组,一个结点i最多可以有d个子结点,编号从id - (d - 2) 到 id + 1. 从而可以知道一个结点i的父结 ...

  8. Xtreme Toolkit Pro 免费下载地址

    Xtreme Toolkit Pro 是针对Windows程序员的一套先进的用户界面套包,强大的功能可使您的应用程序具有专业的.现代感的外观. Xtreme Toolkit Pro 由8个专业级的构件 ...

  9. 无法为表空间 ***中的段创建 INITIAL 区

    这是由于表空间不足引起的. 具体错误: 解决方案:扩展表空间

  10. iOS 关于UIWindow 的认识

    UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view ...