Tars.js- 大规模 Node.js 微服务框架

网友投稿 1166 2022-10-21

Tars.js- 大规模 Node.js 微服务框架

Tars.js- 大规模 Node.js 微服务框架

Tars.js 是基于 Tars 体系研发大规模 Node.js微服务框架,以便用户在不改变异构系统整体架构的情况下快速搭建(迁移) Node.js 服务,并可非常方便的将原来的单一服务拆分为多个(逻辑)子服务。

Tars.js 在腾讯内部经过 5年多的沉淀与迭代(Node.js@0.10版本即提供支持),广泛运用于腾讯QQ浏览器、腾讯桌面浏览器、腾讯地图、应用宝、腾讯手机管家、互联网+、腾讯医疗、腾讯觅影、保险、彩票等几十个重要业务中,日承担了上百亿流量。

Tars.js 包含下述特性:

100% 由 JavaScript 编写,不包含任何 C/C++ 代码。多进程负载均衡与管理。代码异常监控与重启。服务日志搜集与处理。HTTP(s) 服务监控与用量自动上报,并支持用户自定义维度上报(PP 监控)。符合 Tars(IDL) 规范的编解码模块。支持 Tars RPC 调用与染色(模调自动上报)。支持在线发送管理命令、拉取服务配置。独创 LongStackTrace™ 异常跟踪机制。…… 更多特性可访问 @tars/node-agent 了解

设计理念

高自由度

兼容所有(≥0.10)官方 Node.js 版本。对 Node.js 源码无侵入无修改。底层对上层完全透明,支持各种上层框架,无需变更。

也就是说:

您可以使用任何您熟悉的框架(如 Express.js / Koa.js 等,包括但不仅限于 Web框架),也无需对框架进行任何修改(无需引入任何中间件)。 即可通过 Tars.js 运行,享受平台提供的各种监控与管理特性。

与此同时,Tars.js 所提供的模块,也可以根据您的需求引入(如未使用到则可不引入)。

高性能

Tars.js 为高性能与大并发量而设计,使用了大量的前端(V8)优化技巧(如 FlattenString/FastProperties等)尽量降低所提供的能力对于业务性能的影响。

经过我们测试(Web Server),默认的旁路上报与监控对服务性能的影响≤ 5%,常用模块(RPC、日志等)性能位于业界前列。

差异化

Tars.js 根据不同的业务类型提供差异化运营方案:

高流量业务:尽力降低框架对业务性能的影响。低流量业务:充分利用硬件资源提升开发体验。

可用模块列表

由于篇幅有限未能展示所有能力,如果您有更多需求(如 RPC 调用等)可使用 Tars.js 所提供的模块(如下)实现:

@tars/rpc : Tars RPC 调用模块。@tars/stream : Tars(Tup) 协议编解码模块。@tars/logs:日志组件,包含(按大小、时间)滚动与远程日志。@tars/config:用于在线获取服务配置文件。@tars/monitor:提供服务监控、特性监控与PP监控上报支持。@tars/notify:用于服务(告警)消息上报。@tars/utils:辅助工具集合,包含 Tars 配置文件与 Tars RPC Endpoint 解析器。@tars/dyeing:Tars RPC 染色定义模块。@tars/registry:用于 Tars 名字服务查询(Servant ===> Endpoint)。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:被大厂面试官参考的Redis笔记,堪称Redis面试天花板
下一篇:LeetCode-27. Remove Element
相关文章

 发表评论

暂时没有评论,来抢沙发吧~