在进行本文实践之前,需要先完成TARS架的搭建,参考 TARS框架部署文档 (文末附链接) 。 在我们的实际应用中,目前基于 TARS,主要采用 Node.js 和 C++ 进行开发。对于 C++ 程序员来说,目前最热门的后台开发语言莫过于 Google 的 Go。TARS 框架最新的版本已经把内部的 TafGo 开源为 TarsGo。作为与时俱进的程序员,当然要尝鲜啦。
GO环境
开发环境显然要安装好 Go 了。请注意的是,TarsGo 要求 Go 版本 1.9 以上。最新稳定版已经是 1.14 了,安装最新版即可。Go 安装好之后,请注意配置好 $GOPATH 和 $GOROOT 环境变量,建议配置为 $HOME/go 目录。尽管在 Go 1.8 之后,go 命令的运行已经不再需要程序员配置上述变量(go 会自动配置,可执行 $ go env 查看),但是 TarsGo 的脚本在执行的时候还是需要依赖。
TarsGo包
执行go安装命令并编译:
上述命令会把 TarsGo 下载下来,并且将比较重要的一个命令 tars2go 安装好。同时需要注意cp命令目的路径参数最后的斜杆不要漏了,漏了会把tars2go重命名为bin
TarsGo 的官方 Quick Start 文档(文末附链接)的第一个例子,就是使用 tars 协议进行 server-client 的通信。不过我个人觉得,要说后台服务程序的 hello world 的话,第一个应该是 HTTP 服务嘛,毕竟程序一运行就可以看到效果,这才是 hello world 嘛。
给服务命名
TARS 实例的名称,有三个层级,分别是 App(应用)、Server(服务)、Servant(服务者,有时也称 Object)三级。在接触TARS框架的过程中我们已经初步接触到了:比如 TARS 基础框架中的 tarsstat,其服务的完整名称即为:tars.tarsstat.StatObj。
TARS 实例的名称其中一个非常重要的作用就是用于服务间名字服务寻址。而对于 HTTP 这样的直接对外提供服务的实例而言,其实这块相对不是很重要,我们更多的是以描述服务功能的角度去命名。这里我把我的 HTTP 服务命名为 amc.GoWebServer.GoWebObj
创建基础框架
和TarsCpp一样,TarsGo也提供了一个 create_tars_server.sh 脚本用于生成 TARS 服务,但却没有提供 create_http_server.sh 生成 HTTP 服务。所以这里我们就直接用它就行了:
执行后我们可以查看生成的文件,清除不需要的:
文件如下
其实留下的,各文件里的内容,实际上我们都要完全替换掉的……首先是修改makefile,自动生成的makefile内容是这样的:
我们把CONFIG := client行去掉就行了。
代码修改
main.go
接着是修改代码了。首先是 main.go,这里参照官方 Guide 的写法就好了,TarsGo 的 HTTP 实现用的是 Go 原生的组件。我稍微调整了一下,把回调函数放在 goweb_imp.go 中(imp 是 implementation,我以前一直以为是小恶魔的意思……),将 main.go 简化为:
代码还是比较简单的,无需多言。
goweb_imp.go
main.go 中的 HTTPRootHandler 回调函数定义在业务的主要实现逻辑 goweb_imp.go 文件中:
编译打包
编译打包上面的工程:
成功后,会在目录下生成目标文件 GoWebServer.tgz,后文部署发布时需要上传这个包。
部署发布
创建服务
在 TARS 管理平台主页中,点击 “运维管理”,界面如下:
TARS 管理平台没有专门的 “新增应用” 功能,所有 `app`、`server`、`object` 的新增都在这个界面中配置。输入一个不存在的对象,就相当于新增操作。所以我们新增 `amc.GoWebServer.GoWebObj`,就是在各项中如下填写:
• 应用:`amc`
• 服务名称:`GoWebServer`
• 服务类型:`tars_go`
• 模板:`tars.go.default`
• 节点:填写你打算部署的 IP 地址
• OBJ:`GoWebObj`
• 端口类型:`TCP`
• 协议:`非TARS`
• 端口可以自定义,也可以填好信息后点 “获取端口” 来生成。
各项填写完毕后,点 确定,然后刷新界面,重新进入 TARS 管理平台主页,可以看到界面左边的列表就多了上面的配置:
发布服务
点击 GoWebServer,显示 发布管理 子标签。在 服务列表 中选中需要发布的节点,然后点击 发布选中节点 按钮:
再点击 “上传发布包”,进入如下界面:
点击 “发布包” 右边的 “确定” 按钮,在弹出的对话框中选择前面提到的 GoWebServer.tgz 文件。给这个发布包写好描述之后,点击确认,开始上传发布包:
发布成功后,回到 “发布管理” 界面,在该界面中,选择刚才发布的包,然后点击发布,一切正常情况下,即可发布成功。
服务验证
假设前面获取到的 servant 端口为 18869,那么可以在机器上执行 curl 命令(比如我的机器 IP 是 192.168.211.128):
返回结果
这就验证 OK 啦,同时也说明了 TARS 管理平台的配置值配置正确了。
TARS可以在考虑到易用性和高性能的同时快速构建系统并自动生成代码,帮助开发人员和企业以微服务的方式快速构建自己稳定可靠的分布式应用,从而令开发人员只关注业务逻辑,提高运营效率。多语言、敏捷研发、高可用和高效运营的特性使 TARS 成为企业级产品。
附文中所有链接:
TARS框架部署文档: https://tarscloud.github.io/TarsDocs/SUMMARY.html
Quick Start 文档: https://tarscloud.github.io/TarsDocs/hello-world/tarsgo.html
TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。无论你在哪个行业,无论你使用什么技术栈,这里能助你快速实现你的创意。
点“在看”让TARS小姐姐变好看
本文分享自微信公众号 - TARS星球(TarsCloud)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。