最近有一些比较有价值的文章似乎没引起太多人注意,比如 Steve Huffman 分享创建 Reddit 过程中的经验这篇文章,在 Twitter 上的中文技术圈子似乎没有被提及。
作为社会化新闻站点,国内似乎关注 Reddit 的人并不多,我只知道少数 Geek 是其死忠粉丝。Reddit 在 2005 年 6 月由 Steve Huffman 与 Alexis Ohanian 创建,之后在 2007 年被 Condé Nast 收购。到现在看 Alexa 排名在 300 名之内。
根据维基百科的介绍(refer):Reddit 最早是用 Common Lisp 开发,随之用 Python 进行了重写(2005年底完成)。著名的Python 框架 Web.py 就是 Reddit 当时的员工 Aaron Swartz 开发的,现在 Reddit 的 Web 框架则使用了 Pylons 。在 2009 年 11 月,Reddit 迁移到 Amazon 的云计算平台。前端框架现在用的是 jQuery。或许你早就知道,Reddit 网站程序现在已经开源,如果你感兴趣的话,不妨下载研究。
严格来说,Steve 的这个演讲其实并没有涉及多深入的技术信息,只是这几条经验的确可以作为通用规则与大家分享。
- 宕机是家常便饭(Crash Often)
可能很多人会认为一些 Startup 的创建人都是天才,其实也未必。两个22岁的初出茅庐的大学毕业生写的程序会好到哪里?网站起步的时候,频繁的宕机让他们吃尽了苦头。其实 Twitter 以及最近热火的 FourSquare 在初期的稳定性也不怎么样,但是仍然能对用户产生足够的吸引力。这是很多创业者需要细思量之处。 - 服务分离( Separation of Services)
现在已经超过 20 台数据库,每个数据库只处理一种特定类型的数据,原因无他,更为简化。另外,Reddit 得到的一个经验是不要使用 Python 的线程,而是用多进程的方式。 - 开放 Schema(Open Schema)
个人觉得,应该叫 Key-Value 更恰当。 - 无状态处理请求(Keep it Stateless)
“无状态”意味着横向扩展更为容易。单节点服务器向多台扩展,或许这是第一个要考虑的问题。否则,背的包袱就会越来越重。 - Memcached
除了尽可能的利用 Memcached 加速用户对数据的访问速度,在 Memcached 中存储了大量预生成的页面内容,另外,也在适当的场景使用了 MemcacheDB 以满足数据持久化的需要。 - 存储冗余数据(Store Redundant Data)
让站点变得更慢的一个”好办法”就是遵循范式设计数据库。除了在 RDBMS 中存储数据外,在上一条提到的 MemcacheDB 中也存储了大量数据,和收益相比,冗余的成本并不高。前提是数据一致性要能得到有效保证。 - 脱机工作(Work Offline)
尽可能的异步处理用户操作,对计算量比较大的功能利用离线计算的模式。消息队列用用 RabbitMQ(Rabbit Technologies Ltd.已经被 SpringSource 收购) ,采用了 AMQP 协议。
或许还有意犹未尽之处,各位自己顺着文章来源分析吧。Reddit 就像一个技术标本,仔细琢磨下去还会有很多有趣的地方,相信也会对你有帮助。
–EOF–
这个video刚好我也看了,我所知道的外国22岁左右的大学生最顶尖的一批已经能有10年编程经验了,他们高中甚至初中就有专门的编程课,再加上一些开源或者个人的小项目。不过实战经验刚开始确实还是要磨练(当然对谁都是一样)。Startup的天才倒不是很多,我感觉主要是教育体制好,敢想敢做,对有潜力的人来说成为才的机会比较多。
我有订阅programming板,讨论气氛挺浓厚的,也比较有深度。不过语言是个障碍吧。hacker news也类似
去了解一下。
比较纠结的是老外的网络文化不熟悉
其余的倒还好,proggit 的讨论其实也跟大多数论坛一样,楼经常会歪掉。HN 订阅过一阵子,后来觉得自己关注的东西实在太多,就放弃了。
不错,我就是那”国内少数Geek死忠粉丝”之一,甚至我的blog也是跟reddit的风,用pylons搭的。
不要..如果很多人关注了,reddit会被光速封掉的.
经常访问
feerbook.com是不是很像reddit呢…
刚刚看到这篇文章的英文版~
没想到这里已经有中文翻译了
老大真是牛啊
网上闲逛,关注下了reddit,就找到这里来了。
请问你知道reddit的系统(现在的源代码已经开源了)是用什么语言写的吗?
reddit现在的风投要盖过digg了,你觉得能够使用户主动的去提交的动机有哪些?回答下哈,谢谢!
我就是在探索~