论坛首页 Java企业应用论坛

jssdb:针对NoSQL数据库 SSDB的一个Java端连接池小项

浏览 4526 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-11-22   最后修改:2014-12-25
最新代码已托管到oschina;https://git.oschina.net/wjyuian/jssdb

        前两天,我在一个闲聊群中,看到同事给我推荐一个noSQL的数据库——SSDB 。说实话,再一次听到noSQL的时候,感觉这是另一个MongoDB,会有非常简单的安装配置、轻松写意的主从配置、甚至是分布式分片。不过,话虽如此,作为一个勇于接收新鲜事物的码农来说,对于这种我第一次听说的数据库,肯定不会就此放过它。

       进入ssdb的官网一看,乖乖,中文的各种介绍瞬间让我感到轻松不少,哈哈。然后就下了安装包,在公司的测试服务器上按照步骤,迅速完成了安装。当时只有单主服务器,不过命令行操作风格确实和redis几乎一模一样,相当熟悉。
接下来,我当然得去网上去查查,它到底有什么过人的地方,这不查不知道一查吓一跳啊http://www.ideawu.net/blog/ssdb。

       “SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别的列表数据. SSDB 同时也被国内外业界的众多互联网企业所使用, 如 QIHU 360, TOPGAME, 汽车之家, 比亚迪等.”

      “2014开源中国开源世界高峰论坛, 中国开源优秀项目奖项目”

      紧接着在这个网站上找到了关于SSDB另一个吸引人的特性——多主多从模式,不仅可以读写分离,而且都解决了单点故障。鄙人是一个在Java岛上蹦跶了5年的程序猿,自然对java的ssdb包格外关注。经过一番简单的测试,对java的api有了初步的使用经验,但是好像这个简单的包不支持主连接池啊,而连接池在java项目中的重要性是众所周知的。这个时候,本人就萌发了一个念头,自己仿照jedis连接池的方式,来写一个jssdb的小项目。虽然我知道,肯定已经有技术大拿在第一时间出品了java端支持ssdb的连接池项目了,例如ssdb4j。

      不过“码农,就是这么任性”,反正自己写写,练练手,顺便熟悉下GitHub的相关操作,于是就诞生了我这个Jssdb【https://github.com/wjyuian/jssdb】项目。它有如下特性:支持多主多从,宕机自动连接下一个可用服务器,服务器恢复后自动进入待连接队列(已测试)


------------------------------------------------------
属性文件中配置:
   MASTER_HOST_PORT_TIME=ip1:port1:timeout1;ip2:port2:timeout2
   SLAVER_HOST_PORT_TIME=ip3:port3:timeout3;ip4:port4:timeout4
------------------------------------------------------

在spring中集成jssdbClient,代码如下:
<bean id="jssdbPoolConfig" class="com.wj.jssdb.pool.JssdbPoolConfig" >    
     <property name="testOnBorrow" value="true"/> <!-- set for re-connect -->    
     <property name="maxActive" value="30" />     
     <property name="maxIdle" value="10" />     
     <property name="maxWait" value="1000" /> 
</bean>
<bean id="masterJssdbPool" class="com.wj.jssdb.pool.JssdbPool">    
     <constructor-arg index="0" ref="jssdbPoolConfig"/>    
     <constructor-arg index="1" type="String" value="${MASTER_HOST_PORT_TIME}" />
</bean>
<bean id="slaverJssdbPool" class="com.wj.jssdb.pool.JssdbPool">   
     <constructor-arg index="0" ref="jssdbPoolConfig"/>    
     <constructor-arg index="1" type="String" value="${SLAVER_HOST_PORT_TIME}" />
</bean>

<!-- write/read client -->
<bean id="jssdbClient" class="com.wj.jssdb.pool.JssdbClient">    
     <property name="masterJssdbPool" ref="masterJssdbPool" />    
     <property name="slaverJssdbPool" ref="slaverJssdbPool" />
</bean>


此项目还没有经过严格的性能测试,还不清楚连接池会不会有泄漏的情况。其中JssdbClient类中,目前只封装了我在项目中比较常用到的接口,还有一大部分接口没有实现,欢迎各位有兴趣的童鞋一同来完善这个小小的项目。
   发表时间:2014-11-27  
支持下任性的LZ
0 请登录后投票
   发表时间:2015-04-13  
Nosql详细讲解:http://dwz.cn/GFbSI
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics