2KB项目,专业的源码交易网站 帮助 收藏 每日签到

协助 Medium 浏览工夫到达 2600 年的技巧栈

  • 时间:2019-03-26 22:34 编辑:2KB 来源:2KB.COM 阅读:408
  • 扫一扫,手机访问
  • 分享
摘要: 英文原文:The
英文原文:The Stack That Helped Medium Scale To 2.6 Millennia Of Reading Time

medium

布景

Medium 是一个收集。这是一个分享有价值的故事和设法的地方,在这里人们可以坚持设法不时的前行,大师曾经在那边破费了 14 亿分钟(换句话说是 2600 年)的浏览工夫。

每个月的自力用户超越了 2500 万,每周会新加数以万计的新帖子。可是我们心目中的 Medium 应当是以观念量来权衡能否胜利,而不是浏览量;不会关怀作者的资格,而更关怀设法能否有价值;应当能更便利的为大师推送有价值的内容。

我指导了全部工程团队。我之前是 Google 的一位软件工程师,从事 Google+ 和 Gmail 的开发,配合创立了 Closure 项目。在那段工夫,我阅历过滑雪板竞赛,飞机跳伞,另有森林冒险。

工程团队

我为我的这个团队自豪。团队里每一个人都是天赋,大师都充溢求知的盼望,为了这个让人冲动的工作聚在一同。在我们看来,阅历过分歧的考验可让你成为更有经历的工程师。有兴味的话可以看看我们其他的价值观

在怎么布置本人的任务上,团队有很高的自在度,不外作为公司,我们会设立季度目的,鼓舞迭代冲刺。我们运用 GitHub 做代码 review 和 bug跟踪,用 Google Apps 治理邮件、文档和电子表格。我们是 Slack 的重度用户?(和 slack bots),有很多团队运用 Trello

初始的技巧栈

刚Start的时分我们把办事安排到 EC2 上。主办事是用 Node.js 写的,每次宣布的时分,汇合并到DynamoDB

另有一个 node Server用于图片处置,挪用 GraphicsMagick 来做详细的庞杂的任务。另外一个办事被用作 SQS 行列处置,担任后台Task。

我们的 email 运用 SES,静态资本放在 S3 上,CDN 运用 CloudFront,运用 nginx 作为反向代办署理。别的,运用 Datadog 做监控,PagerDuty 做报警。

网站运用 TinyMCE 作为编辑器。宣布之前,我们曾经在运用 Closure 编译器和部分 Closure 库,不外模板用的是 Handlebars

以后的技巧栈

Medium 如许的站点看上去仿佛很容易,不外面前的庞杂水平足以让人诧异。这还仅仅只是一个博客网站么?如果如许的话,你用 Rails 几天就可以搭建一个出来。:)

闲话少说,我们从最底层提及。

产品情况

今朝我们运转在 Amazon 的虚拟私有云上。我们运用 Ansible 做系统治理,可让我们的设置装备摆设处于源码把持下,可以经过可控的方法很轻松的实行更新。

我们有着面向办事的架构,在其上运转了约莫一打的产品办事(取决于你怎么去统计,另有非常多小一点的办事)。能否作为自力的办事来安排,首要取决于其功用,办事鸿沟上能否可能发生有依靠的变化,和对资本的应用。

我们首要的使用Server依然写在Node里,它答应我们在供给商和客户之间交流代码,我们用编辑器就要用到它,发布革新也是用它。Node为我们任务得很好,可是在我们把事情轮回编写成块的时分,功能问题就显现了。为了紧张这一问题,我们在每台机械上运转多个实例,并把它们路由到昂贵的端点,以此来分开它们。我们把它与V8运转情况相挂钩,以深化了解哪一个部件运转破费的工夫较长。凡是它是由于在JSON复原序列化时目的的详细化。

我们用Go编程的时分可以享用到一些辅佐办事。我们发明用GO树立、打包和安排很轻易。我们爱好不需用到繁杂并调试虚拟机Java的类型平安。就我个人而言,我更爱好在团队情况中运用果断的言语。它能进步一致性、减少歧义,终极让你防止玩火自焚。

我们如今运用CloudFlare供给静态资本,虽然我们把5%的流量送到Fastly,同时还送5%的流量到CloudFront来坚持它们的缓存热度,以防在紧迫状况下万一我们需求割接。比来我们也把CloudFlare用于使用流,根本上是为了DDOS维护。可是关于功能晋升我们仍是乐见其成的。

我们运用Nginx和HAProxy的联合作为反向代办署理,到达负载平衡,以完成我们需求的Venn Diagram特征。

我们依然运用Datadog监测,运用PagerDuty报警,可是我们如今大量运用ELK(Elasticsearch,Logstash,Kibana)调试呈现的问题。

数据库

DynamoDB依然是我们根本的数据存储库,可是它仍不完满。我们碰到的常用的问题之一是在严重事情发作时和有百万跟随用户时的热键问题。在Dynamo后面我们可以用Redis缓存器,它能经过读取来减轻这些问题。

