Tars.js 开源项目教程
Tars.js项目地址:https://gitcode.com/gh_mirrors/ta/Tars.js
项目介绍
Tars.js 是一个基于 Tars 体系研发的 JavaScript 框架,旨在帮助用户在不改变异构系统整体架构的情况下快速搭建(迁移)Node.js 服务。Tars.js 在腾讯内部经过 5 年多的沉淀与迭代,广泛应用于多个重要业务中,日承担了上百亿流量。Tars.js 包含多进程负载均衡与管理、代码异常监控与重启、服务日志搜集与处理等特性,支持 HTTP(s) 服务监控与用量自动上报,并支持用户自定义维度上报。
项目快速启动
安装依赖
首先,确保你已经安装了 Node.js 和 npm。然后,通过以下命令安装 Tars.js 的脚手架工具:
npm install -g @tars/nodetools-cli
初始化项目
使用脚手架工具初始化一个新的 Tars.js 项目:
nodetools init
编写 Tars 协议文件
创建一个 Tars 协议文件 Hello.tars
,定义主被调双方通信的数据结构和调用接口:
module Hello {
interface Test {
int add(int a, int b, out int c);
}
}
转换协议文件
使用 tars2node
工具将协议文件转换为 RPC 服务端代码:
tars2node --server Hello.tars
编写服务实现
创建一个实现文件 HelloImp.js
,实现 Hello.Test
接口:
const { Tars } = require("@tars/rpc");
const Hello = require("./Hello.js");
class HelloImp extends Hello.TestImp {
async add(a, b, c) {
c.value = a + b;
return 0;
}
}
module.exports.HelloImp = HelloImp;
启动服务
创建入口文件 app.js
,启动 Tars 服务:
const { Tars } = require("@tars/rpc");
const { HelloImp } = require("./HelloImp.js");
const impMap = {
"Hello.Test.TestObj": HelloImp
};
Tars.server.getServant(process.env.TARS_CONFIG || `./${process.env.APP_NAME}.${process.env.SERVER_NAME}.config.conf`).forEach(function (config) {
let svr = Tars.server.createServer(impMap[config.servant]);
svr.start(config);
});
打包发布
使用 tars-deploy
模块打包发布服务:
npm install -g @tars/deploy
tars-deploy <服务名>
应用案例和最佳实践
Tars.js 在腾讯内部广泛应用于多个重要业务中,如腾讯QQ浏览器、腾讯桌面浏览器、腾讯地图等。最佳实践包括:
- 多语言分布式协同开发:接入层由 Node.js 完成,逻辑(数据)层由 C++/GO/Python 实现。
- 服务拆分:将原来的单一服务拆分为多个(逻辑)子服务,提高系统的可维护性和可扩展性。
- 性能优化:使用前端(V8)优化技巧,如 FlattenString/FastProperties 等,尽量降低框架对业务性能的影响。
典型生态项目
Tars.js 提供了多个模块,支持 RPC 调用、日志、配置管理等功能。以下是一些典型生态项目:
- @tars/rpc:Tars RPC 调用模块。
- @tars/logs:日志组件,包含按大小、时间滚动的日志和远程日志。
- @tars/config:用于在线获取服务配置文件。
- @tars/monitor:提供服务监控、特性监控与 PP 监控上报支持。
通过这些模块,Tars.js 构建了一个完整的生态系统,支持用户在不同业务场景下的需求。