写点什么

Medium网站的技术栈

2017 年 6 月 05 日

Medium 是一个在线发布平台,最初由 Twitter 联合创始人 Evan Williams 开发。该平台于 2012 年启动,现在每个月有 6000 万独立访客。该网站部署在 AWS 上,使用 NodeJS Go 作为应用程序和服务的开发语言,使用 DynamoDB 作为数据存储,并使用 Amazon Redshift 作为数据仓库。

Medium 的前工程主管 Dan Pupius 曾经在博客上公布了网站的技术栈,这些技术为网站的访问量暴涨提供了良好的支持。

他们现在的环境部署在 AWS VPC (虚拟私有云)上,使用 Ansible 来配置底层的基础设施。应用程序则运行在 EC2 上。

他们在十几个服务上采用了面向服务架构。对于新的功能来说,是为它们创建新的服务还是把它们集成到已有的服务中,完全取决于它们的耦合度和内聚性。

NodeJS 是他们最主要的开发语言,这门语言主要的优势在于可以共享服务器端和客户端的代码。他们通过运行多个实例来解决单线程事件循环机制的性能问题。重要的请求被路由到特定的实例上,避免其他请求被挂起。

Pupius 还在博客中提到,他们使用 Go 语言来开发辅助服务,因为打包、构建和部署都很方便。他例举了 Go 语言的类型安全和简洁性这两大特点,这也是他们选择 Go 语言的原因。

个人而言,我喜欢在团队里使用具有强约束的开发语言。因为它能够带来更多的一致性,降低不确定性,而且可以尽量避免给自己挖坑。

Pupius 说,虽然 DynamoDB 是主要的数据存储,但一直以来都存在一些问题,比如 hotkey 问题。在使用分布式数据库时,某些节点承担了密集的查询负载,数据分区所带来的性能优势也就大打折扣了。Medium 使用 Redis 作为缓存,减少了大量的数据库查询。他们现在正在尝试使用 Amazon Aurora 作为新的数据存储。

对于关系数据,比如用户之间的关系、文章和标签之间的关系,他们使用 Neo4J 来保存。目前有一个主节点和两个从节点。他们使用 Amazon Redshift 作为数据仓库,并使用 Apache Spark 来查询数据。

他们使用了集成工具 Jenkins ,staging 环境的测试、构建和部署可以在 15 分钟之内全部完成。每天进行差不多 5 次生产环境部署:

我们拥抱持续集成和持续交付,尽可能让一切快速地进入正常状态。

Medium 的团队是跨功能的,也就是说,每一个工程师都能胜任任何一部分工作。Pupius 相信这样可以培养出强大的工程师。

Pupius 的博文可以在这里找到,他在博文里提到了更多有关技术栈的细节。另外,Medium 是可以免费使用的。

查看英文原文: The Technology Stack at Medium

2017 年 6 月 05 日 19:002374
用户头像

发布了 321 篇内容, 共 108.0 次阅读, 收获喜欢 101 次。

关注

评论

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

架构师训练营第 2 期 第12周总结

月下独酌

架构师训练营第2期

架构师训练营 - 大作业(二)

树森

Spring Boot返回Json数据及数据封装

倪升武

Java springboot SpringBoot 2 28天写作

生产环境全链路压测建设历程 26:FAQ之 压测结束阶段的相关问题

数列科技杨德华

28天写作

如何让多个线程按顺序执行?

Java鱼仔

Java 多线程 高并发

当目的地无法抵达「幻想短篇 3/28」

道伟

28天写作

架构师训练营 - 第一周

石子头

架构师训练营大作业(一)

Bear在挨踢

架构师训练营第 1 期

Week2

oooh-la

架构师训练营大作业一

一马行千里

架构师训练营第 1 期

大作业

ABS

Week 12 作业

evildracula

谬误词典:因果谬误

lidaobing

28天写作 谬误词典

架构师训练营 - 大作业一

石子头

Hadoop安装配置

小马哥

大数据 hadoop 28天写作

28天瞎写的第二百一四天:考前临时抱佛脚

树上

28天写作

聊聊我的容器化之路(三)

谢烟客

Docker 微服务 容器化 28天写作

第12周作业

hunk

架构师训练营第2期

架构师训练营大作业(二)

Bear在挨踢

架构师训练营第 1 期

大作业一

golangboy

架构师训练营第 1 期

第12周作业总结

hunk

架构师训练营第2期

Week 12 大数据应用

evildracula

学习 架构

架构师训练营-大作业二

石子头

架构二期-第十二周作业(1)

浮生一梦

第十二周 2组 架构师训练营第2期

架构师训练营 - 第二周

石子头

架构师训练营第十二周总结

xiaomao

现代浏览器原理

roadup

前端 浏览器 基础知识

第七周作业&总结

ty

架构师训练营 - 第四周

石子头

架构师训练营 - 大作业(一)

树森

第12周作业

Rocky·Chen

hadoop hive

Medium网站的技术栈-InfoQ