Tars.js大規(guī)模 Node.js 微服務(wù)框架
Tars.js 是基于 Tars 體系研發(fā)大規(guī)模 Node.js 微服務(wù)框架,以便用戶在不改變異構(gòu)系統(tǒng)整體架構(gòu)的情況下快速搭建(遷移) Node.js 服務(wù),并可非常方便的將原來(lái)的單一服務(wù)拆分為多個(gè)(邏輯)子服務(wù)。

Tars.js 在騰訊內(nèi)部經(jīng)過(guò) 5 年多的沉淀與迭代([email protected]版本即提供支持),廣泛運(yùn)用于騰訊QQ瀏覽器、騰訊桌面瀏覽器、騰訊地圖、應(yīng)用寶、騰訊手機(jī)管家、互聯(lián)網(wǎng)+、騰訊醫(yī)療、騰訊覓影、保險(xiǎn)、彩票等幾十個(gè)重要業(yè)務(wù)中,日承擔(dān)了上百億流量。
Tars.js 包含下述特性:
100% 由 JavaScript 編寫,不包含任何 C/C++ 代碼。
多進(jìn)程負(fù)載均衡與管理。
代碼異常監(jiān)控與重啟。
服務(wù)日志搜集與處理。
HTTP(s) 服務(wù)監(jiān)控與用量自動(dòng)上報(bào),并支持用戶自定義維度上報(bào)(PP 監(jiān)控)。
符合 Tars(IDL) 規(guī)范的編解碼模塊。
支持 Tars RPC 調(diào)用與染色(模調(diào)自動(dòng)上報(bào))。
支持在線發(fā)送管理命令、拉取服務(wù)配置。
獨(dú)創(chuàng) LongStackTrace? 異常跟蹤機(jī)制。
…… 更多特性可訪問(wèn) @tars/node-agent 了解
設(shè)計(jì)理念
高自由度
兼容所有(≥0.10)官方 Node.js 版本。
對(duì) Node.js 源碼無(wú)侵入無(wú)修改。
底層對(duì)上層完全透明,支持各種上層框架,無(wú)需變更。
也就是說(shuō):
您可以使用任何您熟悉的框架(如 Express.js / Koa.js 等,包括但不僅限于 Web 框架),也無(wú)需對(duì)框架進(jìn)行任何修改(無(wú)需引入任何中間件)。 即可通過(guò) Tars.js 運(yùn)行,享受平臺(tái)提供的各種監(jiān)控與管理特性。
與此同時(shí),Tars.js 所提供的模塊,也可以根據(jù)您的需求引入(如未使用到則可不引入)。
高性能
Tars.js 為高性能與大并發(fā)量而設(shè)計(jì),使用了大量的前端(V8)優(yōu)化技巧(如 FlattenString/FastProperties 等)盡量降低所提供的能力對(duì)于業(yè)務(wù)性能的影響。
經(jīng)過(guò)我們測(cè)試(Web Server),默認(rèn)的旁路上報(bào)與監(jiān)控對(duì)服務(wù)性能的影響≤ 5%,常用模塊(RPC、日志等)性能位于業(yè)界前列。
差異化
Tars.js 根據(jù)不同的業(yè)務(wù)類型提供差異化運(yùn)營(yíng)方案:
高流量業(yè)務(wù):盡力降低框架對(duì)業(yè)務(wù)性能的影響。
低流量業(yè)務(wù):充分利用硬件資源提升開發(fā)體驗(yàn)。
可用模塊列表
由于篇幅有限未能展示所有能力,如果您有更多需求(如 RPC 調(diào)用等)可使用 Tars.js 所提供的模塊(如下)實(shí)現(xiàn):
@tars/rpc : Tars RPC 調(diào)用模塊。
@tars/stream : Tars(Tup) 協(xié)議編解碼模塊。
@tars/logs:日志組件,包含(按大小、時(shí)間)滾動(dòng)與遠(yuǎn)程日志。
@tars/config:用于在線獲取服務(wù)配置文件。
@tars/monitor:提供服務(wù)監(jiān)控、特性監(jiān)控與PP監(jiān)控上報(bào)支持。
@tars/notify:用于服務(wù)(告警)消息上報(bào)。
@tars/utils:輔助工具集合,包含 Tars 配置文件與 Tars RPC Endpoint 解析器。
@tars/dyeing:Tars RPC 染色定義模塊。
@tars/registry:用于 Tars 名字服務(wù)查詢(Servant ===> Endpoint)。
每個(gè)模塊(點(diǎn)擊名稱跳轉(zhuǎn))均有極為詳細(xì)的文檔(README)方便您在任何時(shí)候查閱。
