腾讯tars微服务框架

背景

闲来之余,试试腾讯开源的微服务框架tars。

tars的说明:https://github.com/TarsCloud/TarsDocs

包括微服务中的大部分功能,比如服务发现、服务治理、服务监控、服务定义等等功能。

平时工作中这些功能都是自己代码实现,有一个basesvr,然后当有新功能时基于basesvr开发出一个新的服务,这种方式相对落后;而且服务的升级、回滚、发现、治理功能还很不完善。

tars 框架安装

  • docker安装方式

安装CentOS官方版本:

1
yum install -y docker

  • 启动Docker服务
1
2
% sudo systemctl enable docker
% sudo systemctl start docker
  • 设置docker下载源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
新建目录

/etc/docker/daemon.json

输入:

{
"storage-driver": "overlay2",
"storage-opts":["overlay2.override_kernel_check=true"],
"registry-mirrors": ["https://948z38kw.mirror.aliyuncs.com"],
"insecure-registries":[],
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}

重启docker
  • docker启动mysql
1
2
3
4
5
6
7
8
% mkdir mysql-data
% sudo docker pull mysql:5.7
% sudo docker run -d --restart always --name tars-mysql \
--net=host \
-e MYSQL_ROOT_PASSWORD='123456' \
-v ${PWD}/mysql-data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime:ro \
mysql:5.7
  • docker 启动tars框架
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run -d \
--name=tars-framework \
--net=host \
-e MYSQL_HOST="192.168.101.124" \
-e MYSQL_ROOT_PASSWORD="123456" \
-e MYSQL_USER=root \
-e MYSQL_PORT=3306 \
-e REBUILD=false \
-e INET=ens192 \
-e SLAVE=false \
-v /data/framework:/data/tars \
-v /etc/localtime:/etc/localtime \
-p 3000:3000 \
-p 3001:3001 \
tarscloud/framework:latest

注意: -e INET=ens192 , 需要通过"ifconfig" 查看 192.168.101.124 对应的网卡值
  • 测试是否安装成功

upload successful

1
http://192.168.101.124:3000/

tars-cpp 安装

  • 编译工具安装
1
yum install glibc-devel gcc gcc-c++ bison flex cmake
  • 下载源码,安装
1
2
3
4
5
6
7
8
9
git clone https://github.com/TarsCloud/TarsCpp.git --recursive
cd TarsCpp
mkdir build
cd build
cmake ..
make
make install

编译报错时,因为TarsProtocol依赖其他项目,需要对应下载

创建cpp的http服务

这里不使用tars协议开发服务,而是使用http协议开发服务。

  • 创建服务
1
cmake_http_server.sh  TestApp HelloHttp Http
  • 修改代码实现
1
2
3
4
5
HttpImp.cpp 

doRequest(const TC_HttpRequest &req, TC_HttpResponse &rsp)

中可以通过req的函数获取head、url 来进行逻辑处理
  • 编译、打包服务
1
2
3
进入 "build" 目录,执行 make clean; make ; make tar 

生成HelloHttp.tar 包
  • tars 管理页面发布服务

upload successful

  • 发布服务
1
上传打包的HelloHttp.tar 包,服务正常发布后,显示

upload successful

  • 接口测试
1
浏览器直接调用http 请求,查看返回内容,正常;同时tars 查看HelloHttp日志正常,接口调用次数有统计。

结论

挺好用,以后会在正式环境中使用这套系统。