当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

Tars.js

大规模 Node.js 微服务框架
授权协议 BSD-3
开发语言 JavaScript
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 楚皓君
操作系统 跨平台
开源组织 腾讯
适用人群 未知
 软件概览

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)。

每个模块(点击名称跳转)均有极为详细的文档(README)方便您在任何时候查阅。

  • const Service = require('egg').Service class tarsServerService extends Service { /** * 调用tars服务API(HTTP) * @param { String } url API路径 * @param { Object } options curl的配置信息 * @return { Object } 返回请求结果

  • 写在前面:tars是微服务架构模式,为什么使用?原来的mvc模式的开发以及耦合性太大,后期拆分以及测试维护上线影响等都逐渐显示出了短板,微服务意味着把m和c拆分可独立模块,详细不表。 1,安装tars核心组件 https://github.com/TarsCloud/Tars/blob/master/Install.zh.md 详细按照官方文档基本上都能安装,出现错误的注意查看日志 2,安装web

  • 曾几何时,业界流行使用LAMP架构(Linux、Apache、MySQL和PHP)来快速开发中小网站。LAMP是开放源代码的,而且使用简单、价格廉价,因此LAMP这个组合成为了当时开发中小网站的首选,号称“平民英雄”。而今,随着Node.js的流行,这使得JavaScript终于能够在服务器端拥有了一席之地。JavaScript成为了从前端到后端再到数据库层能够支持全栈开发的语言。而以MongoD

  • 腾讯TARS框架安装脚本 本文主要记录腾讯TARS框架安装的脚本,当前时间为2019-03-27,如果腾讯的TARS框架的源码做了结构上或者大的改动,脚本可能需要适当修改。 依赖环境的安装 software_install.sh #!/bin/bash echo "========DEPENDENCE SOFTWARE INSTALL START==========" # 安装软件源,为了后续

 相关资料
  • 本文向大家介绍微服务哪些框架相关面试题,主要包含被问及微服务哪些框架时的应答技巧和注意事项,需要的朋友参考一下 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一

  • ketchup 是一个基于 dotnet core 的微服务框架。网关:兼容 kong,rpc:grpc支持远程调用。

  • Adnc 是一个轻量级的 .Net Core 微服务开发框架,同时也适用于单体架构系统的开发。支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。

  • Seata 的事务上下文由 RootContext 来管理。 应用开启一个全局事务后,RootContext 会自动绑定该事务的 XID,事务结束(提交或回滚完成),RootContext 会自动解绑 XID。 // 绑定 XID RootContext.bind(xid); // 解绑 XID String xid = RootContext.unbind(); 应用可以通过 RootCon

  • 我在 PLay 2 中将我的应用程序划分为不同的项目。但我刚刚意识到我不知道如何在同一台服务器中运行多个播放应用程序。 有人知道怎么做吗? 让我们假设这是不可能的,因此,我将在同一个根项目中部署多个播放应用程序(微服务将充当插件)。你认为这会打败微服务架构吗?。我会让每个模块独立行动。