Medium网站的技术栈

栏目: Go · 发布时间: 7年前

内容简介:Medium网站的技术栈

Medium 是一个在线发布平台,最初由Twitter联合创始人Evan Williams开发。该平台于2012年启动,现在每个月有 6000万独立访客 。该网站部署在AWS上,使用 NodeJSGo 作为应用程序和服务的开发语言,使用 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-4 / 88.00元

《创新者》是沃尔特·艾萨克森继全球畅销书《史蒂夫·乔布斯传》之后的又一部力作,不仅讲述了计算机和互联网从无到有的发展历程,为我们 生动地刻画出数字时代的创新者群像,还深度挖掘互联网的精神内核,解读了“诗意科学”这个重大主题。 在近200年的数字化进程中群星闪耀,艾萨克森从第一个计算机程序的创造者、浪漫主义诗人拜伦之女埃达•洛夫莱斯伯爵夫人说起,细数了这一群将科学与人文融合的创新者,他们包括第......一起来看看 《创新者》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具