09/03
9
Tokyo Cabinet是日本人平林幹雄开发的一款DBM数据库,该数据库读写非常快。但是单单的TC数据库,用处不大,宿主程序需要进行很多开发。TC的作者开发了Tokyo Tyrant(TT)这个网络服务程序,除了自己的二进制协议,还提供了现在被广泛应用的HTTP协议,memcached协议来访问TC数据库,这样一来,一下子就扩展了TC的使用范围,让TC从一个单纯的开发库变成了易用,高效的数据库系统。
Tokyo Tyrant是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。
Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。
一,建立Tokyo Tyrant日志及数据存放目录
p.s. 新版需要 libbz2-dev
二,下载安装tokyocabinet
三,下载安装tokyotyrant
四,启动Tokyo Tyrant服务器端
如果大量的客户端访问ttserver,请确保文件描述符够用。许多服务器的默认文件描述符为1024,可以在启动ttserver前使用ulimit命令提高这项值。例如: ulimit -SHn 51200
五,启动命令
p.s. :
启动的时候,根据参数dbname名来确定使用的TC数据库类型。如果为"*",则使用内存hash表,如果为"+",则使用内存B+库,如果后缀为".tch",则使用hash表,如果后缀为".tcb",则使用B+树数据库,如果后缀为".tcf",则使用定长数组。如果dbname参数被省略,则采用内存hash数据库。
在ttserver众多的启动参数中,有两个参数在正式使用时非常有用,-mask expr, -unmask expr,分别是禁止的命令,允许的命令。在正式使用时,最好能把vanish(删除所有数据)屏蔽掉,就像linux系统中把rm -rf * 屏蔽了一样。
六,关闭服务
七,调用
1、任何Memcached客户端均可直接调用tokyotyrant。
2、还可以通过HTTP方式调用,下面以Linux的curl命令为例,介绍如何操作tokyotyrant:
(1)、写数据,将数据“value”写入到“key”中:
(2)、读数据,读取“key”中数据:
(3)、删数据,删除“key”:
八,实时查看监控数据命令
效率测试:
我们用tokyotyrant自带的工具tcrmttest,用来测试(多线程)对Tokyo Tyrant网络接口的写入、读取移动做效率测试。
./tcrmttest write -port 11211 192.168.137.64 100000
<Writing Test>
host=192.168.137.64 port=11211 tnum=1 rnum=100000 nr=0 ext= rnd=0
......................... (00010000)
......................... (00020000)
......................... (00030000)
......................... (00040000)
......................... (00050000)
......................... (00060000)
......................... (00070000)
......................... (00080000)
......................... (00090000)
......................... (00100000)
record number: 2103120
size: 1245941232
time: 636.535
ok
参考文献:http://508206df.blog.chinabyte.com/2010/04/21/72/
http://hi.baidu.com/ah__fu/blog/category/tokyo%20cabinet%20%26%2338%3B%20tokyo%20tyrant
Tokyo Tyrant是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。
Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。
一,建立Tokyo Tyrant日志及数据存放目录
mkdir /ttserver
p.s. 新版需要 libbz2-dev
二,下载安装tokyocabinet
wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.3.17.tar.gz
tar zxvf tokyocabinet-1.3.17.tar.gz
cd tokyocabinet-1.3.17/
./configure --enable-off64 #启动64位偏移,因为我机器是32位,如果数据库文件超过2G,不加此参数ttserver会崩溃
make
make install
cd ../
tar zxvf tokyocabinet-1.3.17.tar.gz
cd tokyocabinet-1.3.17/
./configure --enable-off64 #启动64位偏移,因为我机器是32位,如果数据库文件超过2G,不加此参数ttserver会崩溃
make
make install
cd ../
三,下载安装tokyotyrant
wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.7.tar.gz
tar -xzvf tokyotyrant-1.1.7.tar.gz
cd tokyotyrant-1.1.7
./configure --prefix=/usr/local/tokyotyrant
make
make install
tar -xzvf tokyotyrant-1.1.7.tar.gz
cd tokyotyrant-1.1.7
./configure --prefix=/usr/local/tokyotyrant
make
make install
四,启动Tokyo Tyrant服务器端
如果大量的客户端访问ttserver,请确保文件描述符够用。许多服务器的默认文件描述符为1024,可以在启动ttserver前使用ulimit命令提高这项值。例如: ulimit -SHn 51200
五,启动命令
/usr/local/tokyotyrant/bin/ttserver -host 192.168.137.64 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch#bnum=1000000
p.s. :
启动的时候,根据参数dbname名来确定使用的TC数据库类型。如果为"*",则使用内存hash表,如果为"+",则使用内存B+库,如果后缀为".tch",则使用hash表,如果后缀为".tcb",则使用B+树数据库,如果后缀为".tcf",则使用定长数组。如果dbname参数被省略,则采用内存hash数据库。
在ttserver众多的启动参数中,有两个参数在正式使用时非常有用,-mask expr, -unmask expr,分别是禁止的命令,允许的命令。在正式使用时,最好能把vanish(删除所有数据)屏蔽掉,就像linux系统中把rm -rf * 屏蔽了一样。
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [-ext path] [-mask expr] [-unmask expr] [dbname]
-host name : 指定需要绑定的服务器域名或IP地址。默认绑定这台服务器上的所有IP地址。
-port num : 指定需要绑定的端口号。默认端口号为1978
-thnum num : 指定线程数。默认为8个线程。
-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。
-dmn : 以守护进程方式运行。
-pid path : 输出进程ID到指定文件(这里指定文件名)。
-log path : 输出日志信息到指定文件(这里指定文件名)。
-ld : 在日志文件中还记录DEBUG调试信息。
-le : 在日志文件中仅记录错误信息。
-ulog path : 指定同步日志文件存放路径(这里指定目录名)。
-ulim num : 指定每个同步日志文件的大小(例如128m)。
-uas : 使用异步IO记录更新日志(使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器ID号(当使用主辅模式时,每台ttserver需要不同的ID号)
-mhost name : 指定主辅同步模式下,主服务器的域名或IP地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。
-ext path : 扩展的脚本文件
-mask expr : 需要禁止的命令,多个命名用","隔开
-unmaks expr : 允许的命令
-host name : 指定需要绑定的服务器域名或IP地址。默认绑定这台服务器上的所有IP地址。
-port num : 指定需要绑定的端口号。默认端口号为1978
-thnum num : 指定线程数。默认为8个线程。
-tout num : 指定每个会话的超时时间(单位为秒)。默认永不超时。
-dmn : 以守护进程方式运行。
-pid path : 输出进程ID到指定文件(这里指定文件名)。
-log path : 输出日志信息到指定文件(这里指定文件名)。
-ld : 在日志文件中还记录DEBUG调试信息。
-le : 在日志文件中仅记录错误信息。
-ulog path : 指定同步日志文件存放路径(这里指定目录名)。
-ulim num : 指定每个同步日志文件的大小(例如128m)。
-uas : 使用异步IO记录更新日志(使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器ID号(当使用主辅模式时,每台ttserver需要不同的ID号)
-mhost name : 指定主辅同步模式下,主服务器的域名或IP地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。
-ext path : 扩展的脚本文件
-mask expr : 需要禁止的命令,多个命名用","隔开
-unmaks expr : 允许的命令
不同数据库类型的详细配置参数解析
下面我们再来看下数据库类型的详细配置。
数据库名的命名方式被Tokyo Cabinet的抽象API指定。
如果数据库名为"*",表示内存hash数据库。
如果数据库名为"+"表示内存tree数据库。
如果数据库名为".tch",则数据库为hash数据库。
如果数据库名的后缀为".tcb",数据库将为B+ tree数据库。
如果数据库名的后缀为".tcf"。则数据库将为fixed-length数据库。
如果数据库名的后缀为".tct",则数据将为一个table数据库(有表的概念)。
数据库的调整参数通过数据库名的延伸来指定,通过"#"分开,每个参数通过一个参数名和值来指定,用"="隔开。
# hash数据库支持"mode", "bnum", "apow", "fpow", "opts", "rcnum", 和 "xmsiz".
#
# `rcnum'指定最大的缓存记录数。如果它不大于零,那么缓存记录不可用。默认不可用。
# xmsiz 指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
# `bnum' 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应该在所有需要存储的记录总数的0.4-4倍
# `apow' 跟一个key关联的记录数,2的N次方表示. 如果不指定,默认2^4=16.
# `fpow' specifies the maximum number of elements of the free block pool by power of 2. 默认2^10=1024.
# `opts' 指定选项,位或:`HDBTLARGE' 指定数据库的大小通过使用64位数组桶能够超过2G。
# `HDBTDEFLATE' 指定每个记录被Deflate encoding压缩。
# `HDBTBZIP' 指定每个记录被BZIP2 encoding压缩
# `HDBTTCBS'指定每个记录被 TCBS encoding压缩.
下面我们再来看下数据库类型的详细配置。
数据库名的命名方式被Tokyo Cabinet的抽象API指定。
如果数据库名为"*",表示内存hash数据库。
如果数据库名为"+"表示内存tree数据库。
如果数据库名为".tch",则数据库为hash数据库。
如果数据库名的后缀为".tcb",数据库将为B+ tree数据库。
如果数据库名的后缀为".tcf"。则数据库将为fixed-length数据库。
如果数据库名的后缀为".tct",则数据将为一个table数据库(有表的概念)。
数据库的调整参数通过数据库名的延伸来指定,通过"#"分开,每个参数通过一个参数名和值来指定,用"="隔开。
# hash数据库支持"mode", "bnum", "apow", "fpow", "opts", "rcnum", 和 "xmsiz".
#
# `rcnum'指定最大的缓存记录数。如果它不大于零,那么缓存记录不可用。默认不可用。
# xmsiz 指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
# `bnum' 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应该在所有需要存储的记录总数的0.4-4倍
# `apow' 跟一个key关联的记录数,2的N次方表示. 如果不指定,默认2^4=16.
# `fpow' specifies the maximum number of elements of the free block pool by power of 2. 默认2^10=1024.
# `opts' 指定选项,位或:`HDBTLARGE' 指定数据库的大小通过使用64位数组桶能够超过2G。
# `HDBTDEFLATE' 指定每个记录被Deflate encoding压缩。
# `HDBTBZIP' 指定每个记录被BZIP2 encoding压缩
# `HDBTTCBS'指定每个记录被 TCBS encoding压缩.
六,关闭服务
cat /ttserver/ttserver.pid | xargs kill -TERM
七,调用
1、任何Memcached客户端均可直接调用tokyotyrant。
2、还可以通过HTTP方式调用,下面以Linux的curl命令为例,介绍如何操作tokyotyrant:
(1)、写数据,将数据“value”写入到“key”中:
curl -X PUT http://127.0.0.1:11211/key -d "value"
(2)、读数据,读取“key”中数据:
curl http://127.0.0.1:11211/key
(3)、删数据,删除“key”:
curl -X DELETE http://127.0.0.1:11211/key
八,实时查看监控数据命令
echo stats | nc 192.168.200.122 11211
效率测试:
我们用tokyotyrant自带的工具tcrmttest,用来测试(多线程)对Tokyo Tyrant网络接口的写入、读取移动做效率测试。
[quote]# cd /usr/local/tokyotyrant/bin/
./tcrmttest
./tcrmttest
./tcrmttest write -port 11211 192.168.137.64 100000
<Writing Test>
host=192.168.137.64 port=11211 tnum=1 rnum=100000 nr=0 ext= rnd=0
......................... (00010000)
......................... (00020000)
......................... (00030000)
......................... (00040000)
......................... (00050000)
......................... (00060000)
......................... (00070000)
......................... (00080000)
......................... (00090000)
......................... (00100000)
record number: 2103120
size: 1245941232
time: 636.535
ok
参考文献:http://508206df.blog.chinabyte.com/2010/04/21/72/
http://hi.baidu.com/ah__fu/blog/category/tokyo%20cabinet%20%26%2338%3B%20tokyo%20tyrant
使用mod_security加强Apac
查看linux系统版本,内核,CPU,M


