SSDB连接器

连接器简介

SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库 , LevelDB 网络支持 ,Redis API 兼容, 支持 Redis 客户端 ,支持 KV, list, map(hash), zset(sorted set),qlist(队列) 等数据结构 , 客户端 API 支持的语言包括: C++,  PHP, Python, Java, Go ,持久化的队列服务,主从复制, 负载均衡 , SSDB连接器则充分的将其功能扩展开来,大大降低了使用门槛

 

1. SSDB是什么

SSDB的官司网是: http://ssdb.io/zh_cn/  .

SSDB是一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis。它有以下特性:

 

  • 替代 Redis 数据库, Redis 的 100 倍容量

  • LevelDB 网络支持, 使用 C/C++ 开发

  • Redis API 兼容, 支持 Redis 客户端

  • 适合存储集合数据, 如 list, hash, zset...

  • 客户端 API 支持的语言包括: C++, PHP, Python, Java, Go

  • 持久化的队列服务

  • 主从复制, 负载均衡

2. 常规使用流程

    我们在使用各种语言的驱动连接SSDB时,常规流程如下图所示:

 

虽然最终数据库是同一个,但每种语言都有对应的驱动程序,操作方式不尽相同。

3. 面临的问题

3.1 多项目、多语言环境下交互复杂,代码重复率高,维护困难

假如在体系中存在三个子系统,它们都需要调用getUserById方法,很可能是下图所示的结构:

 

 

图中的【1.直连】表示B系统用php实现getUserById方法,使用php驱动直接操作SSDB库。

图中的【2.直连】表示A系统用java实现getUserById方法,使用java驱动直接操作SSDB库。

图中的【3.API调用】表示C系统调用A系统的API。

 

这样的结构有一些问题:如果业务调整,getUserById的实现需要改变,比如不再返回注销的用户,那AB系统的代码都要调整。用以下的结构可以轻松搞定。

 

 

3.2 驱动的版本管理

当项目需要连接多个版本的SSDB时(比如老系统改造,系统二次开发),此问题尤为严重,驱动包的冲突会导致开发管理成本上升。

3.3 非主力系统使用SSDB比较麻烦

出于并发性的考虑,使用socket长连接操作SSDB是最为高效的方法(比如秒级并发>10000次的场景),这也是主力军系统通常的做法。但是在很多辅助系统的业务场景下,对SSDB的使用频次很低,比如后台监控、运维手动操作:

  • 查询key列表;

  • 查询key对应的value;

  • 对某个key对应的value修改、删除;

  • 刷新某个key(用途广泛,比如修改了一个菜单,需要刷新一下菜单列表缓存); 

对于低频次场景(秒并发<10000次),使用SSDB官方驱动会增加一些开发成本。如果使用HTTP访问SSDB,这个成本几乎为0。

SSDB使用时,大部份情况下读取频率远超写频率。实际应用中,通常是部份系统负责读取,部份系统负责写。在低频读写的系统中,使用HTTP访问SSDB是非常方便、高效的事情。

4.解决方案

  • 通过易源SSDB连接器,您可以用HTTP接口操作您自己的SSDB数据库,比如get、set、expire等全指令操作,也可以说您的SSDB数据库被“HTTP”化了。

  • 易源已经将一些常见SSDB操作封装成API接入点,通过几步简单的配置操作,就可以在代码中通过HTTP请求使用SSDB数据库。

  • 您可以轻松摆脱语言、驱动、框架的约束,只用简单的写几句代码就可以实现对SSDB的操作。

  • 在实际使用时,调用者只需要关心调用地址、输入参数、输出参数 三个元素,具体实现细节不需要关注。这样的特性非常适合于前后端分离开发。

使用易源平台操作SSDB,其流程如下图所示:



易源的SSDB连接器将SSDB数据库转化为通用数据源,并可以使用http接口进行全部数据库操作,包括但不限于增、删、查、改方法。

4.1 创建数据源

 

之后进入以下表单:

 

 

4.2 创建接入点时选择SSDB连接器

 

4.3 在接入点中选择SSDB数据源

 

4.4 支持的操作列表


通过HTTP接口访问SSDB,详情操作请点此查看

 

5. 性能问题

如果在同一个局域网下进行压力测试,直连时程序做充分优化,易源中转比直连方式的多消耗时间<1ms。网站或APP的响应时间在100ms-1000ms之间是可以接受的,也就是易源增加的时间是整体流程的0.01至0.001的比率,几乎可以忽略不计。这点开销,就像开车从北京到西安有1000公里,中间因为修路多走了1公里,总共由1000到1001公里,多走这1公里对全局可以忽略不计。

 

6. 安全问题

  • 易源平台和您签定合作协议,易源保证关键信息加密存储,保证数据安全不泄露,保证无用户授权绝对不连接数据源。

  • 易源公布对外IP,您可以设置IP白名单。

 

对于SSDB连接器,易源的IP是:

  • 121.41.60.109

  • 120.26.59.160

  • 120.26.61.225

  • 49.4.23.20

  • 129.211.129.137

 

 

 

 

连接器功能(使用场景)

用来替代或者与 Redis 配合存储十亿级别列表的数据

用来存储会话 Session, 网站定制, 缓存等数据, 并作为消息队列.

用来存储游戏战斗数据, 玩家日志, 游戏成就等.

适合以下条件时,使用易源的Oracle连接器是个很好的选择:

  1. 在二次开发系统中使用Oracle,但不想引入依赖包,也不想修改原有代码;
  2. 快速迭代的新系统,可能由多个开发语言子系统组成,PHP,JAVA, PYTHON等,如果用原生语言驱动,需要熟悉各驱动用法。而使用HTTP则调用方法一致。
  3. 系统与系统交互时,您需要提供接口给第三方的情况;通常的做法,就算最简单的查询也需要硬编码,然后重启系统,如果有接口参数更改则再次编码和重启系统。如果使用配置类型的HTTP接口,则创建和修改都可以在几分钟内完成。
  4. 您对IP白名单、可调权限、日志、监控、后端负载等有需求,如果您自己硬编码把Oracle数据暴露为接口,接口的管控功能需要自己做,而使用易源HTTP则天然具备管控功能; 
  5. 您已经对易源平台的操作、接口调用比较熟悉;