• 2014-11-15

    SSDB源码分析 – 服务器的启动过程

    Views: 73138 | 1 Comment

    SSDB 服务器进程的 main 函数在 ssdb-server.cpp 文件里, 启动过程用伪代码表示如下:

    welcome();
    parse_args(argc, argv);
    conf = Config::load();
    data_db = SSDB::open(conf);
    meta_db = SSDB::open(conf);
    net = NetworkServer::init(*conf);
    // 初始化业务处理
    SSDBServer *ss = new SSDBServer(data_db, meta_db, *conf, net);
    // 处理网络请求
    net.serve();
    

    这个主体的启动过程其实很简单. SSDB 库(libssdb)是封装好的, 直接打开数据库文件即可. 而 NetworkServer 也是封装好的网络模块(libnet), 之前有介绍过(SSDB 源码分析 – 网络框架概述).

    SSDBServer 是比较复杂的地方, 因为它将 libssdb 和 libnet 整合起来, 同时还整合主从同步功能, 所以需要详细介绍.

    在 serv.cpp 的 SSDBServer 构造函数里:

    reg_procs(net);
    backend_sync = new BackendSync(ssdb);
    expiration = new ExpirationHandler(ssdb);
    start_slaves();
    

    首先, 给网络处理器注册命令处理函数, libnet 是业务无关的, 当 SSDB 服务器增加了一个新命令, 就要注册这个命令的处理函数, 这样当从客户端收到一个请求报文时, 服务器才知道如何处理.

    接着会启动主从同步的处理器 BackendSync. 当网络服务器收到一个新的 slave 节点连接进来时, 请求会被转给 BackendSync 处理, BackendSync 将 binlog 发给 slave 处理.

    关于 key 过期的处理是独立于 libssdb 的, 在 ExpirationHandler 类里处理.

    由于每一个 SSDB 服务器节点既能作为 master, 同时也能作为 slave, 所以, 还需要根据配置文件决定是否启动 slave 处理器.

    Posted by ideawu at 2014-11-15 15:02:29
  • 2014-11-09

    SSDB 源码分析 – 网络框架概述

    Views: 42552 | 2 Comments

    最近, 我对 SSDB 的代码进行了重构, 分离出了 libutil, libnet, libssdb 几个高度可复用的模块, 代码的模块化更清晰, 也更容易进行 SSDB 的源码分析.

    这一次要分析的是网络模块. 网络模块包括一个服务器的代码框架和运行框架, 以及网络协议设计和解析.

    协议

    SSDB 的网络协议非常简单, 而且是业务无关的, 所以你可以把 SSDB 的网络协议应用于几乎所有类型的应用! 只要遵循 SSDB 的网络协议, 你就可以使用 ssdb-cli 命令行工具来连接, 与服务器交互, 或者方便调试. 你甚至可以使用 nc 命令来和任何一个支持 SSDB 网络协议的服务器交互.

    Continue reading »

    Posted by ideawu at 2014-11-09 12:49:43 Tags:
  • 2014-10-13

    SSDB 1.7.0.0 版本更新

    Views: 29244 | 6 Comments

    高性能 NoSQL 数据库 SSDB 最近有了一些更新

    1. ssdb-cli 性能优化

    通过改进 cpy 脚本语言引擎, ssdb-cli 的启动速度更快了.

    2. 增加导入导出功能

    在 ssdb-cli 里执行 export 和 import 命令, 可以在任意时候将数据库导出到一个文本文件中, 同时可以将这个文本文件导入到任意 SSDB 数据库. [相关文档]

    3. 增加 qtrim_* 命令

    另外, queue 增加了 qtrim_front 和 qtrim_back 命令, 可以清除队列首部和尾部的多个元素.

    Posted by ideawu at 2014-10-13 10:13:31
  • 2014-09-20

    SSDB 发布 1.7.0.0 版本

    Views: 26208 | No Comments

    近日, SSDB 数据库发布了 1.7.0.0 版本, 增加了一些非常有用的功能:

    • 增加 auth 命令和相关功能, 通过密码来限制访问, 让数据库更安全
    • qpop 等命令可以一次出栈多个元素

    高性能的 NoSQL 数据库 SSDB 以其出众的性能, 稳定的软件质量, 以及与 Redis 兼容的特点, 在国内外知名互联网企业得到了广泛的应用. SSDB 已经非常稳定, 功能也已经很完善, 但仍然保持不断地进化和升级.

    SSDB 的官网是 ssdb.io.

    Posted by ideawu at 2014-09-20 15:30:50
  • 2014-08-07

    SSDB 使用 rocksdb 引擎

    Views: 45767 | 1 Comment

    为了满足各位对 Facebook 出品的 rocksdb 的爱好, SSDB 数据库也可以使用 rocksdb.

    这个项目就是 ssdb-rocks: https://github.com/ideawu/ssdb-rocks

    据说 rocksdb 性能不错, 在某些场景比 leveldb 更佳, 欢迎各位试用. 注意, rocksdb 和 leveldb 不兼容, 所以, 旧数据不能直接用于这两个引擎. 原来你用了 leveldb, 就能不直接换成 rocksdb, 你必须自己写脚本导数据.

    Posted by ideawu at 2014-08-07 17:24:32 Tags:
  • 2014-07-23

    SSDB 数据库的图形化界面管理工具 – phpssdbadmin

    Views: 51441 | 41 Comments

    我很高兴地告诉各位, SSDB 现在也有了图形化界面管理工具了! 那就是 phpssdbadmin(PHP SSDB Admin), 类似 phpmyadmin, 通过 Web 界面来管理 SSDB 数据库的数据.

    phpssdbadmin 是用 PHP 开发的, 需要进行 Web 部署.

    Continue reading »

    Posted by ideawu at 2014-07-23 12:18:49 Tags:
|<<<123456789>>>| 2/12 Pages, 70 Results.