速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Timehop 为什么使用 Go 替代 Rails

  • 2015-03-09
  • 本文字数:1084 字

    阅读完需:约 4 分钟

Go 语言从一面世就受到了很多开发者的关注,尤其它的并行机制使得开发者能够非常容易地编写多核和网络应用。当前,越来越多的项目基于 Go 语言实现,如著名的开源容器Docker PaaS 平台 Deis 、Google 的 Kubernetes 等。此外,还有众多项目迁移到了 Go 技术栈,如 Dropbox 从 Python 转向了 Go Bowery 从 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-09 09:424099
用户头像

发布了 46 篇内容, 共 52.5 次阅读, 收获喜欢 15 次。

关注

评论

发布
暂无评论
发现更多内容

低代码开发 轻松解决企业数字化能力建设困局

力软低代码开发平台

解码全栈

互联网工科生

开发者 全栈工程师 全栈开发

悦数图数据库与 keyarchOS 完成浪潮信息澎湃技术认证

悦数图数据库

数据库 图数据库 分布式图数据库

图数据库有哪些:知名图数据库产品和应用场景介绍

悦数图数据库

数据库 图数据库

业内首份!电信和互联网数据安全标准汇编发布(附下载)

极盾科技

数据安全

学习 ChatGPT 一切基础知识的绝佳资源

3D建模设计

人工智能 ChatGPT LLM

从FTP到SFTP,哪个才是跨国传输大文件的最佳方案

镭速

大文件传输 传输大文件 跨国大文件传输

如何设计自动化测试落地方案

老张

自动化测试 测试方案

第二周作业

大肚皮狒狒

Dreamweaver 2021中文版下载 网页编辑软件dw2021纯净版

mac

苹果mac Windows软件 Dreamweaver 2021 网页编辑软件 DW021

使用three.js与WebGL相比有什么优势?

3D建模设计

WebGL three.js

面部表情识别的伦理问题与应对策略

来自四九城儿

【HCDG城市行东莞站】松山湖开发者村助力企业释放数字新动能

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 8 月 PK 榜

OpenTiny Vue 3.10.0 版本发布:组件 Demo 支持 Composition 写法,新增4个新组件

OpenTiny社区

前端 开源项目 UI组件库

百度智能云推出828大促活动,文心AI作画低至9.9元

科技热闻

提升研发效能的低代码思路

高端章鱼哥

自动化 研发效能 低代码 JNPF

2023.10.14-价值最大化沙盘演练

ShineScrum

使用 ChatGPT 的代码解释器进行数据科学的 5 种方法

3D建模设计

Python 数据分析 ChatGPT

LangChain + Streamlit + Llama:将对话式AI引入本地机器

3D建模设计

人工智能 LLM

5 个 实用的 JavaScript 开发小技巧

互联网工科生

JavaScript Web应用开发

UltraEdit mac(文本编辑器) v22.0.0.18中文版下载

mac

UltraEdit 文本编辑器 苹果mac Windows软件

如何高效实现混合App开发?

FinFish

混合开发 小程序化 混合app 超级App开发

Adobe联创去世,没他就没有PDF,乔布斯也因他逆风翻盘

Openlab_cosmoplat

PDF

这款Linux不收费,却赢得了江湖!

高端章鱼哥

Linux 开源 npm

面部表情识别技术的最新研究进展

来自四九城儿

面部表情识别技术在人机交互中的应用

来自四九城儿

Timehop为什么使用Go替代Rails_Google_李小兵_InfoQ精选文章