BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Timehop为什么使用Go替代Rails

| 作者 李小兵 关注 0 他的粉丝 发布于 2015年3月10日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Go语言从一面世就受到了很多开发者的关注,尤其它的并行机制使得开发者能够非常容易地编写多核和网络应用。当前,越来越多的项目基于Go语言实现,如著名的开源容器DockerPaaS平台Deis、Google的Kubernetes等。此外,还有众多项目迁移到了Go技术栈,如Dropbox从Python转向了GoBowery从Node.js转向了Go等。近日,社交应用Timehop(中文译为时光机)的联合创始人Benny Wong发布了一篇题为《Timehop为什么使用Go替代Rails》的文章,该文章对Timehop从Rails转向Go的经历进行了总结。从文章中得知,Timehop的技术栈于2013年经历了从Rails到Go的转变;至今,Timehop已经高效、稳定地运行了一年半时间,并且每天活跃用户数达到了600万,其中95%的请求响应时间从Rails时代的700毫秒减少到70毫秒。InfoQ编辑现对文章进行了整理和汇总以供读者参考和学习,具体内容如下:

为什么需要技术栈的转变

Timehop自上线以来,其用户规模不断扩大和访问量不断增长,基于Rails/Ruby的Timehop渐渐地出现了性能瓶颈,Timehop急需高性能、支持并行处理、真正多线程的平台/语言以解决遇到的性能瓶颈问题。

为什么选择了Go

Go能够完全满足Timehop对高并发和并行处理的需要,其具有以下主要特征:

  • 性能方面:Go代码被编译为机器代码,所以不存在虚拟机或解析器等带来的额外开销
  • 静态编写方面:Go利用计算机来处理所有的编写错误,从而减轻了自己的负担
  • 并行处理方面:Go提供了语言级别的并发特性,这些特性使得Go的并行代码具有较高的可读性、条理性、安全性
  • 其他方面:Go还具有程序部署非常简便、标准库非常丰富等特征

Timehop的开发团队还对选择Go进行了一些讨论,如使用Go后会出现哪些意外、如何完成团队的技术切换、Go有哪些不足、部署时有哪些关键的库需要注意、如何进行托管和部署、能否使用Go创建API、Go程序在多态性和模块化方面是如何处理的、Google对Go的支持情况等,这些讨论内容为大家将自己应用的技术栈转向Go提供了参考依据。

此外,有关转向Go技术栈的经验总结,读者还可以阅读InfoQ去年发布的一篇题为《Bowery为什么从Node.js转向Go》的文章,文章总结了基于云技术的开发平台Bowery从Node.js转向Go的原因,这些原因包括Go具有强大的跨平台编程能力、快速部署、并发原语的支持、标准化的集成测试框架、强大的标准库、强大的开发者工作流工具等。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT