- 注册时间
- 2014-11-24
- 最后登录
- 2015-7-3
- 阅读权限
- 90
- 积分
- 6913
- 精华
- 0
- 帖子
- 742
 
TA的每日心情 | 怒 2015-7-3 17:11 |
---|
签到天数: 139 天 连续签到: 1 天 [LV.7]常住居民III
|
传授了许多如何创建一个成功社交网站的经验。
jeremy借用了褒贬参杂的方式来总结经验教训,他分享了在推广Reddit过程中所犯的比比错误,但也让我们看到他们做出的正确抉择。不过有点令人吃惊的是,jeremy现在是Netflix的可靠性架构师。所以从他的演讲中也可感受Netflix的一些观点。
令我印象深刻的几个教训是:
把SSD看做是便宜的内存(RAM),而不是昂贵的硬盘。
当reddit因为数据库的缘故从机械型硬盘升级到固态硬盘(SSD)后,其服务器数量从12台降为1台,且还有极大的空间富余。SSD虽比机械式硬盘贵了四倍,但是你会得到16倍的性能提升,真是物有所值。
给用户一点点权力,看看他们怎么做,然后把其中的好点子变为网站的功能。
reddit从用户那里所学极为丰富,且其网站的流畅运作很大程度上倚赖其用户,这是我获得的最大收获。用户会告诉你很多你不知道的事情,reddit gold就是个很好的例子,刚开始它只是社区里大家开的玩笑,reddit将其兑现为产品,并深得用户喜爱。
项目开始时就建设一个可扩展性架构是不必要的。
开始时你并不会知道网站将来的功能集,所以你也不会知道你有哪些扩展方面的问题。等到你的网站开始壮大时,你自然就可以了解网站会在哪些方面有扩展问题。
把未登录用户当作二等公民。
通过总是给未登录用户返回缓存内容的做法,reddit将包袱扔给了Akamai而自身的流量畅通,这种做法使其网站性能大大提升。
Jeremy的分享远不止于此。从reddit扩展初期的错误中我们能学到的经验教训良多,这里是我对Jeremy演讲的一些释读:
统计数据
访问流量大约每15个月翻一番。
上个月,来自177个不同国家的 67,328,706名独立访客浏览了reddit网站上 4,692,494,641个页面。这个演讲是在reddit的第10亿页面浏览节点完成时进行的,其目前架构与之前架构的差异无法确认。
28名雇员。
每名雇员应对大约240万独立访客。(链接)
数以千计的志愿者版主。
在2012年时,他们用240台服务器来支撑每月20亿的页面浏览量和Postgres里的2TB数据。所有高访问率数据都从EBS转移到本地临时磁盘(以保证网站运行流畅)。
公司源起
Reddit始于2005年。创始人首先带着“通过短信点餐”的点子去寻求Y Combinator的资金支持但被拒绝,他们回头和Paul Graham(Y Combinator的创始人,美国著名程序员、风险投资家、博客和技术作家)讨论并产生了开发互联网网页建设的点子,即reddit。那时他们并不知道掘客(Digg)的存在。sezyy.com
从数据中心开始,随后逐渐将功能转移至亚马逊弹性计算云(EC2)。
2006年,开始通过EC2使用S3提供存储和服务标志。
2007年,开始使用S3支持缩略图服务。
2008年,以vpn通道连接数据中心的方式在EC2上进行批处理。
2009年,整站使用EC2服务。网站停运整整一天,将数据全部迁移到EC2。这是《数据引力》的重大案例,随后还会谈到。
EC2
迁移到EC2的原因
不断堆叠机柜并不有趣。不想租用更多的机柜,买更多的服务器。
建立数据中心,早期数据的增长是无法预测的。
对于一个4人小组而言,成本相对降低了。亚马逊的EC2比他们在San Francisco的数据中心价格便宜了29%。
EC2不是万能的。如果你受够了高网络延迟和邻居发出的噪音,考虑下迁移到EC2上。一个好处是网站可以自由的壮大。
熟悉EC2上的资源限制
所有的资源对每个帐号都有限制。
亚马逊也不清楚其中的一些限制是什么。
跟踪限制,在你需要的时候扩大限制范围。
捕获异常以发现何时临界条件被触发。
架构
Reddit的架构是很直观的。**用户连接到一个可以与应用纽带直接通话的网络纽带。这个应用纽带又与memcache, Cassandra, 还有 Postgres通话,Postgres使用的是一个主从关系网络。这是一个使用Cassandra 和 Postgres的批处理系统。zgnpxw.com
相比较而言,Netfli使用的是一个服务型的架构,各部分通过REST API相互之间通话。
优点:方便自适应规模,因为只有服务器需要调整规模;更容易规划容量;错误更容易找出,因为他们在REST框架里是独立的;变化效果十分精确;本地缓存更加高效。
缺点:需要多个Dev或者Dev团队在多个服务器上工作,所以人工成本增加;需要一个公共开发平台避免重复工作;对于一个小团队来说,管理成本很大。
Postgres是一个非常优秀的数据库**他可以创造出十分优秀,快速键值储存的数据库。
邮件系统是一个大问题** 信息传送很难弄好,开始的时候可以用他们自带的邮件系统,但是现在可能要用专门邮件系统提供商的服务了。
|
|