Stream:我们为何要从Python转到Go?
极客时间编辑部
讲述:丁婵大小:1.43M时长:03:07
最近,Stream 将其后端核心服务从 Python 改成了 Go。虽然他们的某些模块仍然在使用 Python,但是公司已决定从现在开始,使用 Go 来编写对性能要求较高的代码。
对此,Stream 的 CEO 兼创始人蒂埃里·肖伦巴克(Thierry Schellenbach)发文解释了他们决定转向 Go 的原因。
Stream 是一套用于构建、伸缩、定制化新闻源和活动流的 API。每个月为 3 亿多的用户提供约 10 亿次 API 请求。Stream 尤其关注性能和可靠性,这两点因素决定了他们制定的每项技术决策。
据介绍,Go 最大的卖点在于它的性能,无论在运行还是编译时,都有突出的性能优势。它与 Java 或 C++ 的运算速度几乎相当,在实际使用中,它比 Python 大约快 30 倍。
选择快速工具对提升系统性能非常重要,因此,Stream 也对 Cassandra、PostgreSQL、Redis 以及其他一些技术进行了优化。
然而,很多时候系统仍然存在瓶颈,而瓶颈正好在于 Python。Python 在执行序列化、排序和聚合等计算密集型任务时,需要花费很长的时间,有时比从网络上存取和检索数据花费的时间更长。
而这个时间是可以优化的,从 Python 切换到 Go 就可以缩短时间,这样一来,应用程序代码就更像是服务之间的粘合剂,而不再是优化中的主要瓶颈了。
同时,用 Go 编写的 Go 编译器也非常快。Stream 中最复杂的微服务就是采用 Go 编写的,它的编译时间仅仅需要 6 秒,Java 和 C++ 等工具链则慢得多,快则一分钟,慢则数小时。
此外,简单是 Go 的重要特征,一些 Python 代码的风格和框架,会因为作者的不同而风格各异,而 Go 恰恰相反,它推崇干净的代码风格,同时要求作者编写代码时严格遵守规范。 虽然,Go 有时候会使用更加冗长的代码,牺牲了代码的简洁性,但这样却让代码更容易阅读和理解了。
据了解,Stream 服务的强大功能之一是 feed 排名。开发 Python 版本的排名代码需要花费大约三天时间,包括编写代码、单元测试和编写文档。接下来,团队还需要大约两周的时间来优化代码。
相比之下,开发这些代码的 Go 版本大约花费了四天时间,并且不需要再对其性能实施进一步的优化。因此,虽然 Python 用来开发初期版本更快,但是整体来说,使用 Go 开发的工作量要小得多。
最终,Go 代码的执行速度要比精心优化的 Python 代码大约快 40 倍。总体来说,开发 Go 代码要花费更多的精力,但团队用来优化代码性能的时间却更少。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- TomShineGolang 还是值得学习的1
- 黄天黑土丁婵老师,您朗读的太棒了!
- 李孟go相当不错,那些数字币方面的平台,大部分都是go
收起评论