最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

利用Python和数据获取技术实现智能旅游情报系统

阿Q说代码

Python 后端 数据获取

什么是正向代理和反向代理?

EquatorCoco

反向代理 正向代理

SpringBoot如何优雅的进行参数校验

不在线第一只蜗牛

Java 后端 springboot

u-blox 面向多个大众应用市场推出最新 Wi-Fi 6 模块NORA-W4

科技之家

不给灰暗留下死角:华为应用市场的安全之光

脑极体

应用

iOS开发优势解析,费用探究以及软件开发详解

从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

快乐非自愿限量之名

Python 数据可视化 信息可视化

容器镜像加速指南:探索 Kubernetes 缓存最佳实践

不在线第一只蜗牛

Kubernetes 容器化 集群

深入探讨iOS开发:从创建第一个iOS程序到纯代码实现全面解析

雪奈椰子

Netflix微服务经验教训

俞凡

微服务 最佳实践 netflix 大厂实践

2024南京国际智能机器人展览会

AIOTE智博会

机器人展 智能机器人展

什么样的商品管理系统可以驱动品牌增长?

第七在线

网心科技入选2023中国ToB行业影响力价值榜

网心科技

软件测试学习笔记丨Allure2 失败重试功能应用场景

测试人

软件测试

C#调用C++ (使用C++/CLI)

EquatorCoco

c++ C# 开发语言

商城小程序项目实现监控的可观测性最佳实践

观测云

小程序

Databend 开源周报第 137 期

Databend

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

华为云开发者联盟

开源 开发 华为云 华为云开发者联盟

从数据存储的演迁,看芯赛云分布式存储应用

科技热闻

Solana链狙击机器人:交易者的新宠

开发丨飞机丨 @aivenli

低代码与供应链行业的融合:开启数字化新时代

EquatorCoco

软件开发 低代码 供应链 项目开发

青亦学爬虫:根据淘宝天猫商品链接封装淘宝天猫商品详情数据接口

tbapi

淘宝API接口 淘宝商品详情接口 天猫商品详情接口 淘宝数据爬虫 天猫数据爬虫

那位拿了多个Offer的大佬分享了最新Go面经

王中阳Go

Go 后端 Go 面试题 面经 后端 大厂

智达方通全面预算管理系统,为企业带来更可靠的交付

智达方通

全面预算管理 全面预算管理系统

深圳站回顾|隐语最新功能、隐私计算硬核技术、数据要素实践干货全记录(附演讲视频)

隐语SecretFlow

拓展AI边界:去中心化人工智能的应用场景和主要项目盘点

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

体育赛事直播源码的价值和意义?不同应用场景获利方法

软件开发-梦幻运营部

宁德时代与特斯拉合作;钟睒睒连续四次中国首富丨 RTE 开发者日报 Vol.171

声网

深入解析以太坊Dencun升级:提升网络性能与安全的关键举措

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

一文熟悉PolarDB-PG 分区表核心特性

阿里云数据库开源

数据库 阿里云 polarDB PolarDB-PG

Web3 游戏周报(3.17-3.23)

Footprint Analytics

Web3 游戏

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