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

使用 Rust 加速前端 Log Service

新聞 前端
前陣子在公司內搭建了一個 Log Service,用來記錄前端的報錯信息,代碼一頓亂寫搞的七七八八之后實現了第一版的功能。

Intro

前陣子在公司內搭建了一個 Log Service,用來記錄前端的報錯信息,代碼一頓亂寫搞的七七八八之后實現了***版的功能。

流程很簡單,前端將以下格式的信息用 get 發到 Log Service:

{
  "url": "https://www.arkie.cn/scenarios",
  "channel": "frontend",
  "level": "FATAL",
  "crashId": "02x32f3",
  "stack": "base64 string ......",
  ...
}

Log Service 接受到這個請求以后,將 Stack 解析成 JSON : JSON.parse(decodeURIComponent(Buffer.from(query.stack, 'base64').toString())) , 解析后的 stack 是這樣的 :

[
  { "filename": "https://arkie-public.oss-cn-hangzhou.aliyuncs.com/js/main.c3600f3f.js", line: 1, column: 334222 },
  { "filename": "https://arkie-public.oss-cn-hangzhou.aliyuncs.com/js/common.752d2f13.js", line: 1, column: 113242 },
]

然后 Log service 會根據文件對應的 sourcemap (前端各項目 deploy 的時候已經上傳到私有 CDN 了) 解析出原始報錯位置。比如:

{
  filename: './src/modules/design/design.container.tsx',
  line: 102
}

***會將這些處理后的信息輸出到阿里云的 LogHub。

優化

做完***個脆弱的版本后發現時間僅僅過去了一天半,所以開始考慮優化的事情了。

***個版本有兩個問題,***個問題是在后端處理 log 的流程太長導致性能消耗有點大,第二個問題是實時處理 Log 在后面用戶增多之后服務器會不堪重負,而其實 Log Service 的實時性要求并沒有那么高。

對于***個問題,可以優化代碼性能(能優化才怪),分拆步驟(這個靠譜)來解決,第二個問題也可以通過分拆數據處理步驟來解決。

而分拆處理步驟這個解決方案可以通過在 Log Service 中加入一個 queue 來解決。比如接受到前端請求后,直接將原始數據塞到 queue 中,然后有一個 consumer 按一個***速率從 queue 中取出原始日志,處理之后再放入 LogHub,這一部分的細節就不贅述了,要寫的話展開又是一個長篇大論。

