NoSQLSSDB:高性能数据库服务器

SSDB是一个开源之过人性能数据库服务器,
使用Google LevelDB作为存储引擎, 支持T级别的数量,
同时支持类似Redis中之zset和hash等数据结构,
在又需要高性能及特别数据的规格下, 作为Redis的代表方案.

坐SSDB的早期目的是顶替Redis, 所以SSDB会经常与Redis进行比. 我们明白,
Redis是不时的”主-从”架构, 虽然可以落负载均衡和数据超过域备份的功效,
但无法兑现高可用性. 考虑这种气象, Redis的主和从各自以少数个IDC机房,
当主所在的机房出现故障时, 整个服务实际就是一定给已了.
因为具备写操作都砸, 而应用一般不会见促成自动降服务.

只要SSDB支持”双预告”架构(SSDB分布式架构:
https://github.com/ideawu/ssdb/wiki/Replication),
两单或另行多之主服务器. 当内一部分涌出故障时,
剩余的主服务器仍然会健康接受写请求, 从而保证服务正常可用,
再用DNS解析修改之后, 就能于机房故障后当即恢复100%不过用.

SSDB 被支付及开源出来后,
已经于养条件经受了3独季度的考验,SSDB最优先以”IT牛人博客聚合网站“进行尝试下,
接着在360娱乐部门获取大面积利用, 目前支持的数据量已经达到数百G.
这些使用初期是运Redis的, 迁移到SSDB的资金非常低, 涉及的代码改动最小.

SSDB开源数据库项目地址: https://github.com/ideawu/ssdb

笔者博客地址: http://www.ideawu.net/blog/ssdb

安装

SSDB 的提议设置⽅方式是源码编译安装, 建议运⾏行环境是主流 Linux
发⾏行版. 远程 SSH 登录你的服务器, 然后⽤用生⾯面的指令下载, 编译,
安装以及运⾏行:

$ sudo wget
–no-check-certificate
https://github.com/ideawu/ssdb/archive/master.zip

$ sudo unzip
master

$ cd
ssdb-master

$ sudo make

$ #optional, install ssdb in
/usr/local/ssdb

$ sudo make
install

# start master

$ sudo ./ssdb-server
ssdb.conf

# or start as
daemon

$ sudo ./ssdb-server -d
ssdb.conf

# ssdb command
line

$ sudo ./ssdb-cli -p
8888

# stop
ssdb-server

$ sudo kill `cat
./var/ssdb.pid`

SSDB 默认安装在 /usr/local/ssdb ⺫⽬目录下. ssdb-server 是服务器的次,
ssdb-cli 是命令⾏行客户端.

SSDB配置文件【http://www.ideawu.net/blog/archives/733.html】

SSDB  附带的 ssdb.conf 你不要修改就足以动用. 如果你若高度定制,
还是得改部分布置的. 下面做介绍. SSDB 的配备文件是一律种植层级 key-value
的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 ‘#’
号开始的行是注释. 标准的布置文件如下:

# ssdb-server config
# MUST indent by TAB!

# relative to path of this file, directory must exists
work_dir = ./var
pidfile = ./var/ssdb.pid

server:
        ip: 127.0.0.1
        port: 8888
        # bind to public ip
        #ip: 0.0.0.0
        # format: allow|deny: all|ip_prefix
        # multiple allows or denys is supported
        #deny: all
        #allow: 127.0.0.1
        #allow: 192.168

replication:
        slaveof:
                # to identify a master even if it moved(ip, port
changed)
                # if set to empty or not defined, ip:port will be
used.
                #id: svc_2
                # sync|mirror, default is sync
                #type: sync
                #ip: 127.0.0.1
                #port: 8889

logger:
        level: info
        output: log.txt
        rotate:
                size: 1000000000

leveldb:
        # in MB
        cache_size: 500
        # in KB
        block_size: 32
        # in MB
        write_buffer_size: 64
        # in MB
        compaction_speed: 1000
        # yes|no
        compression: no

work_dir: ssdb-server 的办事目录, 启动后, 会在此目录下生成 data 和
meta 两独目录, 用来保存 LevelDB 的数据库文件. 这个目录是对立于 ssdb.conf
的相对路径, 也足以指定绝对路径.

