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

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供洪江網(wǎng)站建設(shè)、洪江做網(wǎng)站、洪江網(wǎng)站設(shè)計、洪江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、洪江企業(yè)網(wǎng)站模板建站服務(wù),10年洪江做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
Hasura Storage 方面表示,在使用 Golang 進行重寫后,其可處理的 服務(wù)請求數(shù)增加了 5 倍,同時內(nèi)存消耗減半 。根據(jù)介紹,他們選擇 Go 的原因在于:
- 該語言的依賴性管理系統(tǒng)和構(gòu)建系統(tǒng)使其非常適合云
- 團隊有豐富的 Golang 經(jīng)驗
- 雖然 Go 是一種非常冗長的語言(尤其是與 Node.js 相比),但它 非常易于學(xué)習(xí)且編寫速度快
- 性能非常優(yōu)異
重寫完成后,Hasura Storage 團隊針對 Node.js 和 Golang 版本的服務(wù)運行了一些基準測試。使用了 k6 并設(shè)計了以下測試:
Hasura Storage 提前聲明稱,最終結(jié)果不應(yīng)該只看表面的數(shù)字;“ 用于基準測試的系統(tǒng)的 CPU 容量非常有限,因為我們想對這兩種服務(wù)施加壓力并看看它們在壓力下的表現(xiàn)如何所以,我們感興趣的不是數(shù)字,而是兩個版本之間的差異。 ”
測試結(jié)果表明,Hasura Storage 在每種情況下能夠處理的請求數(shù)都實現(xiàn)了大幅提升,其中較小的文件(5x)的效果更為顯著。
同時在所有情況下都設(shè)法大大改善了 RAM 消耗,尤其是在下載大文件時。值得一提的是,這還是在提供了多達 5 倍的請求的前提下。
Hasura Storage 提供了兩個數(shù)據(jù) :最小響應(yīng)時間,開源告訴我們系統(tǒng)未承受壓力時的響應(yīng)時間;以及 P95,開源告訴我們大多數(shù)用戶的響應(yīng)時間最多是多少(包括當(dāng)系統(tǒng)處于壓力之下)。
首先是 最小響應(yīng)時間。測試 用例 download_small_file 的結(jié)果不好從圖中目測,但 Hasura Storage 稱其將 場景的響應(yīng)時間從 Node.js 用例 的 29ms 提高到 Golang 用例 的 7ms。除了在 download_image_manipulated 中實現(xiàn)了大約 2 倍的改進外,在其他場景中則均實現(xiàn)了 4 倍的改進。
再是 P95。除 download_image_manipulated 和 download_large_file 外,大多數(shù)情況下都實現(xiàn)了 4 倍的改進。 Hasura Storage 解釋稱,雖然沒有像其他情況那樣戲劇性,但這兩種情況下都有實質(zhì)性的改進?!斑@是合理的,因為下載大文件會受到 I/O NET 的約束,而處理圖像則會受到 CPU 的約束。但即使如此,我們也很高興看到這種實質(zhì)性的改進?!?/p>
此外,圖像處理方面也有所改善。
在服務(wù)被重寫和測試后,Hasura Storage 將服務(wù)部署到了生產(chǎn)環(huán)境,一些重寫的好處也開始展現(xiàn)。如下圖所示(集群的一個節(jié)點中的 RAM 使用情況), 內(nèi)存占用減少了近 40%?!斑@是一項重大改進,可以讓我們在不增加整體基礎(chǔ)設(shè)施費用的情況下為更多用戶和流量提供服務(wù)。”
Hasura Storage 方面表示,他們決定重寫服務(wù)是為了提高性能指標;而在對兩個服務(wù)進行并列基準測試后,他們也可以有底氣的宣稱成功地 顯著改善了所有指標 ?!?nbsp;我們希望能夠在使用更少資源的同時滿足更多請求,同時還可以改善我們用戶的響應(yīng)時間,我相信他們會喜歡的 ?!?/p>
名稱欄目:用Go重寫Node.js服務(wù):項目性能提升5倍,內(nèi)存減少40%
文章源于:http://m.fisionsoft.com.cn/article/dpdpdse.html


咨詢
建站咨詢
