精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊 Sdk 和問題排查

開發(fā) 前端
當(dāng)我們以 sdk 的方式提供一種能力的時(shí)候,我們的實(shí)現(xiàn)不僅決定了業(yè)務(wù)的使用方式和成本,還決定用戶是否樂意使用它。

不分享什么知識(shí),聊一下最近的一些思考和看到的一些內(nèi)容。這兩個(gè)內(nèi)容看起來沒什么關(guān)系,其實(shí)也有關(guān)系。

sdk 大家都不陌生,比如我們經(jīng)常用到的 npm 包。當(dāng)我們以 sdk 的方式提供一種能力的時(shí)候,我們的實(shí)現(xiàn)不僅決定了業(yè)務(wù)的使用方式和成本,還決定用戶是否樂意使用它。所以我們不能只考慮到功能,還需要考慮到使用方式以及 sdk 本身對(duì)業(yè)務(wù)的影響,不管是穩(wěn)定性還是性能。當(dāng)我們的 sdk 對(duì)業(yè)務(wù)來說是剛需時(shí),如果 sdk 有問題,業(yè)務(wù)可能會(huì)聯(lián)系我們處理,因?yàn)樗枰@個(gè) sdk。但是如果對(duì)業(yè)務(wù)來說這個(gè) sdk 不是剛需時(shí),業(yè)務(wù)可能直接 uninstall 我們的 sdk 并刪除對(duì)應(yīng)的代碼。這對(duì)于提供 sdk 的我們來說顯然不是個(gè)好事情。但是不管是否剛需,作為提供方,我們都需要努力去做好所提供的服務(wù)。

1 內(nèi)嵌形式

## 1.1 內(nèi)嵌于業(yè)務(wù)代碼的形式

我們使用的 sdk 大多數(shù)都是引入業(yè)務(wù)代碼中,然后使用它提供的功能,這種情況下,有兩種模式,第一種是業(yè)務(wù)要感知 sdk 提供的 API。我們需要知道什么時(shí)候使用什么 API。第二種是業(yè)務(wù)不需要感知 sdk 提供的 API,或者說這時(shí)候 sdk 不提供 API,它本身就像一個(gè)黑盒子,業(yè)務(wù)引入后就內(nèi)置了某些功能,比如我們提供一個(gè)定時(shí)上報(bào)業(yè)務(wù)內(nèi)存使用情況的 sdk,那么業(yè)務(wù)就不需要關(guān)注 sdk 的具體實(shí)現(xiàn)。下面以統(tǒng)計(jì)請(qǐng)求耗時(shí)為例看看如何實(shí)現(xiàn)這個(gè) sdk。

1.第一種

  1.   start(...) {} 
  2.   end(...) {} 

第一種方式是比較樸素的實(shí)現(xiàn),sdk 提供了一個(gè) start 和 end 的 API,業(yè)務(wù)在開始請(qǐng)求和結(jié)束請(qǐng)求時(shí)分別執(zhí)行這兩個(gè) API,這樣 sdk 就可以計(jì)算出這個(gè)請(qǐng)求的耗時(shí)。但是這種方式看起來并不是那么友好,首先會(huì)侵入業(yè)務(wù)的代碼邏輯,其次業(yè)務(wù)還需要感知這個(gè) sdk,需要考慮什么時(shí)候調(diào) start,什么時(shí)候調(diào) end,而且 sdk 還依賴業(yè)務(wù)傳入請(qǐng)求和響應(yīng)的上下文,才能計(jì)算出某一個(gè)請(qǐng)求的耗時(shí),總的來說,這種方式比較麻煩。

2 第二種

我們希望對(duì)業(yè)務(wù)的侵入性和感知少一點(diǎn),所以決定直接劫持 Node.js 里的 API。Node.js 里以下面的形式可以創(chuàng)建一個(gè)服務(wù)器。

  1. http.createServer((req, res) => {}) 

