从 Node 转向 Go,性能提升 5 倍,内存减少 40%
文章图片
作者|DavidBarroso
编译|梦依丹出品|CSDN(ID:CSDNnews)近日 , 开源服务软件Hasura在官博发文称 , 随着用户数的增加 , 软件规模化的性能开始成为一个问题 , 于是他们用Go重写了一个Node.js微服务 , 结果显示 , 内存消耗减少至一半而服务请求数量却增加了5倍 。
为什么会选择Go?
在可扩展需求变的愈加急切的情况之下 , Hasura团队决定用Go重写服务 。 选择Go的原因有很多 , 其中包括但不止于:
它的依赖性管理系统和构建系统非常适合云计算
Nhost团队对Go经验丰富
与Node.js相比 , Go显得非常冗长 , 但它易学且上手快
众所周知 , 其有着卓越的性能表现
有关这门语言的更多介绍 , 推荐你阅读ACM的这篇文章:https://cacm.acm.org/magazines/2022/5/260357-the-go-programming-language-and-environment/fulltext
重写服务
看似简单的事情 , 可做起来并不容易 。 事实上 , 重写工作并不顺利 , 尤其是编写这样的微服务 。 该服务非常方便有用 , 但并不执行过于复杂的任务 , Hasura-storage的创新和实用性来自于连接用户喜爱的两个伟大的服务:S3和Hasura , 而不是做任何异想天开的事情 。
重写完成后的性能表现
任何重写工作都避免不了进行基准测试 , 他们也一样 。 基于k6设计了以下测试环境 。 当测试开始时 , 它在最初的10秒内将用户数量从1提升到目标数 , 然后再运行60秒才结束 。
工作人员尽可能快地查询服务 , 我们运行以下测试 。
download_small_file(100workers)-下载一个100KB的文件
download_medium_file(100workers)-下载一个5MB的文件
download_large_file(50workers)-下载一个45MB的文件
download_image(100workers)-下载一个5.3MB的图片
download_image_manipulated(10workers)-下载相同的图片 , 但要调整图片的大小 , 并即时应用一些模糊的效果
CPU被限制在整个系统的10%
内存没有限制
在看到结论之前 , 这里想澄清一下 , 你将要看到的数字不应该从表面上看 , 用于基准测试的系统的CPU容量相当有限 , 所以想给两个服务施加些压力 , 看看它们在压力下的表现 , 所以 , 大家感兴趣的不是原始数字 , 而是两个版本之间的差异 。
请求数
请求数是衡量重写是否有意义的重要指标:
文章图片
如图所示 , 在各种情况下 , 所提供的请求数量都有大幅提高 , 特别是对于较小的文件 , 有5倍的提升 。
内存消耗
内存是一种有限的资源 , 如果一个系统达到了它的极限 , 就不容易对它进行节流 。 传统的系统依靠交换磁盘 , 但对整体性能影响巨大 。 现代系统依靠的是在达到阈值时重启服务 。 正是由于这个原因 , 不同情况下的内存使用峰值是很重要的 , 如果你达到一定的数值 , 你的服务就会被重新启动 , 如果服务被重新启动 , 它就不能为请求提供服务 。 下面可以看到上述不同场景下的峰值使用情况 。
文章图片
如图所示 , 该项指标中多种情况下都得到了较大的提升 , 尤其是在下载大文件时 。
响应时间
关于响应时间这个指标 , 主要看两个方面 , 最小响应时间 , 以及在95%的页面之下 , 大多数用户端的响应时长最多是多少(包括系统有压力时) 。
下面先看一下最小响应时间 。
- 本文转自:北京青年报曾打开国内民宿行业格局|爱彼迎败走,租赁平台何去何从?
- 小米科技|小米手环7:全面“大”进化 让你的生活从此离不开它
- Redmi|卢伟冰做到了!Redmi让手机行业从10W升级到120W只用短短不到3年时间
- A轮融资|618数码攻略,从手表到手机,性价比超高的四款产品:低至899元
- 一加科技|从4299降到2499元,12GB+256GB,年轻人的第一台哈苏手机
- 据BGR报道|美国得克萨斯大学研究出一种凝胶薄膜,可以从稀薄的空气中取水
- 不知道有没有人因为iPhone无法提供通话录音而换成Android?在我们调查的过程中|从今天起 你的iPhone可以通话录音了
- 日本三大室内游乐场,如何从疫情重击中恢复?
- 从小米平板4到小米平板5|一年一代!小米平板6首曝:或8月发布、搭载天玑8100处理器
- 小米|一年一代!小米平板6首曝:或8月发布、搭载天玑8100处理器