搭建淘宝Tair服务器

一 如何安装tair:

  1. 1、确保安装了automake autoconfig 和 libtool,使用automake --version查看,一般情况下已安装
  2. 下载地址:
  3. automake:http://www.gnu.org/software/automake
  4. qutoconfig:http://www.gnu.org/software/autoconf
  5. libtool:https://www.gnu.org/software/libtool
  6. 2、安装boost-devel库,在用rpm管理软件包的os上可以使用rpm -q boost-devel查看是否已安装该库
  7. 3、获得底层库 tbsys 和 tbnet的源代码:(svn checkout http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils).
  8. 4、编译安装tbsys和tbnet,位于tb-common-utils内,分别到对应目录下安装
  9. 5、获得tair源代码:(svn checkout http://code.taobao.org/svn/tair/trunk/ tair).
  10. 6、编译安装tair,备注也可以不用编译安装tair,下载打包好的源码包即可(http://code.taobao.org/p/tair/file/2717/tair-2.3.1.6.tar.gz)。

  1.     tair 的底层依赖于tbsys库和tbnet库, 所以要先编译安装这两个库:
    取得源代码后, 先指定环境变量 TBLIB_ROOT 为需要安装的目录. 这个环境变量在后续 tair 的编译安装中仍旧会被使用到. 比如要安装到当前用户的lib目录下, 则指定 export TBLIB_ROOT="~/lib"(这里请使用绝对路径,相对路劲有时候会出错)
    进入common文件夹, 执行build.sh进行安装. 
  1.     编译安装tair:
    进入 tair 目录
    运行 bootstrap.sh
    运行 configure.  注意, 在运行configue的时候, 可以使用 --with-boost=xxxx 来指定boost的目录. 使用--with-release=yes 来编译release版本.
    运行 make 进行编译
    运行 make install 进行安装

tair-2.3-46.el5.x86_64.rpm  是tair的服务端安装,直接按正常的rpm包进行安装即可。安装好后需要进行配置。可以参考一下http://code.taobao.org/p/tair/wiki/deploy/ 中的
二:如何配置tair

安装目录下面有一个etc的文件夹,里面有三个配置文件
configserver.conf
dataserver.conf
group.conf

其中dataserver.conf是配置数据节点的,configserver.conf和group.conf是配置中心节点,也可以算是配置中心

1、先看configserver.conf
[public]
config_server=10.232.135.130:5198
config_server=10.232.135.130:5198
#这里的server是一般是配置两台,最前面的是主,后面那个是备,这里可以配置来主和备是同一台机子

[configserver]
#服务端口,这时程序里面需要的
port=5198
log_file=logs/config.log
pid_file=logs/config.pid
log_level=warn
group_file=etc/group.conf
data_dir=data/data
#配置成网卡的名字
dev_name=eth0
2、再看看group.conf
#group name 这个是组的名字,到时程序里面的要用到
[group_1]
# data move is 1 means when some data serve down, the migrating will be start. 
# default value is 0
_data_move=0
#_min_data_server_count: when data servers left in a group less than this value, config server will stop serve for this group
#default value is copy count.
_min_data_server_count=2
_plugIns_list=libStaticPlugIn.so
_build_strategy=1 #1 normal 2 rack 
_build_diff_ratio=0.6 #how much difference is allowd between different rack 
# diff_ratio =  |data_sever_count_in_rack1 - data_server_count_in_rack2| / max (data_sever_count_in_rack1, data_server_count_in_rack
2)
# diff_ration must less than _build_diff_ratio
_pos_mask=65535  # 65535 is 0xffff  this will be used to gernerate rack info. 64 bit serverId & _pos_mask is the rack info, 
#每条数据可以存几份数据,这个数据不能大于数据节点机器数
_copy_count=1
_bucket_number=1023

# data center A  数据节点的机器,有一台,写一台,如果是扩容,这里再加上就是了
_server_list=10.232.135.130:5191
_server_list=10.232.37.100:5191

#quota info 0是namespce,0后面那个是空间是多大,这里的0在程序里面要用到
_areaCapacity_list=0,1124000;
3、再来看dataserver.conf
#
#  tair 2.2 --- tairserver config 
#
#这里是配置中心节点的地址
[public]
config_server=10.232.135.130:5198
config_server=10.232.135.130:5198

[tairserver]
#
#storage_engine:
#
# mdb 
# fdb
# kdb 
#
#这个是选择存储的类型,mdb是用内存
storage_engine=mdb
#
#mdb_type:
# mdb
# mdb_shm
#
mdb_type=mdb_shm

#
# if you just run 1 tairserver on a computer, you may ignore this option.
# if you want to run more than 1 tairserver on a computer, each tairserver must have their own "mdb_shm_path"
#
#
mdb_shm_path=/mdb_shm_path01

#tairserver listen port
port=5191
heartbeat_port=6191

process_thread_num=16
#
#mdb size in MB
#
slab_mem_size=1024
log_file=logs/server.log
pid_file=logs/server.pid
#这里设置日志级别,开发的时候改成debug
log_level=debug
dev_name=eth0
ulog_dir=data/ulog
ulog_file_number=3
ulog_file_size=64
check_expired_hour_range=2-4
check_slab_hour_range=5-7

[fdb]
# in MB
index_mmap_size=30
cache_size=256
bucket_size=10223
free_block_pool_size=8
data_dir=data/fdb
fdb_name=tair_fdb

[kdb]
# in byte
map_size=10485760      # the size of the internal memory-mapped region
bucket_size=1048583    # the number of buckets of the hash table
record_align=128       # the power of the alignment of record size
data_dir=data/kdb      # the directory of kdb's data
启动的时候需要先启动data server 然后启动cofnig server
tair.sh start_ds 用来启动data server
tair.sh start_cs 用来启动config server

三、Tair的使用
使用的时候需要用到tair-client-2.3.1.jar,这是一个java版的客户端,用于访问tair,封装了读和写的功能,tair是基于socket的,要用c++版本的客户端也可以,需要自己实现

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
	<bean id="tairManager" class="com.taobao.tair.impl.DefaultTairManager"
		init-method="init">
		<property name="configServerList">
			<list>
				<!-- 这里填cs的地址 ,改成自己的-->
				<value>10.232.135.130:5198</value>
			</list>
		</property>
		<property name="groupName">
			<!-- 这里是组名 -->
			<value>group_1</value>
		</property>
	</bean>
</beans>


public static void main(String[] args) {
		ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(new String[] {"tair.xml"});
		TairManager tair=(TairManager) context.getBean("tairManager");
		for(int i=0;i<10;i++){
			//第一个参数是namespace,第二个是key,第三是value,第四个是版本,第五个是有效时间
			ResultCode result=tair.put(0, "k"+i, "test", 0, 10);
			System.out.println("put:"+i+":"+result.isSuccess());
			if(!result.isSuccess()) break;
		}
		//第一个参数是namespce,第二个是key
		Result<DataEntry> r=tair.get(0, "k1");
		System.out.println("get:"+r.isSuccess());
		if(r.isSuccess()){
			System.out.println(r.getValue().getValue().toString());
		}else{
			System.out.println(r.getRc().getMessage());
		}
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值