server: ip 和 port 指定了服务器如果监听的 IP 和端口号. 如果 ip 是 0.0.0.0,
则象征绑定所有的 IP. 基于安全考虑, 可以将 ip 设置也 127.0.0.1, 这样,
只发本机可以拜了. 如果只要召开重新严格的再多的纱安全范围,
就用负操作系统的 iptables.

replication: 用于指定主从同步复制. slaveof.ip, slaveof.port 表示, 本台
SSDB 服务器将从今这目标机上同步数据(也即是布局文件对应之服务器是
slave). 你得参照 ssdb_slave.conf 的配制.

logger: 配置日志记录. level 是日记的级别, 可以是 trace|debug|info|error.
output 是日记文件之名字, SSDB 支持日志轮转, 在日记文件及一定大小后, 将
log.txt 改名, 然后创造一个新的 log.txt.

leveldb: 配置 LevelDB 的参数. 你相似想只要改的是 cache_size 参数,
用于指定缓存大小. 适当的缓存可以加强读性能, 但是喽深之休养存会潜移默化写性能.

每当使⽤用⾃自带的 ssdb.conf 配置⽂文件时, SSDB
⽣生成的⽇日志⽂文件按体积进⾏行分割, 仅这个⽽而就. 所以,
你得编制⾃自⼰己的 crontab 进⾏行⽇日志压缩和时限清理.
万一起服务器掉电, kernel panic 等系统故障, 在网再度启航以后,
你待⼿手动删除 ssdb的 PID ⽂文件 ssdb.pid, 然后才能够开行
ssdb-server.另外, 你可参考下⾯面的做法, 在系统启动和关机时, 启动暨关闭
ssdb-server:
# /bin/sh
#
# chkconfig:345 98 98
# description: SSDB is a fast NoSQL database for storing big list of
billions of elements
# processname:ssdb

case “$1” in
  ‘start’)
    /usr/local/ssdb/ssdb-server -d /usr/local/ssdb/ssdb.conf
    echo “ssdb started.”
    ;;
  ‘stop’)
    kill `cat /usr/local/ssdb/var/ssdb.pid`
    echo “ssdb stopped.”
    ;;
  ‘restart’)
    kill `cat /usr/local/ssdb/var/ssdb.pid`
    echo “ssdb stopped.”
    sleep 0.5
    /usr/local/ssdb/ssdb-server -d /usr/local/ssdb/
ssdb.conf
    echo “ssdb started.”
    ;;
  *)
    echo “Usage: $0 {start|stop|restart}”
    exit 1
  ;;
esac

exit 0

把⽂件保存也 /etc/init.d/ssdb.sh(需要 root 权限), 然后执⾏:
chmod ugo+x /etc/init.d/ssdb.sh

管 ssdb加入chkconfig,并安装开机启动。

[azureuser@mono init.d]$ sudo chkconfig –add ssdb.sh
[azureuser@mono init.d]$ chkconfig ssdb.sh on

起先、停止的授命如下:

[azureuser@mono init.d]$ sudo service ssdb.sh stop
ssdb stopped.
[azureuser@mono init.d]$ sudo service ssdb.sh start
ssdb 1.6.7
Copyright (c) 2012-2013 ideawu.com

ssdb started.

种类代码中都加入c#
的api,https://github.com/ssdb/dotnetssdb,在Mono上跑了一晃:

[azureuser@mono dotnet]$ sudo dmcs Client.cs Link.cs Program.cs
-out:ssdbClient.exe
[azureuser@mono dotnet]$ mono ssdbClient.exe
ok
1
ok
100

99

1 kvs

    a: 99

0 kvs

0 kvs
0

另外, SSDB 提供了预编译的 Windows 下的只是尽安装包, Windows
用户可以下载后一直运行 ssdb-server.exe. Windows 下的 SSDB 依赖 cygwin,
所以附带了几乎单 dll 文件. 使用方式:

  1. 从 https://github.com/ideawu/ssdb-bin 下载可执行文件
    ssdb-server.exe 和连锁 dll.

  2. 从 https://github.com/ideawu/ssdb 下充斥 ssdb.conf 配置文件.

  3. 解压, 然后打开始菜单中运行 cmd.exe.

  4. 在 cmd.exe 启动后, cd ssdb-server.exe 所当的目录.

  5. 执行 ssdb-server.exe ssdb.conf

SSDB 入门基础(Chinese)

网络协议设计思想以及SSDB网络协议

网站地图xml地图