Tars.js 开源项目教程

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 构建了一个完整的生态系统,支持用户在不同业务场景下的需求。

Tars.js项目地址:https://gitcode.com/gh_mirrors/ta/Tars.js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣宣廷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值