那么我們直接劫持這個(gè) createServer。

  1. const createServer = http.createServer; 
  2. http.createServer = (cb) => { 
  3.   return createServer((req, res) => { 
  4.     const start = Date.now(); 
  5.     res.on('finish', () => { 
  6.         const cost = end - start; 
  7.       }); 
  8.     cb(); 
  9.   }); 

通常,sdk 是提供 API,由業(yè)務(wù)主動(dòng)調(diào)用,或者說觸發(fā) sdk 的代碼,因?yàn)?sdk 無法捕獲業(yè)務(wù)代碼什么時(shí)候需要使用 sdk 的某個(gè)功能。但是當(dāng)我們可以捕獲到業(yè)務(wù)什么時(shí)候需要我們時(shí),就可以以更好的方式去提供這個(gè) sdk。這種方式可以使得業(yè)務(wù)不需要過多感知 sdk,比如上面的例子中,業(yè)務(wù)只需要保證在調(diào)用http.createServer 之前執(zhí)行我們的 sdk 就可以。sdk 內(nèi)嵌業(yè)務(wù)代碼中是非常常見的形式,但是我們希望盡量減少對(duì)業(yè)務(wù)的侵入,或者說減少業(yè)務(wù)的心智負(fù)擔(dān),大家可能都有過這種經(jīng)歷,當(dāng)看到一個(gè) sdk 提供密密麻麻的參數(shù)時(shí),第一反應(yīng)就不想用了。

2 脫離業(yè)務(wù)代碼的形式

那么是否能以一種脫離于業(yè)務(wù)代碼的方式提供一個(gè) sdk,這樣不僅不會(huì)影響業(yè)務(wù)代碼,對(duì)于升級(jí) sdk 來說也更容易。但是這種方式往往不容易,主要取決于場(chǎng)景,比如業(yè)務(wù)需要通過一個(gè) sdk 上傳文件,那么這個(gè) sdk 以內(nèi)嵌的方式會(huì)比較合適。但是,某些場(chǎng)景下,脫離業(yè)務(wù)代碼的 sdk 是可以做到的,比如排查問題類的工具。在 Node.js 里,我們調(diào)試或診斷進(jìn)程的方式通常是在業(yè)務(wù)代碼里內(nèi)嵌相關(guān)的代碼,然后在必要的時(shí)候執(zhí)行對(duì)應(yīng)的代碼,比如獲取堆快照。因?yàn)槲覀兊拇a只有置身于進(jìn)程中,才能獲取到這個(gè)信息。但是不是所有的信息都需要置身于進(jìn)程中才能獲取,比如系統(tǒng)級(jí)的數(shù)據(jù)。我之前碰到一個(gè)問題,就是在某個(gè)場(chǎng)景下,WebSocket 連接會(huì)很快底被斷開,通過再客戶端 wireshark 捕獲的流量中,發(fā)現(xiàn)服務(wù)器會(huì)發(fā)送一個(gè) fin 包給客戶端,這樣就知道是服務(wù)器的問題了,但是又因?yàn)閺目蛻舳说秸嬲姆?wù)器中間還隔了很多層,無法知道是哪一層服務(wù)器主動(dòng)斷開了連接,最后通過服務(wù)器提供的工具找到了主動(dòng)發(fā)送 fin 包的服務(wù)器從而解決了問題。但是我發(fā)現(xiàn)服務(wù)器的那些工具用起來都非常復(fù)雜,如果不經(jīng)常用,很快就忘了各種命令和參數(shù),像這種場(chǎng)景,就可以封裝 sdk 給業(yè)務(wù)使用,這種形式不僅可以幫助業(yè)務(wù)排查問題,還不需要侵入業(yè)務(wù)代碼。

3 問題排查

 