开发者便当性和产品波动性两者之间的优化仿佛老是存在抵触,可是我们在尽力减少不合。    

我们Start运用Amazon Aurora获得最新的数据,它的查询和过滤功用比Dynamo更灵敏。

我们运用Neo4J来贮存代表媒体收集的实体之间的关系,用两个正本来运转一个主本。

人、邮件、标签和合类是图表中的节点。

鸿沟在实体创立的根底上树立。当人们发作以下行动,比方追随、引荐和夸大时,我们按图索骥,过滤并引荐相干的邮件。



数据平台

夙起我们的数据很匮乏,所以在数据剖析根底架构上做了非常多投资,为贸易和产品上的决议计划供给协助。比来以来,我们可以在异样的数据处置流程上为全部产品系统供给更多的反应,乃至可以运转相似 Explore 如许的数据驱动的功用。

我们运用 Amazon Redshift 作为数据堆栈,它供给了可伸缩的存储和处置系统,我们其他的Tools就运转在其上。我们不断的把中心数据(例如用户、文章)从 Dynamo 导入到 Redshift,和把行动日记 (例如:文章浏览、翻页等等) 从 S3 导入到 Redshift。

我们运用 Conduit 来对Task做调剂,这是一个外部Tools,可以治理方案、数据依靠,还可以实行监控。我们的Task调剂模子是基于断言的,只要一个的一切的依靠都知足了,这个Task才会被履行(例如,依靠全天行动日记的逐日Task)。关于产品,这方面被证实长短常主要的:数据的生产者和花费者相互解耦,简化设置装备摆设,系统形态可预知和易调试。

虽然对我们来讲在 Redshift 上运转 SQL 查询杰出,我们仍是需求将数据不时输出输出 Redshift。我们愈来愈转向 ETL 的 Apache Spark,这是由于它的灵敏性与范围增加的才能。跟着工夫的推移,Spark 可能会成为我们数据管道的首选Tools。

我们运用协议缓冲(Protocol Buffers)对我们的形式(形式演变规矩)来坚持一切层的分布式系统同步,包含Mobile使用,web 办事,和数据堆栈。运用自定义选项,我们标注形式与表名和索引等设置装备摆设细节,验证束缚最大长度的字符串,或许把持承受数据把持的范畴。

人们也需求坚持Mobile和 web 使用顺序同步,开发职员使得一切日记一样,产品研讨员可以以异样的方法说明字段。我们协助我们的成员在数据处置形式标准上的任务,并严厉记载字段的音讯,宣布文档生成的原型(.proto)。


图象

我们的图片Server如今是用 Go 写的,并运用了瀑布战略处置图象。Server运用 groupcache,它供给了 memcache 的替换计划,来减少反复的任务。支撑内存中的缓存是一个耐久的 S3 缓存,然厥后处置图象处置需求。这让我们的设计师可以在分歧平台上,灵敏地改动图象的表现和优化,而不用做大的批处置缩放图象功课。

如今首要用于调剂和裁剪,早期版本的网站答应色彩洗濯、含混和其他图象后果。处置静态 gif 不断是一个宏大的头痛的问题,这应当又是另外一篇文章了。

文本截图

完好的文本截图功用由一个小型的 Go Server驱动,运用 PhantomJS 作为衬着引擎。

我不断想把衬着引擎转换为 Pango,但在理论中,将图片嵌入 HTML 的方法更加灵敏和便利。这项功用的运用频率意味着我们可以很容易地处置吞吐量。

自定义域名

我们答应用户对他们的 Medium 作品设置自定义域名。我们想让单点登录和 HTTPS 无处不在,所以让它Start任务不是件大事。我们有一组 HAProxy Server专门用于治理证书和导向主使用Server的流量。在设置域名时还需求一些手动操作,可是我们经过自定义整合 Namecheap 曾经主动化了很大一部分。证书的规则和地下链接是由一个专用办事处置的。

Web 前端

在网页上,我们偏向于电子化。我们有本人的单页使用顺序框架,运用闭包作为规范库。我们运用闭包模板在客户端和Server衬着,我们运用闭包编译器紧缩代码并把它联系成模块。编辑器是我们网页使用最庞杂的部分,Nick 写出了 iOS 系统。

iOS 系统

我们的使用顺序都是当地下载好的,很少运用收集视图。

在 iOS 中,我们运用国产构架和内置构件的混杂。在收集层,我们运用 NSURLSession 提出恳求,运用 Mantle 来把 JSON 剖析成模子。 我们有一个树立在 NSKeyedArchiver 上的缓存层。我们有一个通用的办法把项目列入分歧的列表,统一列表中的项目有配合特点。这就可以让我们疾速树立分歧类型内容的列表。后视图是用 UICollectionView 自定义结构构建的。我们运用同享组件来衬着完好的文章和后预览。

Medium 的员工尽一切尽力来尽快开发和推出新的使用。我们宣布更新的节拍是受限于 Appstore 的核阅周期的,但我们正尽己所能地推动这一过程,即便只要很少的更新。

测试我们运用 XCTest 和 OCMock.

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部