偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

探索Digg系統(tǒng)架構(gòu)的秘密

運維 系統(tǒng)運維
在過去的幾年間,我們一直致力于重構(gòu)Digg的架構(gòu),現(xiàn)在我們稱之為“Digg V4”.本文我們將全面介紹Digg的使用的系統(tǒng)和技術(shù)。找出Digg引擎的秘密。

在過去的幾年間,我們一直致力于重構(gòu)Digg的架構(gòu),現(xiàn)在我們稱之為“Digg V4”.本文我們將全面介紹Digg的使用的系統(tǒng)和技術(shù)。找出Digg引擎的秘密。 首先,我們來看下Digg給大眾用戶提供的服務(wù)吧:

  1. 一個社會化的新聞?wù)军c
  2. 為個人可定制的社會新聞
  3. 廣告平臺
  4. API 服務(wù)
  5. 博客和文檔站點

人們通過瀏覽器或者其他應(yīng)用來訪問這些Digg服務(wù)。一些有Digg賬戶的用戶,可以得到“我的新聞”。每位用戶可以得到的我們稱之為“熱門新聞”。我們有digg.com和移動版的m.digg.com,API服務(wù)的services.digg.com,信息介紹的about.digg.com,為開發(fā)者服務(wù)的developers.digg.com。這些站點統(tǒng)一為用戶,新聞發(fā)布者,開發(fā)人員提供了博客和文檔服務(wù)。

本文主要介紹Digg在社會化新聞產(chǎn)品中使用的高級技術(shù)。

我們努力要做的

我們努力搭建以用戶發(fā)布新聞和廣告商發(fā)布廣告為基礎(chǔ) 一個社會新聞?wù)军c。

故事提交 注冊用戶提交文章,文章包含:一個標(biāo)題,一篇段落,一個媒體類型,一個主題,或者一個縮略圖。這些內(nèi)容通過一系列的元字符標(biāo)準(zhǔn)(Facebook open graph protocol, OEmbed等)如從文章中解壓出來,當(dāng)然提交者在提交前最后這些元字符具體是什么。廣告發(fā)布商將廣告發(fā)布到另外一個獨立的系統(tǒng),當(dāng)然如果Dugg夠的話,完全可以成為故事。

故事列表 在個性化新聞產(chǎn)品“我的新聞“里,你追隨的用戶發(fā)布的所有故事以“故事列表”顯示,采用最近發(fā)布,媒體類型,故事的主題等方式排列。

故事動作 用戶可以對故事進(jìn)行操作,比如說閱讀,點擊,Digg,掩埋,發(fā)表評論,投票等等。沒有注冊登錄的用戶只能閱讀和點擊這些故事。

故事推薦 我們會決定每個小時有一些故事會從最近故事列表轉(zhuǎn)移到熱門新聞列表。我們的算法(這個是保密的)通過查看用戶的行為和故事內(nèi)容的分類來決定選擇哪些故事進(jìn)入熱門新聞。

我們是如何實現(xiàn)它的?

讓我們從宏觀的角度看下如果一個用戶訪問Digg的站點,做一些基于內(nèi)容的操作。下面的圖片顯示了公眾看到的內(nèi)容及內(nèi)部提供的頁面、圖片、API請求等服務(wù)。

我們內(nèi)部系統(tǒng)的簡單描述如上。我們的API服務(wù)代理想內(nèi)部后端服務(wù)進(jìn)行請求。前端的服務(wù)是被虛擬化的(與緩存是有區(qū)別的),并且放置在相同的服務(wù)層。CMS和廣告系統(tǒng)將在此文章中不做詳細(xì)說明,縱覽整個系統(tǒng),大致可以分為以下兩類:同步和異步。

1、對用戶進(jìn)行即時響應(yīng)的同步操作

同步操作主要表示對用戶請求(包括API請求)的即時快速響應(yīng),包括一些在頁面中通過AJAX方式進(jìn)行的異步請求。這些操作通常要求最長一兩秒的時間內(nèi)就能完成。

2、離線批量進(jìn)行的異步計算
除了實時響應(yīng)的請求外,有時候還需要進(jìn)行一些批量的計算任務(wù),這些任務(wù)可能是間接的被用戶啟動的,但用戶不會等待這些任務(wù)的完成。這些異步計算通常可能會花費數(shù)秒,數(shù)分鐘甚至幾小時。

上面所說的兩部分如下圖所示:

下面就更加深入的了解各個組成部分。

線上系統(tǒng)

提供頁面和API請求服務(wù)的程序主要以PHP(前端Web頁面,Drupal CMS)和使用的Python(API服務(wù),Tornado)編寫。前端通過Thrift protocol協(xié)議來調(diào)用后端的服務(wù)(Python)。很多數(shù)據(jù)會被如Memcached 和Redis 這樣的內(nèi)存緩存系統(tǒng)緩存。

消息和事件

