狠狠操夜夜甜|人妻在线中文字幕亚洲无码不卡av|一区二区欧美亚洲|日躁夜躁狠狠躁2001|亚洲,超碰,欧美|18AV成人电影|午夜成人免费在线|婷婷激情网深爱五月|色欲综合成人在线|在线美女搞黄大片

中企動力 > 頭條 > 日期方法

網站性能檢測評分

注:本網站頁面html檢測工具掃描網站中存在的基本問題,僅供參考。

日期方法

騰訊貢獻大規(guī)模 Node.js 微服務框架 Tars.js 企業(yè)視頻課程

img

懷綠

關注
隨著互聯(lián)網的發(fā)展,越來越多的業(yè)務不僅僅由單一節(jié)點(或是單一語言)就可承載,而是趨向多語言分布式協(xié)同開發(fā)(如接入層由Node.js完成,邏輯(數據)層由C++/GO/Python實現)并由此組成大型異構系統(tǒng)。

我們(現SuperTeam)基于 Tars 體系研發(fā)出 Tars.js 以便用戶在不改變異構系統(tǒng)整體架構的情況下快速搭建(遷移)Node.js服務,并可非常方便的將原來的單一服務拆分為多個(邏輯)子服務。

Tars.js在騰訊內部經過5年多的沉淀與迭代(Node.js@0.10版本即提供支持),廣泛運用于騰訊QQ瀏覽器、騰訊桌面瀏覽器、騰訊地圖、應用寶、騰訊手機管家、互聯(lián)網+、騰訊醫(yī)療、騰訊覓影、保險、彩票等幾十個重要業(yè)務中,日承擔了上百億流量。

Tars.js包含下述特性:

l 100%由JavaScript編寫,不包含任何C/C++代碼。

l 多進程負載均衡與管理。

l 代碼異常監(jiān)控與重啟。

l 服務日志搜集與處理。

l HTTP(s)服務監(jiān)控與用量自動上報,并支持用戶自定義維度上報(PP監(jiān)控)。

l 符合 Tars(IDL)規(guī)范的編解碼模塊。

l 支持 TarsRPC調用與染色(模調自動上報)。

l 支持在線發(fā)送管理命令、拉取服務配置。

l 獨創(chuàng) LongStackTrace?異常跟蹤機制。

l …… 更多特性可訪問 @tars/node-agent 了解

設計理念:

?A.高自由度:

l 兼容所有(≥0.10)官方Node.js版本。

l 對 Node.js源碼無侵入無修改。

l 底層對上層完全透明,支持各種上層框架,無需變更。

也就是說:

您可以使用任何您熟悉的框架(如 Express.js/Koa.js等,包括但不僅限于Web框架),也無需對框架進行任何修改(無需引入任何中間件)。即可通過Tars.js運行,享受平臺提供的各種監(jiān)控與管理特性。

與此同時,Tars.js所提供的模塊,也可以根據您的需求引入(如未使用到則可不引入)。

?B.高性能:

Tars.js為高性能與大并發(fā)量而設計,使用了大量的前端(V8)優(yōu)化技巧(如FlattenString/FastProperties等)盡量降低所提供的能力對于業(yè)務性能的影響。

經過我們測試(WebServer),默認的旁路上報與監(jiān)控對服務性能的影響≤5%,常用模塊(RPC、日志等)性能位于業(yè)界前列。

?C.差異化:

Tars.js根據不同的業(yè)務類型提供差異化運營方案:

l 高流量業(yè)務:盡力降低框架對業(yè)務性能的影響。

l 低流量業(yè)務:充分利用硬件資源提升開發(fā)體驗。

HelloWorld

我們來看Node.js官網的 例子 (如下),無需任何變更,直接通過Tars.js進行部署,它會擁有哪些特性?

? 進程管理

默認基于 cluster 模塊進行負載均衡,進程數可以配置為1~max(CPU核心數)、還可配置為auto(物理核心數相同)以減小內存壓力提升“性價比”。

與此同時,進程僵死檢測也會同時啟動,實時監(jiān)控業(yè)務進程。

?案例說明

某服務在論壇UBB代碼轉HTML時,使用未優(yōu)化的正則表達式進行XSS攻擊過濾,但由于用戶發(fā)帖時圖片采用BASE64編碼,導致正則表達式計算時間過長,CPU使用率飆漲到100%:

開啟僵死檢測后,Tars.js監(jiān)控到業(yè)務進程僵死時,自動重啟業(yè)務進程,從而縮短了業(yè)務無響應時間:

Tars.js雖然無法解決業(yè)務代碼的問題(BUG),但會盡最大努力保證業(yè)務的可用性。

? 服務監(jiān)控

以服務名、接口名(URL-PATH節(jié))為緯度,統(tǒng)計總流量、平均耗時、超時率、異常率:

其中返回碼大于400(可配置)作為異常進行上報。

?監(jiān)控說明

Web服務一般由靜態(tài)與動態(tài)資源(接口)組成,由于靜態(tài)資源(本地文件)的請求耗時遠低于動態(tài)資源(業(yè)務邏輯),請求量往往又很高,拉低了服務整體耗時。

基于此,Tars.js將請求URL中的PATH節(jié)作為接口,每個接口均可查看其總流量、平均耗時、異常率,便于用戶全面了解服務性能。

? 特性監(jiān)控

無論您服務的類型是什么,總是會上報下述特性,便于回溯問題與評估性能:

l memUsage:內存用量,將會上報rss、heapUsed、heapTotal這三個用量(單位為字節(jié))

l cpuUsage:CPU用量,將會上報CPU使用率,數據匯總為邏輯單核(單位為百分比)

l eventloopLag:(任務)隊列延遲,每隔2秒采樣(單位為毫秒)

l libuv:I/O用量,將會上報activeHandles、activeRequests這兩個用量

各策略以平均值(Avg)、最大值(Max)、最小值(Min)分節(jié)點進行統(tǒng)計:

? 日志輸出

所有通過Console模塊(如console.log)輸出的日志,都會輸出到服務本地文件內。并附加相關信息(如下),方便定位問題。

日志格式:日期時間|進程PID|日志級別|輸出文件名與行號|日志內容

2018-07-0112:00:00|332|DEBUG|app.js:13|Serverrunningathttp://127.0.0.1:3000/

? LongStackTrace?

由于Node.js采用異步機制,在發(fā)生異常時堆棧不完整,導致定位問題復雜。

鑒于此,我們提供了長鏈路跟蹤技術在產生異常時自動附加前序調用堆棧,同時還支持在異常堆棧中過濾出用戶代碼部分。

由于開啟此特性時會造成性能損耗,故默認關閉,管理平臺等性能不敏感業(yè)務可直接通過配置開啟。

?案例說明

執(zhí)行上述代碼會拋出下述異常:

ReferenceError:ThisMayThrowErrorisnotdefined

atTimeout.setTimeoutas_onTimeout

at_disibledevent="http://superzheng.com/">@SuperZheng 創(chuàng)立于2017年。團隊成員均為全棧架構師(Super寓意Superman——無所不能),熟知Web(3D)、終端、后端與大數據計算,并由傳統(tǒng)前端向互聯(lián)網從業(yè)者方向發(fā)展。歡迎前端牛人加入,共創(chuàng)前端美好未來。

img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動力姐姐微信

img
img

TOP