【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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

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

关注

评论

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

程序员面试题为什么出得天花乱坠,实际工作中这些根本用不到?

Java架构师迁哥

SpringBoot-技术专题-war包项目外置配置文件

洛神灬殇

音视频社交的应用和优势

anyRTC开发者

音视频 WebRTC 语音 直播 RTC

Amdocs收购OPENET:关于5G应用落地的思考

VoltDB

大数据 数据分析 5G 物联网

LeetCode题解:90. 子集 II,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

SpringBoot-技术专题-Websocket消息推送和广播消息推送

洛神灬殇

区块链是未来数字经济标志性的发明技术

CECBC

区块链 数字经济

目标检测之YOLOv1

Dreamer

让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务

阿里云基础软件团队

云原生

AI 科学家带你快速 Get 人工智能最热技术

京东科技开发者

人工智能

让你怀疑人生的重载和重写的区别

艾小仙

Java 编程语言

移动端堆栈关键行定位的新思路

移动研发平台EMAS

移动应用 应用崩溃 崩溃分析

Appium常用操作之「微信滑屏、触屏操作」

清菡软件测试

甲方日常 43

句子

工作 随笔杂谈 日常

百万年薪技术大佬的读书之旅

四猿外

Java 书籍推荐 书单 书单推荐 书籍

《Among Us》火爆全球,实时语音助力派对游戏开启第二春

ZEGO即构

语音 游戏 RTC

React Ref 如何使用(译)

西贝

Java 翻译 React Hooks Ref

震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

AI乔治

Java 架构

跟Kafka学技术系列之时间轮

AI乔治

Java 编程 架构

聊点缓存——Part 1

姜雨生

redis 缓存

搞定秒杀,只需要这几步!!

架构师修行之路

缓存 分布式 微服务 秒杀

Java9 新特性 - 下篇

hepingfly

Java 新特性

高频面试题:秒杀场景设计

艾小仙

Java 面试 高并发 秒杀

图解 | 不得错过的Binder浅析(一)

哈利迪

android

【面经】面试官:做过性能优化的工作吗?你会从哪些方面入手做性能优化呢?

冰河

面试 性能优化 JVM 高并发 高性能

嵌入式的我们为什么要学ROS

良知犹存

ROS

淘宝内测新内容社区淘宝逛逛:邀请B站UP主入驻打造流量池

石头IT视角

LeetCode题解:90. 子集 II,迭代+位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

马云被约谈,阿里大数据的羹怎么分给每一个人?

CECBC

区块链 大数据

巨建华:区块链+金融的难点

CECBC

区块链 金融

低代码开发平台的敏捷之力

雯雯写代码

敏捷开发 低代码 信息化

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