線上和離線的信息通過主要數(shù)據(jù)存儲transient / logging系統(tǒng)這種同步方式連接和使用 RabbitMQ 作隊列系統(tǒng),將不用同步響應(yīng)的操作放到隊列異步地進(jìn)行。比如說”一個用戶Dugg了一個故事“,”計算這個東西“。

批處理和異步系統(tǒng)

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

當(dāng)隊列中發(fā)現(xiàn)信息時,一個“工作者”被調(diào)用來完成特定的動作。一些信息由事件觸發(fā),有點象cron機(jī)制。然后工作者對主存儲設(shè)備或者離線存儲設(shè)備的數(shù)據(jù)進(jìn)行運算和操作,在HDFS中記錄日志,然后把結(jié)果寫回到主存儲設(shè)備,這樣在線服務(wù)就可以使用他們。舉個例子:比如說索引新的故事,計算故事提升算法,運行分析工作。

數(shù)據(jù)存儲

Digg根據(jù)數(shù)據(jù)的類型和使用方式的不同,將數(shù)據(jù)存儲在不同的系統(tǒng)中,當(dāng)然,有時候還避免不了有一些歷史原因。

  • Cassandra:對諸如文章、用戶、Digg操作記錄等“類對象(Object-like)”的信息,都是使用Cassandra來存儲的。我們使用的是Cassandra0.6版本,由于0.6版本并沒有劫持二級索引,于是我們將數(shù)據(jù)通過應(yīng)用層處理后再用它進(jìn)行存儲。比如我們的用戶數(shù)據(jù)層提供通過用戶名及Email地址來查詢用戶信息的接口。這樣就允許了服務(wù)器能夠查看,比如說,通過用戶的用戶名或者郵件而不是用戶的用戶ID來查詢。這里我們使用了Python Lazyboy wrapper。
  • HDFS:來自站點和API事件,用戶活動的日志都在這里。主要用到日志信息存儲及分析計算,利用 Hive 操作 Hadoop,進(jìn)行MapReduce計算。
  • MogileFS:是一個分布式文件存儲系統(tǒng),用以存儲二進(jìn)制的文件,比如用戶頭像,截屏圖片等。當(dāng)然,文件存儲的上層還有統(tǒng)一的CDN。
  • MySQL:目前我們的文章置頂功能上使用了MySQL存儲一些數(shù)據(jù),用來存儲故事提升算法和計算的數(shù)據(jù),因為這一功能需要大量的JOIN操作。很自然不適合其他類型的數(shù)據(jù)存儲。與此同時 HBase 好像也是個不錯的考慮。
  • Redis:由于 Redis 的高性能及其靈活的數(shù)據(jù)結(jié)構(gòu),我們用它來提供對 Digg Streaming API 的存儲,存儲每個用戶新聞數(shù)據(jù),每個用戶的新聞具有不同和需要及時更新的特征。同時用Redis來提供Digg Streaming API和real time view and click counts服務(wù)。作為一款基于內(nèi)存存儲的系統(tǒng),它提供了超低的負(fù)載。
  • SOLR:用來構(gòu)建全文索引系統(tǒng)。以提供對文章內(nèi)容、話題等的全文檢索。
  • Scribe:日志收集系統(tǒng),比syslog-ng更強(qiáng)大更簡單。用它收集的日志會被放到HDFS進(jìn)行分析計算。

操作系統(tǒng)和配置

digg目前運行在基于GNU/Linux的Debian系統(tǒng)。配置了Clusto,Puppet。使用的是Zookeeper做系統(tǒng)協(xié)調(diào)。

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

責(zé)任編輯:黃丹 來源: 標(biāo)點符
相關(guān)推薦

2019-08-15 16:00:21

Linux內(nèi)核Kconfig

2010-01-15 19:17:48

C++語言

2011-04-06 11:21:25

PHPPython

2013-06-28 09:23:00

iOSDiggDigg Reader

2018-01-12 17:03:29

HTTPgzip壓縮

2010-02-04 10:47:29

Dalvik移植技術(shù)

2024-03-22 08:11:20

.NETJSON數(shù)據(jù)序列化

2012-07-12 15:04:56

Windows 7操作系統(tǒng)

2012-08-28 10:30:32

Digg架構(gòu)部署

2009-08-07 08:42:18

Digg Ads廣告系

2010-05-26 14:16:45

替代MySQL

2015-09-29 10:33:08

前端后端架構(gòu)

2020-07-13 08:10:13

軟件設(shè)計系統(tǒng)

2024-10-09 08:33:41

2010-03-30 09:04:41

2011-11-01 10:41:10

云計算SOA

2012-10-08 15:13:09

Windows 7

2020-09-22 12:20:23

前端架構(gòu)插件

2015-05-28 10:58:57

分布式彈性計算云計算架構(gòu)

2011-08-24 17:39:38

點贊
收藏

51CTO技術(shù)棧公眾號