我們排查問題通常借助日志,但是日志很多時(shí)候也解決不了問題,日志是靜態(tài)埋點(diǎn),打多了不僅浪費(fèi)存儲(chǔ),而且消耗性能,打少了可能缺少排查問題的上下文。但是無論如何,重點(diǎn)是日志是靜態(tài)埋點(diǎn),如果我們要加埋點(diǎn),就得重啟服務(wù),有些問題稍縱即逝,重啟后可能就很難復(fù)現(xiàn)了。所以除了靜態(tài)追蹤技術(shù)外,動(dòng)態(tài)追蹤技術(shù)就非常必要,也非常 cool 了,之前看了一下 ebpf,但是后來沒看了,最近重新研究了一下 ebpf 和所衍生的一些排查問題的工具,也看了一下 openresty 作者的文章《動(dòng)態(tài)追蹤技術(shù)漫談》,可謂是精彩。當(dāng)一個(gè)進(jìn)程或者系統(tǒng)有問題時(shí),我們希望保留現(xiàn)場(chǎng),然后再慢慢分析。但是我們?cè)谶M(jìn)程之外怎么能獲得進(jìn)程的數(shù)據(jù)呢?除了系統(tǒng)本身提供的一些命令外,這里想說的是一種更復(fù)雜但更強(qiáng)大的技術(shù)。操作系統(tǒng)和我們寫的業(yè)務(wù)代碼一樣,都是一些代碼的邏輯,我們?cè)趯懘a時(shí),經(jīng)常會(huì)用到鉤子或者劫持的技術(shù)。同樣,操作系統(tǒng)也不例子,但是操作系統(tǒng)為了提供這種技術(shù),實(shí)現(xiàn)上復(fù)雜得多。這種技術(shù)就是 ebpf,ebpf 是把用戶寫的代碼注入到內(nèi)核中,內(nèi)核有一個(gè)虛擬機(jī),滿足條件的時(shí)候就會(huì)執(zhí)行我們的代碼。

操作系統(tǒng)提供了鉤子機(jī)制,比如我們可以注冊(cè)一個(gè)鉤子到系統(tǒng),當(dāng)系統(tǒng)收到網(wǎng)絡(luò)包時(shí),就會(huì)回調(diào)我們。另外一種就是劫持,比如 kprobe 到實(shí)現(xiàn),當(dāng)我們寫一段代碼指示操作系統(tǒng)當(dāng)有人調(diào)用 x 的時(shí)候回調(diào)我們,操作系統(tǒng)就會(huì)把這個(gè)地址對(duì)應(yīng)的指令改成 int3(x86 架構(gòu)),然后執(zhí)行到 x 這個(gè)函數(shù)的時(shí)候,就會(huì)觸發(fā) int3 中斷,對(duì)應(yīng)的處理函數(shù)就會(huì)執(zhí)行我們注冊(cè)的回調(diào),然后再執(zhí)行真正的函數(shù)。很多技術(shù)都依賴 ebpf,比如 tcpdump。ebpf 厲害之處在于內(nèi)核編程可編程的了,真正情況下,我們可以通過基于 ebpf 的工具,從內(nèi)核中查到非常多的信息,以幫助我們排查問題。ebpf 非常流行,也非常復(fù)雜,就不討論太多,大家可以自行查閱相關(guān)信息。

 

責(zé)任編輯:武曉燕 來源: 編程雜技
相關(guān)推薦

2021-06-01 07:55:42

DockerEOFk8s

2020-05-09 13:49:00

內(nèi)存空間垃圾

2018-11-06 12:12:00

MySQL內(nèi)存排查

2021-08-24 08:01:15

死鎖工具多線編程

2022-05-08 09:11:44

WiFi樹莓派GO

2023-04-25 18:54:13

數(shù)據(jù)數(shù)據(jù)丟失

2024-08-14 14:20:00

2024-02-21 08:19:54

2021-07-30 05:12:54

智能指針C++編程語(yǔ)言

2022-01-26 19:42:05

MySQL亂碼排查

2024-10-29 08:08:44

2021-12-01 15:03:56

Java開發(fā)代碼

2015-09-21 09:10:36

排查修復(fù)Windows 10

2021-11-09 06:55:03

SQLServer排序

2024-12-02 09:10:15

Redis性能優(yōu)化

2024-10-14 08:09:08

2020-06-23 08:15:13

計(jì)算存儲(chǔ)分離

2022-02-08 17:17:27

內(nèi)存泄漏排查

2021-06-02 09:18:32

數(shù)據(jù)庫(kù)業(yè)務(wù)排查

2023-07-26 07:18:54

