腾讯开源服务器框架Tars安装使用

2017年4月10日,腾讯后台逻辑层的统一应用框架TAF(Total Application Framework)开源了,取名为tars。

GitHub:https://github.com/Tencent/Tars

作为一个使用过2年TAF(后文都称tars)平台的用户,对其还是有不少感情的。所以在Debian系统上,迫不及待的自己搭建了一套tars,期间踩了不少坑故在此记录一下。

(这不是一篇教程,建议是官方教程与这篇文章里的东西结合起来看,您有疑问或者建议也可以留言与我直接交流讨论。)

tars_man

tars安装之前

整体的安装步骤参照官方提供的Install.md,一些交流可以加入官方QQ群:579079160。

关于系统选择:

官方文档里的样例系统是Centos,并不说非Centos就不能装了,只要满足2个硬性条件:内核与依赖包(库)版本达到要求。这里说一句,tars用的一些依赖包(库)还是蛮新的。

内存:

总的安装流程走下来并运行,大概需要约600M的内存,所以对于内存吃紧的云用户能够提前预备一下。大致的内存占用:resin(400M)+tars核心服务(200M)。

这里吐槽一下resin占的太多了(java环境……),改小了居然还会启动卡死,所以暂时没找到缩小内存占用的解决方案。

 

tars安装时

首先看看安装需求:

软件 软件要求
linux内核版本: 2.6.18及以上版本(操作系统依赖)
gcc版本: 4.1.2及以上版本、glibc-devel(c++语言框架依赖)
bison工具版本: 2.5及以上版本(c++语言框架依赖)
flex工具版本: 2.5及以上版本(c++语言框架依赖)
cmake版本: 2.8.8及以上版本(c++语言框架依赖)
resin版本: 4.0.49及以上版本(web管理系统依赖)
Java JDK版本: java语言框架(最低1.6),web管理系统(最低1.8)
Maven版本: 2.2.1及以上版本(web管理系统、java语言框架依赖)
mysql版本: 4.1.17及以上版本(框架运行依赖)
rapidjson版本: 1.0.2版本(c++语言框架依赖)

在Debian环境下,活用apt-get与aptitude可以解决除了Maven与resin之外的其他依赖。resin可以在官方群文件共享里找到包,Maven去对应官网下载(记得按照步骤改/etc/profile内容)。提示一下这里Maven版本是需要3.0+的,否在生成tars.war这里会出错。

Mysql:

需要注意的是,配置文件:

/etc/mysql/my.cnf需要将bind-address对应的IP改成内网可识别IP

tars不建议使用127.0.0.1,主要原因是每个tars服务都有一个管理的obj,它使用的IP是127.0.0.1(管理说这个我要了,你们不能用!)。其他的权限的配置与库表创建按照步骤来就OK。后面所有配置需要改IP的地方都与这个IP对应。

权限问题:

建议是与tars相关的目录均使用用户级权限,即:

sudo chown -R ${普通用户}:${普通用户} ${目录}

可能会遇见各种“Operation not permitted”奇怪的问题,即使遇见了也不要惊慌,仔细观察一下错误的目录,99.9%和目录文件权限有关系。

进入管理页面后:

发现tarsnotify是inactive状态,可以根据官方的教程自己打包发布一次,然后自己部署其他的核心服务。

注意:tarsqueryproperty与tarsquerystat协议是非tars协议,选错了会导致没有监控图表。

最终态,注意拼写的正确:

tars

 

发布失败:

若所有核心服务都是正常状态,但是在发布自己的服务时一直失败,可以尝试修改并重启tarspatch服务:

/usr/local/app/tars/tarspatch/conf/tarspatch.conf配置文件中第4行修改size=100M -> size=1M。

 

tars安装后

脚本create_tars_server.sh:

首先我们进入官方的quickstart,执行脚本:

/usr/local/tars/cpp/script/create_tars_server.sh

会出现一些错误,因为debian bash的一些问题需要修改部分格式:

if [ "$SERVER" == "$SERVANT" ]             -> if [ "$SERVER" = "$SERVANT" ]
rename "DemoServer" "$SERVER" $SRC_FILE    -> rename "s/DemoServer/$SERVER/" *
rename "DemoServant" "$SERVANT" $SRC_FILE  -> rename "s/DemoServant/$SERVANT/" *
关于后缀.tars一处问题:

.tars文件类似于pb的.proto文件,是一个约定格式的文件,通过处理工具将里面内容格式化成对应的代码。使用tars提供的makefile编译时,有小概率会导致编译的目标不正确,具体表现为:各种异常的堆栈然后导致程序奇怪core掉。原因应该是和makefile的写法有关。

暂时的处理方法是先make cleanall再make,如果项目很大会导致每次编译时间过长。

 

写在最后

在所有的服务端框架中,tars应该不是性能最好的,但是它绝对称的上“好用”两字。

优点比较明显,主控管理页面方便的重启、监控,部署各类服务,集开发,运维,测试一体;

灵活,适合各种业务场景,方便接入各种第三方库,并且自支持服务器扩缩容、调度;

缺点可能就是有点“重”,然后对于初学者不太友好,在原理不清楚的情况下容易滥用。

(全文结束)


转载文章请注明出处:漫漫路 - lanindex.com

Leave a Comment

Your email address will not be published.