一 如何安装tair:
安装目录下面有一个etc的文件夹,里面有三个配置文件
configserver.conf
dataserver.conf
group.conf
其中dataserver.conf是配置数据节点的,configserver.conf和group.conf是配置中心节点,也可以算是配置中心
1、先看configserver.conf
tair.sh start_ds 用来启动data server
tair.sh start_cs 用来启动config server
- 1、确保安装了automake autoconfig 和 libtool,使用automake --version查看,一般情况下已安装
- 下载地址:
- automake:http://www.gnu.org/software/automake
- qutoconfig:http://www.gnu.org/software/autoconf
- libtool:https://www.gnu.org/software/libtool
- 2、安装boost-devel库,在用rpm管理软件包的os上可以使用rpm -q boost-devel查看是否已安装该库
- 3、获得底层库 tbsys 和 tbnet的源代码:(svn checkout http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils).
- 4、编译安装tbsys和tbnet,位于tb-common-utils内,分别到对应目录下安装
- 5、获得tair源代码:(svn checkout http://code.taobao.org/svn/tair/trunk/ tair).
- 6、编译安装tair,备注也可以不用编译安装tair,下载打包好的源码包即可(http://code.taobao.org/p/tair/file/2717/tair-2.3.1.6.tar.gz)。
- tair 的底层依赖于tbsys库和tbnet库, 所以要先编译安装这两个库:
取得源代码后, 先指定环境变量 TBLIB_ROOT 为需要安装的目录. 这个环境变量在后续 tair 的编译安装中仍旧会被使用到. 比如要安装到当前用户的lib目录下, 则指定 export TBLIB_ROOT="~/lib"(这里请使用绝对路径,相对路劲有时候会出错)
进入common文件夹, 执行build.sh进行安装.
- 编译安装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());
}
}