一个NodeJs应用程序框架需要关注很多问题,如自动发布、多机部署、负载均衡、监控报警、日志的输出与管理、服务异常重启等等,而Tars应用程序框架就提供了解决这些问题的一整套方案。
Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C++,Java和NodeJs三种语言。
tars-node项目就是基于Tars这套成熟而强大的框架的扩展,让Nodejs服务能够运行在Tars应用程序框架中。项目地址: https://github.com/tars-node。
Tars应用程序框架上可运行http server以及支持 tars和json 两种协议的rpc client/server程序。
tars rpc client/server开发步骤详见:tars服务开发和示例文档
@tars/rpc模块的代码中提供了rpc client/server的Demo工程: https://github.com/tars-node/rpc/tree/master/examples
其中rpc-json目录下提供了基于json协议的rpc client/server ,rpc-tars目录下则提供了基于tars协议的rpc client/server。
使用Tars框架的服务,其的服务名称有三个部分:
APP:应用名,标识一组服务的一个小集合,在整个系统中,应用名必须是唯一的。例如:TestApp。
Server:服务名,提供服务的进程名称,其命名一般以“Server“结尾。例如:HelloServer。
Servant:服务者,提供具体服务的接口或实例。例如:Hello。一个Server可以包含多个Servant。
系统会使用服务的APP + Server + Servant,进行组合,来定义服务在系统中的路由名称,称为路由Obj,其名称在整个系统中必须是唯一的,以便在对外服务时,能唯一标识自身。因此在定义APP时,需要注意APP的唯一性。
关于命名规则,参见: https://github.com/Tencent/Tars/blob/master/docs/tars_cpp_develop_specification.md
应该严格遵守命名规则,明确大小写。
登录tars管理系统,左侧菜单中可以看到服务管理菜单
点击菜单中的服务上线
“服务基本信息”表单需要填写服务的基本信息:
应用:填写该服务所属的应用名称,若要创建一个新的应用,可到系统管理>应用列表中新增
服务类型:根据服务实现的语言填写,此处选择NodeJs即可
服务名称:填写服务名称
模板名称:选择服务启动时所使用的配置文件名称,此处一般选择tars.cloud.default即可
是否启用set:指服务是否需要按set进行部署,选择“否“即可。
“OBJ部署信息”表单用于填写服务中servant的信息,需要关注的几个属性如下:
部署IP:选择服务将要部署的机器IP
OBJ绑定IP:obj要绑定到的ip,与部署ip相同
OBJ名称:obj的名称,一般使用servant名称+“Obj”来命名
OBJ端口:指OBJ要绑定的端口,如果不需要绑定特别的端口,可以点击自动生成端口来生成
是否tars:指服务是否使用tars协议。注意:此选项只能在开发tars协议的rpc server/client时勾选,若服务是http服务或者使用json协议的rpc服务,则不能勾选此选项
线程数:对于其他语言实现的tars服务,此选项指的是开启多少个业务处理线程,而对NodeJs服务来说此配置用于告知进程管理器开启多少个工作进程。
填写完这两个表单之后点提交即完成服务创建。
NodeJs服务打包必须要使用与目标运行环境相同(类似)的环境进行。
在打包环境中安装tars框架服务打包工具 npm install -g @tars/deploy
在需要打包的服务根目录下运行 tars-deploy servername,即可完成服务打包。
打包完成后在当前目录可以看到servername.tgz文件。
进入tars管理平台,从左侧菜单树进入前面步骤创建的服务,点击发布管理。
点击手动上传发布包,上传完成后,点击获取发布版本,选择刚刚上传的发布版本,点击发布,即可完成服务发布。
进入服务管理界面,若服务实时状态为active,则说明服务已经发布成功并正常运行。
tars管理平台还提供了很方便的快速回滚、服务包管理等功能。
进入tars管理平台,点击左侧菜单树服务管理>服务扩容,进入扩容管理界面
选择好要扩容的服务,点击下一步
选择要扩容到的机器,点击提交扩容,即可快速完成服务扩容步骤。
进入tars管理平台,从左侧菜单树进入服务管理>服务下线
根据应用名称和服务名称查询到要下线的服务
选择要下线的服务,点击下线,若服务实时状态是inactive,则可下线该服务。
转自:http://tars.tencent.com/base/help/TARS_quick_start_NodeJs.html#_Toc477541394