死鎖線程池
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品视频一区二区三区综合| 五月婷婷丁香网| 久久在线电影| 日韩天堂在线观看| 欧美老熟妇喷水| av中文字幕一区二区三区| 久久成人免费网站| 久久久久久网址| 人妻一区二区视频| 欧美成年网站| 色女孩综合影院| 99视频精品全部免费看| 同心难改在线观看| 久久丁香综合五月国产三级网站| 久久久久久久久亚洲| 无码少妇精品一区二区免费动态| 日韩有吗在线观看| 色欧美片视频在线观看在线视频| 在线观看17c| 国产鲁鲁视频在线观看免费| 国产大陆精品国产| 国产精品久久久久久av| 欧美精品成人久久| 日本不卡高清| 亚洲丁香婷深爱综合| 一个色综合久久| 这里有精品可以观看| 伊人婷婷欧美激情| 在线天堂一区av电影| 久久久久国产精品嫩草影院| 国产99久久久精品| 国产伊人精品在线| 亚洲中文无码av在线| 新67194成人永久网站| 久久天天躁狠狠躁老女人| 国产美女免费网站| 亚洲欧美校园春色| 亚洲精品久久久久中文字幕二区| 性高潮久久久久久| 精品国产一区二区三区性色av| 在线看不卡av| 十八禁视频网站在线观看| 美女在线视频免费| 精品美女久久久久久免费| 国产在线观看欧美| 青青草原av在线| 亚洲美女淫视频| 黄色高清视频网站| 黄色网页在线看| 自拍偷在线精品自拍偷无码专区 | 国产麻豆一区二区三区| 欧美女孩性生活视频| 日韩肉感妇bbwbbwbbw| 亚洲精品555| 精品视频免费在线| 性欧美1819| 欧美亚洲黄色| 制服丝袜亚洲精品中文字幕| 制服丝袜中文字幕第一页 | 国产日韩欧美高清免费| 亚洲2020天天堂在线观看| 日韩激情在线播放| 在线午夜精品| 日韩免费在线播放| 中国一区二区视频| 九九九久久久精品| 99re热精品| 少妇荡乳情欲办公室456视频| 国产精品小仙女| 国产伦理一区二区三区| 手机福利在线| 国产精品全国免费观看高清| 中文字幕一区二区三区精彩视频| 菠萝菠萝蜜在线视频免费观看| 一区二区三区免费网站| 国产高清av在线播放| 26uuu亚洲电影| 欧美网站一区二区| 波多野结衣中文字幕在线播放| av成人app永久免费| 日韩成人中文电影| 五月婷婷婷婷婷| 欧美日韩福利| 日本视频久久久| 国产又粗又猛又色又| 成人看片黄a免费看在线| 欧美日韩天天操| 国产激情小视频在线| 午夜精品福利一区二区三区av| 久草精品在线播放| 粉嫩av国产一区二区三区| 精品成人免费观看| 97人妻人人揉人人躁人人| 亚洲综合自拍| 日本一区二区在线播放| 99久久久久久久| 久久影院电视剧免费观看| 五月天色婷婷综合| 色在线中文字幕| 欧美精品第1页| 免费中文字幕av| 久久久久久久久久久9不雅视频| 国内精品免费午夜毛片| 中文字幕在线观看免费| www.欧美日韩| 一区二区三区av| 在线人成日本视频| 精品国产在天天线2019| 一级二级黄色片| 99成人精品| 亚洲a区在线视频| 国产区视频在线播放| 亚洲高清视频中文字幕| 爽爽爽在线观看| 狠狠色狠狠色综合婷婷tag| 久久久久中文字幕2018| 国产一区二区三区三州| 久久久久久久久岛国免费| 亚洲五码在线观看视频| 四虎影视成人精品国库在线观看 | 在线日韩av片| 亚洲最大免费视频| 午夜精品婷婷| 成人免费大片黄在线播放| 国产中文字幕在线播放| 婷婷综合另类小说色区| 真实乱偷全部视频| 91精品久久久久久久久久不卡| 日韩美女视频中文字幕| 天天射天天操天天干| 亚洲一区二区三区四区五区中文| 天堂av.com| 久久国产中文字幕| 国产精品色婷婷视频| 黄色免费在线播放| 欧美日韩国产在线| 亚洲婷婷在线观看| 伊人成年综合电影网| 91成人理论电影| h片在线免费| 91精品国产综合久久福利软件| 一本在线免费视频| 青青草国产成人av片免费| 日本一区二区在线视频| 性欧美hd调教| 国产亚洲精品综合一区91| 无码人妻精品一区二区蜜桃色欲 | 美女视频久久| 亚洲女同志freevdieo| 日韩激情av在线播放| 亚洲黄色三级视频| 99精品一区二区三区| 日韩av一二三四区| 自拍亚洲一区| 国产精品美乳在线观看| 五月婷婷在线视频| 欧美精品三级在线观看| 日本妇女毛茸茸| 国产成+人+日韩+欧美+亚洲| 亚洲欧洲日韩在线| 久久香蕉综合色| 在线一区av| 在线观看免费高清视频97| 国产美女www爽爽爽| 国产精品女主播av| 制服丝袜中文字幕第一页 | 久久亚洲春色中文字幕久久久| 欧美日韩精品在线一区二区| 欧洲亚洲视频| 国产成人av在线播放| 国产高清免费av在线| 精品视频资源站| 中文字幕电影av| 国产高清精品久久久久| 久久久久久久午夜| 欧美日韩一区二区综合| 91精品视频播放| av第一福利在线导航| 亚洲深夜福利网站| 国产乱子伦精品无码码专区| 亚洲成在人线免费| 国产亚洲精品熟女国产成人| 寂寞少妇一区二区三区| 丰满少妇久久久| 日韩av自拍| 国产精品美女xx| 日本在线精品| 久久久久国产精品免费网站| 毛片免费在线| 日韩午夜av电影| 国产精品久久久久久久久夜色| 最好看的中文字幕久久| xfplay5566色资源网站| 免费在线欧美视频| 超碰97人人做人人爱少妇| 看av免费毛片手机播放| 精品久久成人| 成人女人免费毛片| 国产成人精品亚洲日本在线观看| 久久视频中文字幕| 黄色片免费在线| 精品电影一区二区| 一区精品在线观看| 天天av天天翘天天综合网色鬼国产| 亚洲毛片亚洲毛片亚洲毛片| 国产成人亚洲综合a∨婷婷| 国产精品69页| 亚洲黄色免费| 国产精品亚洲天堂| 免费一区二区三区视频导航| 91文字幕巨乱亚洲香蕉| 国产91在线精品| 欧美一级片一区| 免费不卡av| 久久久av免费| 成人在线免费看| 日韩av在线网址| 精品久久久久成人码免费动漫| 在线看不卡av| 日韩视频在线观看一区| 亚洲一二三四在线| 中文字幕av久久爽av| 国产精品人人做人人爽人人添| 女人被狂躁c到高潮| 懂色av一区二区三区蜜臀| 国产乱码一区二区三区四区| 日韩精品一卡二卡三卡四卡无卡| 欧美 日韩 国产 高清| 亚洲区综合中文字幕日日| 特级西西444www大精品视频| 欧美日韩123| 中文字幕9999| a视频免费观看| 粉嫩一区二区三区性色av| 亚洲欧美天堂在线| 麻豆高清免费国产一区| 日韩亚洲在线视频| 老司机亚洲精品| 欧美在线观看成人| 在线亚洲欧美| av免费观看国产| 激情综合在线| 国产一二三在线视频| 韩国在线一区| 免费看黄在线看| 亚洲每日在线| 怡红院av亚洲一区二区三区h| 黄色综合网站| 免费在线观看视频a| 91久久亚洲| 日韩在线一级片| 老司机午夜精品视频在线观看| 亚洲视频在线a| 免费看日韩精品| 久热精品在线观看视频| 激情综合色丁香一区二区| 视频免费1区二区三区| 国产一区二区三区高清播放| 一级片免费在线观看视频| 国产成人午夜精品影院观看视频 | 97成人在线观看视频| 亚洲精选在线| 91视频最新入口| 天使萌一区二区三区免费观看| 日韩手机在线观看视频| 欧美aaaaa成人免费观看视频| 日本在线一二三区| 国产精品综合在线视频| 日韩黄色一区二区| www精品美女久久久tv| 亚洲自拍偷拍图| 亚洲欧美另类在线| 欧美三级韩国三级日本三斤在线观看| 色综合久久中文字幕| 在线观看色网站| 日韩欧美激情一区| 性猛交xxxx| 中文字幕欧美精品日韩中文字幕| 97caopron在线视频| 久久理论片午夜琪琪电影网| 成人私拍视频| 91九色视频导航| 九色丨蝌蚪丨成人| 色噜噜狠狠色综合网| 欧美日韩hd| 日韩一级片播放| 国产成人午夜99999| 亚洲AV无码国产成人久久| 中文字幕一区二区三区不卡在线| 久久久久久激情| 91黄色免费看| 性欧美8khd高清极品| 亚洲女人天堂av| 黄色视屏免费在线观看| 日本国产精品视频| 国产精区一区二区| 日韩免费av一区二区三区| 欧美va天堂在线| 欧美自拍小视频| 成人av网站在线| 99久久久免费精品| 色婷婷狠狠综合| 亚洲国产中文字幕在线| 中文在线资源观看视频网站免费不卡| 成人性生交大片免费看在线播放| 国产精品日韩av| 精品一区二区男人吃奶| 国产欧美一区二区精品秋霞影院| 天天摸日日摸狠狠添| 亚洲国产毛片aaaaa无费看| 在线观看中文字幕网站| 日韩电影中文字幕一区| 在线网址91| 国产区精品在线观看| 亚洲警察之高压线| 黄色一级片黄色| 久久精品国产秦先生| 熟女俱乐部一区二区| 亚洲成av人在线观看| av在线免费在线观看| 色悠悠久久久久| 欧美色网在线| 欧美h视频在线| 99在线热播精品免费99热| 91视频免费入口| 中文字幕在线不卡视频| 伊人久久中文字幕| 亚洲欧美国产制服动漫| 免费成人在线电影| 国产欧美日韩一区二区三区| 亚洲国产不卡| 九一精品久久久| 国产精品福利一区| 中文字幕+乱码+中文字幕明步| 亚洲男人天堂2023| 在线观看网站免费入口在线观看国内| 国产麻豆日韩| 激情91久久| 国产一卡二卡三卡四卡| 亚洲一区二区三区四区五区中文| 亚洲av色香蕉一区二区三区| 欧美成人sm免费视频| 国产精品亚洲四区在线观看| 在线观看视频黄色| 紧缚捆绑精品一区二区| 91嫩草丨国产丨精品| 在线播放91灌醉迷j高跟美女| 欧美96在线| 成人在线激情视频| 欧美1级日本1级| 日本xxxx免费| 亚洲国产精品人人做人人爽| 手机在线精品视频| 亚州国产精品久久久| 香蕉久久夜色精品国产更新时间| 岳毛多又紧做起爽| 久久久不卡网国产精品二区| 亚洲精品一区二三区| 日韩视频中文字幕| 激情综合婷婷| 国产精品国产对白熟妇| 97成人超碰视| 无码一区二区三区在线观看| 成人晚上爱看视频| 逼特逼视频在线| 国产色一区二区| 91国偷自产中文字幕久久| 久久成人在线视频| 国产三级精品三级在线观看国产| 美女av免费在线观看| 国产女人18毛片水真多成人如厕 | 日本一区二区三区视频在线观看 | 欧美日韩国产一区精品一区| 中文字幕99页| 色综合欧美在线视频区| 久草免费在线| 国产乱码精品一区二区三区中文 | 久久人人爽人人片| 亚洲成av人片一区二区梦乃| 韩国中文字幕2020精品| 成人国产精品色哟哟| 亚洲视频一二| 精品人妻无码一区| 日韩一级完整毛片| 天堂8中文在线最新版在线| 亚洲成人18| 国产成人超碰人人澡人人澡| 久久久久99精品成人片我成大片 | 激情亚洲综合在线| 国产污片在线观看| 最近2019年中文视频免费在线观看| 久久三级中文| av片中文字幕| 亚洲免费色视频| 免费在线稳定资源站| 亚洲综合中文字幕68页| 亚洲综合社区| 国产精品免费观看在线| 亚洲人成伊人成综合图片| 国产免费中文字幕|