而優化性能這方面,我本來沒有抱什么希望,因為實在是看不出有啥可優化的。 base64 decode --> JSON.parse --> sourcemap parse 都用的是***層的標準庫調用( sourcemap parse 用的是 Mozilla 出品的 https://github.com/mozilla/source-map )

然而在上線的前夕,我突然想起了前不久學習 Rust 的時候看到的一個庫 neon-bindings

Rust!Rust!

是不是可以用更快的語言來優化 Sourcemap 處理的過程呢,同時大部分主要的繁瑣的業務還是使用 TypeScript 編寫。

調研了一圈發現,已經有國內的公司在項目里面用 neon 寫業務了: https://www.zhihu.com/question/19903210/answer/207779913

并且大家熟悉的 sentry 在生產環境中也是使用 Rust 來 parse Sourcemap https://segmentfault.com/a/1190000007299177,雖然他們是 binding 到了 python 上,但他們已經把 Rust 代碼開源出來了: https://github.com/getsentry/rust-sourcemap

也就是說我只需要把這部分的 Rust 代碼通過 neon-bindgs 封裝成 NodeJS 可調用的模塊就行了,不像 sentry 還要 port 出 C API 再通過 python 調用 C 的代碼,美滋滋。

寫代碼的過程和原理就省略了,代碼可以在: https://github.com/Brooooooklyn/sourcemap-decoder 看到,主要分享一些數據和踩的坑:

Benchmark

所以 Rust 比 JavaScript 代碼在處理同樣的 Sourcemap 時 parse 快多少呢?

我做了一個簡單的 benchmark, 測試結果如下:

$ node benchmark

JavaScript parse time 50794 microseconds

Rust parse time: 39 microseconds

JavaScript parse result, Source: webpack:///src/utils/logger/logger.ts, Line: 56

Rust parse result, Source: webpack:///./src/utils/logger/logger.ts, Line: 56

:sparkles:  Done in 0.33s.

Hardware Info:

ProductName:    Mac OS X
ProductVersion: 10.13.3
BuildVersion:   17D47
Model Name: MacBook Pro
Model Identifier: MacBookPro14,2
Processor Name: Intel Core i5
Processor Speed: 3.1 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 4 MB
Memory: 16 GB

Benchmark 代碼: https://github.com/Brooooooklyn/sourcemap-decoder/blob/master/benchmark/index.js

因為每次調用 Rust 的代碼會有一次 bootstrap 的過程以及 JavaScript 代碼在運行很多次后會被 JIT 優化,在一次性運行幾萬次的情況下差距可能縮小為十幾倍,有興趣大家可以自行嘗試。

CI/CD

剛寫完打算上線的時候,想讓 production 的鏡像盡量小一點(我們用的 Docker),所以直接在 Production 的 Image 上用了 node:8-alpine 作為 base image,相應的,CI 的鏡像(我們使用的是 Gitlab runner 的 Docker executor )也是用同樣的 base image,然后花了三個多小時嘗試在 Alpine 上安裝 latest rust toolchains 后失敗了,***不得不忍受 100 多 m 的體積差切換到了 node:8-slim。最終的國內可以流暢 build 的 Dockerfile 在 https://github.com/Brooooooklyn/sourcemap-decoder/blob/master/Dockerfile

Toolschains 安裝

由于眾所周知的原因,CI 在剛開始 build image 的時候異常的緩慢,直到超時被 Gitlab kill 掉,經過一個多小時頑強的抵抗后將所有可能撞墻的步驟全部替換成了 USTC 的 mirror。

主要是 dev 機器 rustup 安裝需要:

curl https://sh.rustup.rs -sSf | sed "s/https:\/\/static.rust-lang.org\/rustup\/dist/https:\/\/mirrors.ustc.edu.cn\/rust-static\/rustup\/dist/g" | sh

使用 USTC 的源安裝 Rustup

build 前需要:

cat > $HOME/.cargo/config << EOF
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
EOF

讓 Cargo 也是用 UTSC 的源(CI 環境也需要執行同樣的命令)

在 CI 的 Docker Image build 的時候需要 替換 Rust 下載源 以及 替換 Rustup源

詳情請參考 README

責任編輯:張燕妮 來源: 前端外刊評論
相關推薦

2021-07-16 10:32:33

前端元編程代碼

2024-05-22 10:03:59

2023-10-27 10:16:17

前端項目Rust

2020-09-01 12:23:01

CDN加速前端

2024-02-28 08:38:07

Rust前端效率

2024-09-30 09:25:29

2023-06-15 17:00:11

Rust循環

2024-03-12 08:22:50

TypeScriptRust框架

2015-04-20 10:06:37

PHP Rust 創建PHP 擴展

2024-05-23 08:12:45

Rust前端開發JavaScrip

2020-10-21 14:54:02

RustGolang開發

2023-05-26 17:21:15

PythonRust

2024-09-06 11:34:15

RustAI語言

2024-04-03 10:00:44

Rust編譯開發

2023-05-04 07:33:39

Rust變量常量

2023-06-12 08:00:48

Napi-rsRust 前端工具

2021-05-19 10:43:28

惡意軟件Rust的Buer

2024-01-09 09:27:57

Rust編程泛型

2024-01-07 17:29:10

編程語言線程Rust

2021-10-26 21:50:10

Rust嵌入式開發
點贊
收藏

51CTO技術棧公眾號

国产精品毛片在线看| 久久精品凹凸全集| 亚洲精品老司机| 精品日韩欧美| 中文字幕在线2019| 欧美女人交a| 亚洲天堂av高清| 人妻精油按摩bd高清中文字幕| av资源在线看片| 久久精品人人做人人综合 | 日本在线观看不卡视频| 久久精品亚洲一区| 免费看黄色aaaaaa 片| 日韩精品第二页| 欧美日韩中文字幕综合视频| 欧美13一14另类| 欧美福利一区二区三区| 国产黄色片在线播放| 日韩一区二区三区色| 婷婷亚洲久悠悠色悠在线播放| 日本在线视频不卡| 成人小说亚洲一区二区三区 | www.在线成人| 国产美女精品视频| 天堂中文在线网| 欧美精品二区| www.国产一区| 制服 丝袜 综合 日韩 欧美| 国产精品色在线网站| 欧美精品1区2区3区| 凹凸日日摸日日碰夜夜爽1| 牛牛精品在线视频| 亚洲青青青在线视频| 丝袜美腿玉足3d专区一区| 婷婷五月综合久久中文字幕| 国产精品自拍av| 国产女精品视频网站免费| 日韩精品久久久久久免费| 在线不卡视频| 欧美高清在线播放| 全国精品免费看| 日韩欧美高清一区| 色婷婷.com| 成人精品三级| 欧美亚一区二区| 欧美aⅴ在线观看| 热色播在线视频| 午夜日韩在线电影| 一本久道高清无码视频| 欧美性爽视频| 亚洲一区二区免费视频| 国产精品8888| 性欧美videos高清hd4k| 亚洲另类在线一区| 日韩精品第1页| √天堂8在线网| 一区二区三区在线视频播放| 久久久天堂国产精品| 性xxxxfjsxxxxx欧美| 亚洲乱码中文字幕| av在线免费观看国产| 黄网站在线观| 午夜久久久久久久久| 给我免费播放片在线观看| 国产精品yjizz视频网| 五月婷婷久久丁香| 37pao成人国产永久免费视频| 中文字幕在线中文字幕在线中三区| 精品日韩视频在线观看| 黄色片视频在线播放| 国产成人午夜性a一级毛片| 欧美日产在线观看| 亚洲成人av免费观看| av综合网址| 日韩精品久久久久久福利| 97人妻精品一区二区免费| 欧美伦理在线视频| 久久艳片www.17c.com| 国产精品变态另类虐交| 麻豆精品91| 成人免费网站在线看| 亚洲精品综合久久| 久久综合999| 亚洲一区二区三区乱码| 18在线观看的| 日韩欧美大尺度| 亚洲久久中文字幕| 视频在线一区| 亚洲欧美成人一区二区在线电影| 亚洲色图 激情小说| 欧美精品观看| 国产精品av电影| 国产精品系列视频| 91视频精品在这里| 做爰高潮hd色即是空| 麻豆蜜桃在线观看| 欧美精品亚洲二区| 精品一区二区视频在线观看| 成人午夜av| 国语对白做受69| 在线免费观看日韩视频| 99久久精品国产导航| 亚洲精品影院| 黄色在线免费观看网站| 欧美日韩极品在线观看一区| 久久免费精品国产| 欧美hd在线| 日韩av片电影专区| 成人乱码一区二区三区| 国产精品每日更新| 99爱视频在线| 亚洲精品一区二区三区中文字幕| 亚洲乱码国产乱码精品精天堂| 免费成年人视频在线观看| 久久国产精品久久久久久电车| 亚洲永久在线观看| 免费高清完整在线观看| 色婷婷激情综合| 人妻体内射精一区二区三区| 亚洲色图二区| 国产精品自拍小视频| 欧美女子与性| 五月激情丁香一区二区三区| 伊人影院在线观看视频| 午夜精品一区二区三区国产| 国产精品专区一| 国产精品一区在线看| 欧美性69xxxx肥| 激情综合丁香五月| 影音先锋亚洲精品| av一区二区三区在线观看| 久草中文在线观看| 欧美日韩和欧美的一区二区| 久久婷婷五月综合| 久久久久久久高潮| 蜜桃导航-精品导航| 黄色漫画在线免费看| 欧美日韩电影在线| 人成免费在线视频| 秋霞影院一区二区| 午夜精品一区二区三区四区 | 国产精品aaaa| 成人性生交大片免费看午夜| 色偷偷88欧美精品久久久| 中文字幕在线观看网址| 国产欧美二区| 久久精品二区| www.精品| 在线电影中文日韩| 91麻豆一区二区| 综合久久给合久久狠狠狠97色 | 99精品视频99| 2019国产精品| 亚洲色图 在线视频| 日韩欧美精品综合| 91精品在线影院| 污片视频在线免费观看| 精品国产一区二区在线观看| 日本网站免费观看| 26uuu久久天堂性欧美| 欧美牲交a欧美牲交aⅴ免费下载| 国产成人一区二区三区影院| 国产免费一区二区三区香蕉精| 淫片在线观看| 日韩色视频在线观看| 久久久久久久国产精品毛片| 99久久综合精品| 国产1区2区在线| 久久亚洲影视| 不卡视频一区| 中文字幕在线视频久| 在线亚洲国产精品网| 国产精品久久久久久无人区| 亚洲综合一区二区| 在线免费观看污视频| 丝袜亚洲另类丝袜在线| 日韩尤物视频| 日韩精品久久久久久久软件91| 色综合久久88色综合天天看泰| 三级网站免费观看| 欧美在线你懂的| 男人操女人的视频网站| 99热99精品| 污污的网站18| 激情五月***国产精品| 日韩妆和欧美的一区二区| 国产一区二区三区视频在线| 97久久精品人人澡人人爽缅北| bbbbbbbbbbb在线视频| 日韩一二三四区| 国产成人a v| 亚洲一区二区三区四区在线免费观看 | 日韩成人18| 国产www精品| 尤物视频在线看| 国产亚洲欧洲高清| 丰满肥臀噗嗤啊x99av| 欧美怡红院视频| 国产午夜激情视频| 亚洲视频一区在线观看| 麻豆av免费观看| 国产成人av一区二区三区在线 | 国内精品写真在线观看| 激情五月宗合网| 综合av在线| 亚洲一区二区三区精品视频| 亚瑟一区二区三区四区| 亚洲xxxxx性| 91p九色成人| 午夜精品久久久久久久久久久久久 | www.日韩在线| 在线观看日本www| 日韩电影一区二区三区| 亚洲中文字幕无码专区| 亚洲经典一区| 艳色歌舞团一区二区三区| 欧美美女在线观看| 国偷自产av一区二区三区小尤奈| 成年永久一区二区三区免费视频| 欧美中文字幕在线| 草草在线视频| 欧美第一黄色网| 菠萝蜜视频国产在线播放| 中文字幕亚洲一区二区三区| 精品视频二区| 亚洲免费视频观看| 亚洲欧洲精品视频| 亚洲成人av在线| 国产91麻豆视频| 制服.丝袜.亚洲.中文.综合| 中文亚洲av片在线观看| 在线精品亚洲一区二区不卡| 视频一区二区三区四区五区| 欧美日韩国产一区二区三区| 日韩xxx高潮hd| 亚洲国产另类精品专区| 日韩一级片av| 亚洲黄色片在线观看| 国产精品白丝喷水在线观看| 中文乱码免费一区二区| 国产精品成人在线视频| 中文字幕在线一区二区三区| 日本黄区免费视频观看| 国产精品久久久久久久午夜片| 亚洲精品国产熟女久久久| 久久青草欧美一区二区三区| 免费a级黄色片| 久久久久久久久久美女| 亚洲激情视频小说| 国产肉丝袜一区二区| 亚洲日本精品视频| 国产精品久久久久影院老司 | 51自拍视频在线观看| 国产精品正在播放| 91成人在线观看喷潮蘑菇| 成人a免费在线看| 波多野结衣先锋影音| 国产视频一区在线观看| 香蕉久久久久久久| 亚洲人成小说网站色在线 | 成人有码在线播放| 日韩综合一区二区三区| 粉嫩高清一区二区三区精品视频 | 亚洲国产综合久久| 丁香五六月婷婷久久激情| 天天干,天天干| 欧美伦理视频网站| 国产男女猛烈无遮挡| 日韩欧美国产综合| 手机看片福利在线观看| 国产一区二区av| а√中文在线8| 97碰在线观看| 69堂免费精品视频在线播放| 成人网在线观看| 欧美网色网址| 亚洲精品二区| 亚洲一级电影| 国产成人av影视| 国产精品一区三区| 18禁裸乳无遮挡啪啪无码免费| 欧美国产视频在线| 精品少妇一二三区| 在线视频中文字幕一区二区| 国产偷拍一区二区| 精品一区二区三区三区| 欧美一区二区三区在线观看免费| 欧美激情精品久久久久久变态| 欧美巨大丰满猛性社交| 国产美女久久精品香蕉69| 国产精品xxx在线观看| 天天人人精品| 亚洲高清毛片| 爱爱爱爱免费视频| 9l国产精品久久久久麻豆| 精品熟妇无码av免费久久| 偷拍日韩校园综合在线| 国产精品久久久久久免费免熟| 亚洲国产精品人人爽夜夜爽| 免费在线你懂的| 人人做人人澡人人爽欧美| 亚洲综合影院| av动漫免费观看| 久久精选视频| 911亚洲精选| 一区二区中文字幕在线| 精品人妻一区二区色欲产成人| 91精品福利在线一区二区三区| 精品成人一区二区三区免费视频| 欧美激情精品久久久久久免费印度| www成人在线视频| 激情小说网站亚洲综合网| 欧美影院一区| 欧美女同在线观看| 久久无码av三级| 日本三级免费看| 日韩小视频在线观看专区| 自拍视频在线网| 国产成人精品网站| 人人香蕉久久| 久久99中文字幕| 国产成人av一区二区三区在线 | 亚洲aaa视频| 日本韩国精品在线| 日本v片在线免费观看| 国内精品小视频在线观看| 日本成人精品| 777久久精品一区二区三区无码| 蜜桃久久av一区| x88av在线| 欧洲一区在线电影| 国产高清视频在线观看| 欧美亚洲在线播放| 欧美美女黄色| 国产特级黄色大片| 99re热这里只有精品免费视频 | 精品1区2区3区| 第一视频专区在线| 国产精品久久久久久久久久久久久久| 亚洲调教一区| 久久综合久久色| 久久精品视频一区| 成人av网站在线播放| 一区二区三区视频在线| 国产精品第一| 欧美aaa在线观看| 国产久卡久卡久卡久卡视频精品| 久久免费看少妇高潮v片特黄| 欧美一卡2卡3卡4卡| 肉肉视频在线观看| 国产精品日本一区二区| 国产日韩1区| 国产高潮呻吟久久| 欧美日韩一本到| 国产传媒在线播放| 国产91社区| 亚洲欧美激情诱惑| 日韩视频在线观看免费视频| 欧美日韩国产精选| 伊人手机在线| 久久艹中文字幕| 日韩中文字幕亚洲一区二区va在线| 九九热免费在线| 56国语精品自产拍在线观看| 天堂av中文在线| 免费久久久一本精品久久区| 日韩中文字幕一区二区三区| 久久人妻无码aⅴ毛片a片app| 日韩欧美色电影| 欧美男男激情videos| 亚洲黄色成人久久久| 国产尤物一区二区| 国产精品免费av一区二区| 亚洲午夜久久久久久久| 麻豆一二三区精品蜜桃| 青青青青草视频| 亚洲国产高清在线| 亚洲av无码国产精品永久一区 | 国内少妇毛片视频| 91丨九色porny丨蝌蚪| 中文字幕有码无码人妻av蜜桃| 色综合天天综合网国产成人网| 亚洲肉体裸体xxxx137| 在线免费黄色网| 精品久久中文字幕| 免费人成在线观看播放视频| 国产伦精品一区二区三区视频免费 | 性生交生活影碟片| 国产精品精品久久久| 欧美日韩亚洲一区三区| 成人免费无遮挡无码黄漫视频| 制服丝袜中文字幕一区| 亚洲女同av| 777久久精品一区二区三区无码| 国产视频911| 男人天堂综合网| 国产日韩专区在线| 免费永久网站黄欧美| www色aa色aawww| 亚洲人成人99网站|