How Digg is Built:講述Digg背后的技術

發布時間: 2011-04-05 15:32  閱讀: 756 次  推薦: 0   [收藏]  

  雖然最近業績有所下滑,也出現了一些技術故障,但Digg作為首屈一指的社會化新聞網站,其背后的技術還是值得一探,最近Digg工程師 Dave Beckett 的一篇名為《How Digg is Built》的文章,非常系統地將Digg背后的技術展現給大家,非常值得一看。NoSQLFan 簡要翻譯如下:

  一、Digg提供的服務

  • 一個社會化的新聞網站
  • 對個人來說它又是一個私人社會化新聞發布平臺
  • 一個廣告平臺
  • 一個開放API的平臺
  • 博客及文檔系統

  二、Digg 的核心功能

  • 文章提交功能 – 提交你認為有價值的新聞。
  • 文章列表功能 – 將用戶提交的新聞做各種不同緯度的列表(個人新聞,最近發布等)。
  • 對文章的操作 – 用戶可以對文章進行各種操作,包括閱讀、點擊、digg、評論、為評論評分等等。
  • 置頂文章功能 – Digg會定時將一些熱門的文章置頂到Digg首頁,從頁讓更多人能夠看到。 

  三、Digg功能的背后的實現

  首先我們看一個流程圖,描述了普通用戶在使用Digg其間Digg的具體模塊運作:

  其實這中間的操作包括了兩部分:同步和異步

  • 對用戶進行即時響應的同步操作:同步操作主要表示對用戶請求(包括API請求)的即時快速響應,包括一些在頁面中通過AJAX方式進行的異步請求。這些操作通常要求最長一兩秒的時間內就能完成。
  • 離線批量進行的異步計算:除了實時響應的請求外,有時候還需要進行一些批量的計算任務,這些任務可能是間接的被用戶啟動的,但用戶不會等待這些任務的完成。這些異步計算通常可能會花費數秒,數分鐘甚至幾小時。

  這兩部分在Digg中的應用方式可以用下面這張圖描述:

  上面是總體概述,下面一部分我們會深入Digg的各個功能部件進行深入研究。

  1. 在線Web系統

  提供Web頁面服務及API服務的部分組成如下:PHP作前端語言構建的CMS系統,Python構建的API服務器,它們運行在 Tornado 上。它們通過 Thrift 協議 與主存儲層進行交互,很多數據會被如Memcached 和Redis 這樣的內存緩存系統緩存。

  2. 消息系統

  Digg 使用 RabbitMQ 作隊列系統,將不用同步響應的操作放到隊列異步地進行。

  3. 批量異步處理系統

  上面的消息系統是指隊列,而這個指的是具體從隊列取出任務執行的部分。此系統將任務從隊列中取出,進行一定的計算后再對主存儲進行操作,對主存儲的操作在實時系統和異步批量系統中都是一樣的。

  4. 數據存儲層

  數據存儲層Digg使用了多個產品來完成各種不同的任務,具體列表如下:

  • Cassandra:對諸如文章、用戶、Digg操作記錄等“Object-like”的信息,都是使用Cassandra來存儲的。我們使用的是Cassandra0.6版本,由于0.6版本并沒有劫持二級索引,于是我們將數據通過應用層處理后再用它進行存儲。比如我們的用戶數據層提供通過用戶名及Email地址來查詢用戶信息的接口。
  • HDFS:主要用到日志信息存儲及分析計算,利用 Hive 操作 Hadoop,進行MapReduce計算。
  • MogileFS:是一個分布式文件存儲系統,用以存儲二進制的文件,比如用戶頭像,截屏圖片等。當然,文件存儲的上層還有統一的CDN。
  • MySQL:目前我們的文章置頂功能上使用了MySQL存儲一些數據,因為這一功能需要大量的JOIN操作。與此同時 HBase 好像也是個不錯的考慮。
  • Redis:由于 Redis 的高性能及其靈活的數據結構,我們用它來提供對 Digg Streaming API 的存儲,同時我們還用Redis 來構建實時瀏覽和點擊計數器。
  • SOLR:用來構建全文索引系統。以提供對文章內容、話題等的全文檢索。
  • Scribe:日志收集系統,比syslog-ng更強大更簡單。用它收集的日志會被放到HDFS進行分析計算。

  5. 操作系統及配置

  Digg runs on Debian stable based GNU/Linux servers which we configure   with ClustoPuppetand using a configuration system over Zookeeper.

  原文鏈接:http://about.digg.com/blog/how-digg-is-built

0
0
 
標簽:Digg
 
 

文章列表

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

    IT工程師數位筆記本

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