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

中企動力 > 頭條 > 接口監(jiān)控

網(wǎng)站性能檢測評分

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

接口監(jiān)控

騰訊貢獻(xiàn)大規(guī)模 Node.js 微服務(wù)框架 Tars.js 互聯(lián)網(wǎng)視頻課程

img

沈飛蓮

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

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

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

Tars.js包含下述特性:

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

l 多進(jìn)程負(fù)載均衡與管理。

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

l 服務(wù)日志搜集與處理。

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

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

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

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

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

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

設(shè)計(jì)理念:

?A.高自由度:

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

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

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

也就是說:

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

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

?B.高性能:

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

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

?C.差異化:

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

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

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

HelloWorld

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

? 進(jìn)程管理

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

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

?案例說明

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

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

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

? 服務(wù)監(jiān)控

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

其中返回碼大于400(可配置)作為異常進(jìn)行上報(bào)。

?監(jiān)控說明

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

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

? 特性監(jiān)控

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

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

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

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

l libuv:I/O用量,將會上報(bào)activeHandles、activeRequests這兩個用量

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

? 日志輸出

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

日志格式:日期時間|進(jìn)程PID|日志級別|輸出文件名與行號|日志內(nèi)容

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

? LongStackTrace?

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

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

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

?案例說明

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

ReferenceError:ThisMayThrowErrorisnotdefined

atTimeout.setTimeoutas_onTimeout

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

img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動力姐姐微信

img
img

TOP