`
m635674608
  • 浏览: 5031671 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SSDB:高性能数据库服务器

    博客分类:
  • java
 
阅读更多

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网络协议

http://www.cnblogs.com/shanyou/p/3496163.html

 

分享到:
评论

相关推荐

    ssdb:SSDB-快速的NoSQL数据库,可替代Redis

    SSDB-磁盘上存储的Redis兼容NoSQL数据库 SSDB是高性能键值(key-string,key-zset,key-hashmap)NoSQL数据库,是Redis的替代产品。 SSDB稳定,可立即投入生产,并被包括QIHU 360在内的许多互联网公司广泛使用。特征...

    性能超越Redis的NoSQL数据库SSDB.zip

    SSDB 是一个 C/C 语言开发的高性能 NoSQL 数据库, 支持 zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据. SSDB 在 QIHU 360 被大量使用, 同时也被国内外业界...

    SSDB.zip_SSDB_nosql_数据库 KEY value

    SSDB 是&#12032 一个 C++ 语&#12180 言开发的&#12220 高性能开源 NoSQL 数据库服务器, &#12096 支持 Key-value, Key- hashmap, Key-zset(sorted set) 等数据结构, &#12055 十分适合存储数亿条级别的列表, 排序表等...

    nginx与ssdb实战总结

    在当今互联网技术飞速发展的背景下,Nginx 和 SSDB 成为了处理高并发、高性能应用不可或缺的技术组件。Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器;而 SSDB 是一个内存...

    dotnetssdb:SSDB .Net客户端

    SSDB(Simple Scalable Database System)是一款高性能、轻量级的NoSQL数据库系统,主要设计用于替代Memcached或Redis,支持多种数据结构如字符串、哈希表、集合、有序集合等。SSDB由C++编写,具有高吞吐量、低延迟...

    类似redis的高性能nosql​数据库LedisDB.zip

    LedisDB 是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。 最开始源于ssdb,在使用了一段时间之后,因为兴趣的原因,决定用go实现一个...

    ssdb for windows

    SSDB在Windows环境中的应用,为企业和开发者提供了更多选择,特别是在那些无法或不便使用Linux环境但又需要高性能数据库服务的场景下,SSDB for Windows无疑是一个理想的选择。同时,其开源性质使得社区能够持续贡献...

    数据库加密系统的设计与实现思考.docx

    6. 数据库连接模块的作用:数据库连接模块主要负责将加密系统和数据库连接在一起,利用该模块存储远程数据库连接信息,并且利用该模块改变远程数据库服务器,并且启用新的连接方式。 7. 数据库加密系统的实际应用:...

    SSDB入门基础

    SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下, 作为Redis的替代方案.

    SSDB入门基础.docx

    SSDB 是一个高性能的 NoSQL 数据库服务器,由 C++ 开发,专为处理大量数据设计,特别是亿级级别的列表和排序表。作为 Redis 的替代品,SSDB 提供了类似 Redis 的 API,并且支持多种编程语言的客户端,如 PHP、C++、...

    SSDB-命令列表.zip

    SSDB(Simple Scalable ...SSDB因其高性能和丰富的数据结构,被广泛应用于大型分布式系统中,尤其是作为缓存服务和轻量级数据库的角色。在实际使用过程中,理解并熟练掌握这些命令,对于有效管理和操作SSDB至关重要。

    ssdb备份(快速删除文件)

    SSDB(Simple Scalable Database)是一款高性能、高可用性的NoSQL数据库,主要设计用于替代Redis。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合,且具有良好的扩展性,适用于大规模分布式环境。在管理...

    ssdb source 3.4

    SSDB(Simple Scalable Database)是一款高性能、高可用的NoSQL数据库,主要设计用于替代Redis在某些场景下的应用。SSDB的核心特性在于其强大的键值存储能力,支持高速查询,这使得它在大数据量的场景下依然能保持...

    开源项目-lcbluestorm-ssdb-session.zip

    而这个项目则是针对Beego框架的扩展,将session存储从内存转向了SSDB数据库,SSDB是一个高性能的键值存储系统,类似于Redis,但更适合大数据量的场景。 首先,我们需要理解什么是session。在Web开发中,session是...

    libssdb:此项目不再维护,在SSDB项目中提供了libssdb

    **SSDB:高性能的NoSQL数据库** SSDB是一个高性能、可替代Redis的键值存储系统,主要用于构建大型互联网服务的数据存储层。它是由C++编写的,因此在【标签】中我们看到“C++”,这表明SSDB的核心是用C++这种高效的...

    Ruby-迁移SSDB到RedisPika工具集Ruby实现

    SSDB是一个高性能、可替代Redis的键值存储系统,设计用于处理大量数据。它支持多种数据结构,如字符串、列表、哈希表和有序集合,这使得它在许多应用场景下非常有用。 接着,我们来谈谈Redis。Redis是一个开源的、...

    ssdb-rocks:带有rocksdb的ssdb,rocksdb客户端-服务器支持

    SSDB则是一个高性能的键值对存储系统,设计用来替代Redis在某些场景下的使用,尤其在数据量巨大时,SSDB能提供更好的持久化和可扩展性。 在SSDB-Rocks项目中,SSDB原本的存储机制被替换为RocksDB,这样就充分利用了...

    cpp-改造twemproxy使其支持ssdb协议ssdb的分片和ssdb的读写分离

    SSDB是一个高性能的键值存储系统,设计为Redis的替代品,尤其在大数据量下。它支持多种数据结构,如字符串、列表、集合、有序集合等,并且具有主从复制和分片功能。读写分离是SSDB的一种优化策略,通过将读操作路由...

    Python-csssdbpycssdbpy用Cython编写的SSDB客户端

    SSDB(Simple Scalable Database)是一个高性能、轻量级的键值存储系统,常用于替代Memcached或Redis。而`csssdbpy`,即`cssdbpy`,是一个专为SSDB设计的Python客户端,它利用Cython技术来提升与SSDB服务器通信的...

    php相关依赖包以及配置文件

    6. **SSDB**:SSDB是高性能的NoSQL数据库,设计为替代Memcached和Redis。安装SSDB: ``` sudo apt-get install -y build-essential wget ...

Global site tag (gtag.js) - Google Analytics