Chinaunix首页 | 论坛 | 博客
  • 博客访问: 829976
  • 博文数量: 167
  • 博客积分: 7173
  • 博客等级: 少将
  • 技术积分: 1671
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 23:07
文章分类

全部博文(167)

文章存档

2018年(1)

2017年(11)

2012年(2)

2011年(27)

2010年(88)

2009年(38)

分类: 系统运维

2010-08-27 11:02:09

最近在想一些数据缓存的问题,一步一步的看到了TTSERVER(以前也短暂留意过,但没动手去尝试)

Tokyo Tyrant 是由同一作者开发的 Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。

Tokyo Tyrant 加上 Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。


Tokyo Tyrant提供dbm数据库Tokyo Cabinet的网络接口。它使用简单的基于TCP/IP的简单二进制协议进行通信。同时它拥有Memcached兼容协议并且可以用HTTP/1.1协 议进行数据交换。所以实现了跨平台,跨语言使用Tokyo Tyrant。采用热备份,更新日志记录,复制(replication)来实现高可用性和高可靠性。到目前为止,Tokyo Tyrant只能运行在Linux, FreeBSD, Mac OS X, Solaris。

在网上看到很多文章都说因为TTSERVER拥有Memcached兼容协议,所以可以让所有的memcache客户端进行操作,个人认为这个看法有点不妥,因为在测试的过程中发现是不能让原有的memcache进行操作,例如:JAVA。
一下是一些操作代码:
          MemCachedClient mcc = new MemCachedClient(); 
          String[] servers={mcinfo}; 
          SockIOPool pool = SockIOPool.getInstance(); 
          pool.setServers(servers);
          ……
          mcc.set("MChealthcheck", "OK");
发现是不行。

PS:最近听见朋友说memcache可以做冗余,这个说法是不对,除非在应用端进行操作。估计他所看到的应该是新浪的memcachedb。

尝试一下python的也是不是,可以是我编码有问题吧。

虽然安装和使用都比较简单,但也为自己记录一下:
(TTSERVER作者的网站已变更,)
下载相关的安装包:做测试所下载的包是:tokyocabinet-1.4.46.tar.gz;tokyotyrant-1.1.41.tar.gz

安装过程:
1.tar -zxvf tokyocabinet-1.4.46.tar.gz   && cd tokyotyrant-1.1.41 && ./configure && make && make instll
2.tar -zxvf tokyotyrant-1.1.41.tar.gz && cd  tokyotyrant-1.1.41 && ./configure && make && make instll

安装过程中成功的提示为改相应软件包的欢迎提示语。

验证安装:
在tokyotyrant-1.1.41下运行:#./ttservctl start
#telnet 127.0.0.1 1978  默认的端口是1978,相关配置可以在ttservctl中更改
[ttserver]# curl -X PUT -d "sky"
Created
[ttserver]# curl
sky

在ttservctl可以进行修改达到所需的启动方式

ttserver --help
ttserver: the server of Tokyo Tyrant

usage:
  ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-kl] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [-rcc] [-skel name] [-mul num] [-ext path] [-extpc name period] [-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 : 指定每个同步日志文件的大小。
-uas : 使用异步IO记录更新日志(使用此项会减少磁盘IO消耗,但是数据会先放在内存中,不会立即写入磁盘,如果重启服务器或ttserver进程被kill掉,将导致部分数据丢失。一般情况下不建议使用)。
-sid num : 指定服务器ID号(当使用主辅模式时,每台ttserver需要不同的ID号)
-mhost name : 指定主辅同步模式下,主服务器的域名或IP地址。
-mport num : 指定主辅同步模式下,主服务器的端口号。
-rts path : 指定用来存放同步时间戳的文件名。


网上的一些启动方式有:


(1)、单机模式
ulimit -SHn 51200
ttserver -host 127.0.0.1 -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



(2)、双机互为主辅模式
服务器192.168.120.30:

ulimit -SHn 51200
ttserver -host 192.168.120.30 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 30 -mhost 192.168.120.31 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch



服务器192.168.120.31:

ulimit -SHn 51200
ttserver -host 192.168.120.31 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 31 -mhost 192.168.120.30 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch




阅读(1948) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-27 11:05:55

在32位操作系统下,作为 Tokyo Tyrant 后端存储的 Tokyo Cabinet 数据库单个文件不能超过2G,而64位操作系统则不受这一限制。