写点什么

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:424072
用户头像

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

关注

评论

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

数据资产入表:解锁企业价值新蓝海

郑州埃文科技

数据治理 数据要素 数据资产入表

亚马逊Amazon商品详情API接口(主图|SKU|标题|价格|库存)

tbapi

亚马逊 亚马逊商品详情接口 亚马逊API接口 亚马孙商品数据采集

零信任SDP更新 卓越性能全新体验

芯盾时代

iam 统一身份认证 零信任 sdp

如何将文本转换为向量?(方法二)

DashVector

人工智能 数据库 大模型 向量检索服务

百度冯景辉:从数据清洗到安全围栏,深度解析大模型原生安全构建

百度安全

大数据时代来袭,那么工程领域的数据科学如何成为行业的新超级英雄呢

Altair RapidMiner

人工智能 设计 仿真 altair

云计算优化震撼828,华为云Flexus X实例邀请您分享数字化转型红利

YG科技

科大讯飞学习机P30和C10 Pro 区别对比评测

妙龙

科大讯飞 学习机

高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用

vivo互联网技术

Disruptor 无锁 伪共享 内存队列 CPU Cache

LLM活动 | 与UP主“老陈打码”一起使用PAI×LLaMA Factory搭建AI诸葛亮

阿里云大数据AI技术

人工智能 阿里云 AIGC LLM PAI

斥巨资给自己买了个礼物,程序员专用显示器真香

王中阳Go

显示器 #程序员

使用PAI × LLaMA Factory 微调 Llama3 模型

阿里云大数据AI技术

人工智能 模型训练 LLM PAI

如何将文本转换为向量?(方法三)

DashVector

数据库 向量检索 大模型

2024巴黎奥运会:中国战绩报告分析

搞大屏的小北

数据分析 巴黎奥运会 中国队 金牌 奖牌

执行可执行程序时遇到error while loading shared libraries错误解决

百度搜索:蓝易云

合约量化系统开发详细流程丨量化合约系统开发源码实例说明分析

V\TG【ch3nguang】

量化合约系统开发

基于51单片机设计的计算器

DS小龙哥

8月月更

关于聚合卡牌盲盒模式系统开发逻辑方案设计程序(成熟代码)

V\TG【ch3nguang】

Java Agent 开发初探

FunTester

京东集团项目管理人才发展通道代表受邀参加第三届中国PMO&PM大会

京东零售技术

企业号2024年8月PK榜

Dockerfile创建镜像异常问题解决

百度搜索:蓝易云

水底下的云

脑极体

云计算

检索增强生成 (RAG),AI届的新星“厨师”

澳鹏Appen

rag 检索增强生成

人工智能 | 打造领域专属的大语言模型

测吧(北京)科技有限公司

测试

数据工程(四)数据架构设计:连接数据与战略,驱动业务增长

数造万象

数据架构 数字化 数据工程

精选:适合小团队的8款协作工具推荐

爱吃小舅的鱼

团队协作 团队协作工具

程序员喜欢的7个免费公共API

幂简集成

API 免费API

云服务应用就在828,精准优化企业管理,华为云Flexus X实例有你好看!

YG科技

互联网快速发展电商APP云服务器使用与服务

百度搜索:蓝易云

解决Apache Tomcat “Request header is too large“ 异常

百度搜索:蓝易云

如何在云服务器上部署网站

百度搜索:蓝易云

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