從 Reddit 學到的經驗

作者: Fenng  來源: DBA Notes  發布時間: 2011-02-20 13:20  閱讀: 973 次  推薦: 0   原文鏈接   [收藏]  

 

  最近有一些比較有價值的文章似乎沒引起太多人注意,比如 Steve Huffman 分享創建 Reddit 過程中的經驗這篇文章,在 Twitter 上的中文技術圈子似乎沒有被提及。

  作為社會化新聞站點,國內似乎關注 Reddit 的人并不多,我只知道少數 Geek 是其死忠粉絲。Reddit 在 2005 年 6 月由 Steve Huffman 與 Alexis Ohanian 創建,之后在 2007 年被 Condé Nast 收購。到現在看 Alexa 排名在 300 名之內。

  根據維基百科的介紹(refer):Reddit 最早是用 Common Lisp 開發,隨之用 Python 進行了重寫。著名的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 就像一個技術標本,仔細琢磨下去還會有很多有趣的地方,相信也會對你有幫助。

 

0
0
 
標簽:Reddit
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()