自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Go 重寫 Node.js 服務(wù):項(xiàng)目性能提升 5 倍,內(nèi)存減少 40%

開發(fā) 新聞
出于業(yè)務(wù)發(fā)展需求,Hasura Storage 團(tuán)隊(duì)近期將其原本用 Node.js 編寫的服務(wù)用 Golang 進(jìn)行了重寫。

Hasura Storage 是一項(xiàng)開源服務(wù),在 hasura 和任何 s3 兼容的存儲(chǔ)服務(wù)之上增加了一個(gè)存儲(chǔ)服務(wù)。其目的是能夠利用云存儲(chǔ)服務(wù),同時(shí)也利用 hasura 的功能,如它的 graphql API、權(quán)限、行動(dòng)、預(yù)設(shè)等。

出于業(yè)務(wù)發(fā)展需求,Hasura Storage 團(tuán)隊(duì)近期將其原本用 Node.js 編寫的服務(wù)用 Golang 進(jìn)行了重寫?!斑@個(gè)用 Node.js 編寫的服務(wù)在相當(dāng)長的一段時(shí)間內(nèi)為我們提供了良好的服務(wù), 但隨著公司的發(fā)展和用戶數(shù)量的大規(guī)模增加,性能開始成為一個(gè)問題 。雖然 Node.js 可能有很多可取之處,但優(yōu)異的性能和可擴(kuò)展性并不是其中之一?!?/p>

Hasura Storage 方面表示,在使用  Golang  進(jìn)行重寫后,其可處理的 服務(wù)請(qǐng)求數(shù)增加了 5 倍,同時(shí)內(nèi)存消耗減半 。根據(jù)介紹,他們選擇 Go 的原因在于:

  • 該語言的依賴性管理系統(tǒng)和構(gòu)建系統(tǒng)使其非常適合云
  • 團(tuán)隊(duì)有豐富的 Golang 經(jīng)驗(yàn)
  • 雖然 Go  是一種非常冗長的語言(尤其是與 Node.js 相比),但它 非常易于學(xué)習(xí)且編寫速度快
  • 性能非常優(yōu)異

重寫完成后,Hasura Storage 團(tuán)隊(duì)針對(duì) Node.js 和 Golang 版本的服務(wù)運(yùn)行了一些基準(zhǔn)測(cè)試。使用了  k6 并設(shè)計(jì)了以下測(cè)試: 

Hasura Storage 提前聲明稱,最終結(jié)果不應(yīng)該只看表面的數(shù)字;“ 用于基準(zhǔn)測(cè)試的系統(tǒng)的 CPU 容量非常有限,因?yàn)槲覀兿雽?duì)這兩種服務(wù)施加壓力并看看它們?cè)趬毫ο碌谋憩F(xiàn)如何所以,我們感興趣的不是數(shù)字,而是兩個(gè)版本之間的差異。 

測(cè)試結(jié)果表明,Hasura Storage 在每種情況下能夠處理的請(qǐng)求數(shù)都實(shí)現(xiàn)了大幅提升,其中較小的文件(5x)的效果更為顯著。

同時(shí)在所有情況下都設(shè)法大大改善了 RAM 消耗,尤其是在下載大文件時(shí)。值得一提的是,這還是在提供了多達(dá) 5 倍的請(qǐng)求的前提下。

Hasura Storage 提供了兩個(gè)數(shù)據(jù) :最小響應(yīng)時(shí)間,開源告訴我們系統(tǒng)未承受壓力時(shí)的響應(yīng)時(shí)間;以及 P95,開源告訴我們大多數(shù)用戶的響應(yīng)時(shí)間最多是多少(包括當(dāng)系統(tǒng)處于壓力之下)。

首先是 最小響應(yīng)時(shí)間。測(cè)試 用例 download_small_file 的結(jié)果不好從圖中目測(cè),但 Hasura Storage 稱其將 場(chǎng)景的響應(yīng)時(shí)間從 Node.js 用例 的 29ms 提高到 Golang 用例 的 7ms。除了在 download_image_manipulated 中實(shí)現(xiàn)了大約 2 倍的改進(jìn)外,在其他場(chǎng)景中則均實(shí)現(xiàn)了 4 倍的改進(jìn)。

再是  P95。除 download_image_manipulated 和 download_large_file 外,大多數(shù)情況下都實(shí)現(xiàn)了 4 倍的改進(jìn)。 Hasura Storage 解釋稱,雖然沒有像其他情況那樣戲劇性,但這兩種情況下都有實(shí)質(zhì)性的改進(jìn)?!斑@是合理的,因?yàn)橄螺d大文件會(huì)受到 I/O NET 的約束,而處理圖像則會(huì)受到 CPU 的約束。但即使如此,我們也很高興看到這種實(shí)質(zhì)性的改進(jìn)?!?/span>

此外,圖像處理方面也有所改善。

在服務(wù)被重寫和測(cè)試后,Hasura Storage 將服務(wù)部署到了生產(chǎn)環(huán)境,一些重寫的好處也開始展現(xiàn)。如下圖所示(集群的一個(gè)節(jié)點(diǎn)中的 RAM 使用情況), 內(nèi)存占用減少了近 40%?!斑@是一項(xiàng)重大改進(jìn),可以讓我們?cè)诓辉黾诱w基礎(chǔ)設(shè)施費(fèi)用的情況下為更多用戶和流量提供服務(wù)?!?/span>

Hasura Storage 方面表示,他們決定重寫服務(wù)是為了提高性能指標(biāo);而在對(duì)兩個(gè)服務(wù)進(jìn)行并列基準(zhǔn)測(cè)試后,他們也可以有底氣的宣稱成功地 顯著改善了所有指標(biāo) 。“ 我們希望能夠在使用更少資源的同時(shí)滿足更多請(qǐng)求,同時(shí)還可以改善我們用戶的響應(yīng)時(shí)間,我相信他們會(huì)喜歡的 ?!?/p>

責(zé)任編輯:張燕妮 來源: 開源中國
相關(guān)推薦

2022-06-07 08:07:05

GoNode.js

2015-12-14 10:39:14

2015-04-30 12:34:05

WordPressNode.js

2020-03-17 13:24:04

微服務(wù)架構(gòu)數(shù)據(jù)

2020-10-26 08:34:13

Node.jsCORS前端

2020-12-14 15:40:59

Nodefastifyjs

2020-12-28 08:48:44

JS工具fastify

2017-03-19 16:40:28

漏洞Node.js內(nèi)存泄漏

2017-03-20 13:43:51

Node.js內(nèi)存泄漏

2015-11-04 09:18:41

Node.js應(yīng)用性能

2012-02-02 15:14:29

Node.js

2021-01-18 09:43:58

Node.js前端服務(wù)端

2020-12-14 08:55:00

Node.js服務(wù)性框架

2020-05-29 15:33:28

Node.js框架JavaScript

2013-11-01 09:34:56

Node.js技術(shù)

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2022-08-28 16:30:34

Node.jsDocker指令

2020-01-15 14:20:07

Node.js應(yīng)用程序javascript

2023-06-30 23:25:46

HTTP模塊內(nèi)存

2020-01-03 16:04:10

Node.js內(nèi)存泄漏
點(diǎn)贊
收藏

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