Stream:我们为何要从Python转到Go语言?
Thierry Schellenbach
Stream 最近将其后端核心服务从 Python 改成了 Go。虽然他们的某些模块仍然在使用 Python,但是公司已决定从现在开始使用 Go 来编写对性能要求较高的代码。文中,Stream 的 CEO 兼创始人 Thierry Schellenbach 将解释他们决定转向 Go 的原因。
影响项目或者产品编程语言选型的因素有很多。与任何技术决策一样,选择编程语言时同样需要多方面权衡,即使这样,最终的选择结果都很难是完美的。我们最近将后端的核心服务从 Python 改成了 Go,原因有很多,好处也很多。
为了理解这一变化的重要性,需要先了解我们的产品。Stream 是一套用于构建、伸缩、定制化新闻源和活动流的 API。每个月为 3 亿多用户提供约 10 亿次 API 请求。我们尤其关注性能和可靠性,这两点因素决定了我们制定的每项技术决策。
性能更优
Go 最大的卖点在于它的性能,无论在运行还是编译时它都有突出的性能优势。它与 Java 或者 C++ 的运算速度几乎相当。在实际使用中,我们发现它比 Python 大约快 30 倍。
选择快速工具对提升系统性能非常重要,因此我们对 Cassandra、PostgreSQL、Redis 以及其他一些技术进行了优化。然而,很多时候我们发现系统仍然存在瓶颈,而瓶颈正好在于我们的编程语言 Python。Python 在执行序列化、排序和聚合等计算密集型任务时需要花费很长的时间,有时比从网络上存取和检索数据花费的时间更长。我们知道这个时间是可以优化的。从 Python 切换到 Go 就可以缩短时间,这样一来,应用程序代码就更像是服务之间的粘合剂,而不再是优化中的主要瓶颈。
用 Go 编写的 Go 编译器也非常快。Stream 中最复杂的微服务就采用 Go 编写,它的编译时间仅仅需要 6 秒,Java 和 C++ 等工具链则慢得多,快则一分钟,慢则数小时。
名副其实的简单
简单是 Go 的重要特征!我敢向你保证,阅读 Go 语言的代码明显感觉更加简单。我们已经从多个 Python 代码库中迁移出来,我们发现这些 Python 代码的风格和框架会因为作者的不同而风格各异,往往带有很多作者个性化的东西。而 Go 恰恰相反,它推崇干净的代码风格,同时要求作者编写代码时严格遵守规范,禁止作者“自作聪明”。虽然这样有时候会使用更加冗长的代码,牺牲了代码的简洁性,但是却让代码更容易阅读和理解了。这样一来,Go 才得以加快开发人员阅读他人代码的速度,同时,阅读自己曾经编写的代码也更容易。
原生并发性
Go 在语言层面通过 goroutine 和 channel 支持了并发。此概念源自 Tony Hoare 的 CSP 模式,它让程序员处理并发变得不再困难。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- Alex手机端贴的代码到simple就没啦😂 希望可以优化一下2018-07-23
收起评论