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

综合编程 2017-04-17

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

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

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

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

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协议,选错了会导致没有监控图表。

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

发布失败:

若所有核心服务都是正常状态,但是在发布自己的服务时一直失败,可以尝试修改并重启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应该不是性能最好的,但是它绝对称的上“好用”两字。

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

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

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

(全文结束)

责编内容by:漫漫路 (源链)。感谢您的支持!

您可能感兴趣的

腾讯音乐娱乐与阿里音乐首次互转授音乐版权... 【财新网】(记者 周淇隽) 如很多音乐行业人士预料,腾讯音乐娱乐与网易云音乐的版权纷争让腾讯和阿里走到了一起。9月12日,腾讯音乐娱乐集团(下称腾讯音...
2017 Top 6 开源项目 简评:开源是最酷的。让我们来看一下 2017 的一些顶尖高手。这个表单最有趣的事情之一就是它在过去 10 年中显示了开源社区的成熟度。这里展示的所以项...
猬报 | 连续三天出现故障的A站已经恢复;腾讯将出品“吃鸡”手游;律师称京东遭海量文章恶意抹黑... 连续出现三天故障的A站已经恢复访问 此前曾有传言说A站已被关停 猬报 · Less is More 01. 连续三天故障的A站已经恢...
原来,他才是众安保险的操盘手 众安 保险刚刚向港交所提交了上市申请。顶着“三马”(马明哲、马云、马化腾)光环的众安保险即将成为互联网保险第一股。此时距离它成立不到4年。在国内,众...
国庆出游攻略:腾讯王卡让旅途更多彩... 国庆长假即将到来,很多人都在计划外出旅游。期间,玩游戏、听音乐、看视频等必然成为他们游玩之余的调味剂,而发微信、晒朋友圈则将始终伴随他们旅程。因此,离开WIFI...