精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

看看Quora是如何實現貢獻者排行功能的

移動開發
在這篇文章中,我們將深入討論該功能的某些模塊,以及各種場景背后的架構力量,以及如何將這些模塊整合完成最后的MVWs 功能。

今年年初,我們提出了***訪問量作者(MVWs)功能,即識別那些他們了解和關心的主題的最活躍貢獻者。MVWs 是一種非常好的方式,既可以彰顯貢獻者,又可以幫助讀者發現貢獻者自身關注的主題。

作為一個產品工程師(product engineer),全程投入到這個功能的開發和設計中,我很高興有這樣一次機會,可以結合我的技術和熱情來創建一個用戶體驗良好的產品。在這個過程中,我能夠加入到產品經理、產品設計和數據科學家中來確定產品的最終目標和完成該目標的***方式。

在這篇文章中,我們將深入討論該功能的某些模塊,以及各種場景背后的架構力量,以及如何將這些模塊整合完成***的MVWs 功能。

***訪問量作者(MVWs)的定義

一個主題的***訪問量作者(MVMs)是指最近 30 天內,該主題下訪問量最多的公共回答的用戶。因此,我們的最終目標是識別每個主題下的活躍作者。完成該目標的***步是定義一個清晰的范疇。

更明確的說,我們想創建一個能完成下列功能的系統:

1、跟蹤近 30 天內每個答案的訪問次數。

2、給定一個主題,返回最近 30 天內按答案訪問量排名的 MVWs 列表。

3、給定一個用戶,返回該用戶屬于 MVW 的主題列表。

4、給定一個主題,返回新的 MVWs 用戶列表,這些用戶將收到通知。

正如我們所見,清晰的定義 MVW 產品需求,直接關系到正確選擇***的架構來滿足需求。

訪問數據流

在跳到如何使用訪問數據來創建 MVW 之前,我們先后退一步,弄清楚訪問數據是從哪來的?

我們在產品的不同部分使用實時訪問量來顯示每段內容的查看情況。無論什么時候有人在Quora上查看了內容的某個片段,例如一個答案,我都能對訪問量加1,并且我們想在持久化存儲中保存所有的數據,因為不想弄丟任何數據。一種比較天真的實現方式是通過如下的方式來記錄訪問量:

#
# Views module (version 1)
#
def log_views(answer_id, count=1):
    # Called every time when there is a view
    # Single update that happens inline
    views_datastore.increment(answer_id, count=count)

這看起來相當簡單,對吧?如果系統只需要處理每秒 10 次的訪問量,也就是說每 100 毫秒增加1次訪問,那這是相當合理的。但是,如果訪問次數是每秒100次?1000次?甚至更多?如果系統中有成千上萬的答案,并且這些答案都會源源不斷的獲取到新的流量,系統將會是什么樣子?

對于一個產品來說,訪問是最頻繁的操作(基本上每個頁面的加載都會有),如果持久化每個行為將會對落地真實數據(ground-truth data)存儲(HBase)產生太多的寫操作,從而無法滿足可擴展性問題。一種更好的可擴展方案是使用事件隊列,然后按一定的規則進行批量增加。

#
# Views module (version 2)
#
  
def enqueue(answer_id, count=1):
    # Called every time when there is a view
    # Enqueue to be updated via "batch_update"
    views_event_queue.enqueue(Item(answer_id, count))
  
def batch_update():
    # Process enqueued items regularly
    items = views_event_queue.dequeue_recent_items()
    # Batch update
    views_datastore.batch_increment(items)

對于這種設計,訪問數據將先進入一個簡單的持久化事件隊列(在Redis上實現的)。有了事件隊列,我們可以有效的分攤 I/O 延遲,這樣可以大幅度提高系統的吞吐量。從產品的角度來看,如果我們展示訪問次數的頻率比批量操作頻率更高,則實時的訪問量可以通過***獲取落地真實數據,此后通過對Redis緩存中的數據進行遞增來實現。下面是該流程的簡化圖:

聚合訪問量到 MVWs

現在,我們已經在某個地方有了實時訪問數據,現在我們試著在這上面創建 MVW。

通過產品定義,一個最重要的步驟是通過每個答案的訪問量來為每個用戶聚合每個主題的訪問量。這種聚合需要花費大量的計算來整合多個數據源,包括答案的訪問次數,問題-主題之間的關系,問題-答案之間的關系。

此外,任何時候如果有答案被刪除,都會引起級聯效果。已刪除答案的訪問次數不應該包含在與此相關主題的用戶排名范圍以內,這就意味著我們需要對這些主題的排名進行更新。同樣,如果某個答案出現了質量問題,也會出現類似的情況。這樣就會導致更多的計算和聚合。

并且我們也開始注意到,Quora系統許多已存在的功能也會影響 MVW 的設計。下面是計算 MVW 數據所需要的實體之間的整體依賴關系圖:

用戶期望在訪問 MVW 頁面時能夠快速的加載。但是,聚合操作很慢,并且頁面加載時計算機之間的通信也無法滿足,這些數據需要在頁面加載前緩存起來。但是,如果這些依賴的項一直在改變,我們就需要不停的重新計算才能緩存。

關于訪問頻率的記錄我們已在上面探討過,如果任何訪問量的改變都要反應到排名,我們就需要進行大量的重新聚合操作。我們當然可以投入更多的技術資源來支持這種復雜的場景,但是在這之前,我們考慮這是否真的是產品的需求?

在那天快結束的時候,我們的目標不僅僅是解決一個困難的工程問題,而是通過一個好的產品特性來實現***用戶體驗。回到原始的目標,即識別每個主題的優秀作者,我們確定的是在一個主題有新的 MVW 時,需要通知用戶。如果排名非常不穩定,每秒都有可能變化,一個新的 MVW 可能剛接到通知到達前10,打開時才發現,數據已經過時了。

經過工程師、設計師、數據科學家及產品經理的討論,我們覺得這樣頻繁的重新計算如此復雜的聚合是一個非常不好的主意,因為:

1、實時排名引起技術點復雜性。上圖中任何依賴的改變(如,有訪問行為時或者答案被刪除時)都會觸發排名的改變。

2、從可用性角度考慮,實時排名也是非常不好的。不穩定的排名會引起用戶的混亂。

我們已經確定,對所有狀態改變敏感的排名不是產品的需求(實際上也不是所期望的)。相反,一種更好的選擇是周期性預聚合 MVWs 的離散版本,而不是像上面的流程一樣,依賴實時的訪問情況。我們可以通過線下的批量更新來計算下一個版本的 MVWs。

再看訪問數據流

為了支持線下的計算,我們通過第二條線下查詢的流水線來上傳訪問數據。有了這個設置,單個訪問被記錄在一個web 服務器的訂閱(Scribe)上,這樣通過多階段線下數據流,我們可以將數據上傳到 Amazon S3,并最終導入到 Redshift。我們之所以選擇 Redshift,是因為在這上面做聚合操作非常簡單,很適合大規模復雜查詢。除了訪問數據,其他相關的數據也可以上傳到 Redshift。

該流水線可以抽象為下圖所示:

***訪問作者,從開始到完成:

現在,有了批量更新 MVWs 的所有數據,讓我們走一遍真正計算排名的流程。

在討論最終的架構之前,先重新看一下我們想檢索的信息:

1、給定一個主題,返回最近 30 天內按答案訪問量排名的 MVWs 列表。

2、給定一個用戶,返回該用戶屬于 MVW 的主題列表。

3、給定一個主題,返回新的 MVWs 用戶列表,并給他們發送通知。

我們選擇使用HBase(一個開源的,非關系型的,基于 Google's BigTable的分布式數據庫)作為我們主要的后端來持久化存儲 MVW 的緩存數據。一個好處是使用HBase能獲得比關系型數據庫管理系統(RDBMS),如 MySQL,或者是簡單的內存緩存,如Redis,更好的大數據量的讀寫性能。由于所有的 MVW 數據都是預聚合的,所以只需要簡單的key-value查詢,而不要求范圍或聚合查詢。因此,我們的使用場景不涉及到需要關系型數據庫索引的復雜查詢。

例如,我們想緩存一些預聚合數據來支持如下1—10排名的查詢:

(Topic, Rank) -> (User, TopicViewCount)

我們可以創建一個關鍵字為“topic”和“rank”的HBase表格,每一行需要一個“user”列和一個“topic view count”列。HBase的另一個非常好的特性是,我們實際上可以定義一個“user”的列族和一個“topic view count”列族,每個包含一系列的版本值。通過每個列族,HBase允許動態的聚合新的列。每次周期性更新計算出來的新版本排名時,我們都可以創建一個新的列來存儲,通過直接指定這些列的存活時間,老版本就會自動過期。

回顧一下,我們記錄訪問數據到線下的數據流(Redshift)中,預聚合每個主題的排名,并在HBase中緩存結果,在最終的 MVW 功能中能夠高效的查詢數據。下面這個圖總結了從訪問記錄到 MVW 數據的聚合到如何使用這些數據的流程:

在Quora的產品工程中的教訓

通過創建 MVWs 的過程,我學到了許多關于產品工程的有效方式。該項目的成功主要歸結為對如下原則的堅持:

1、明確定義技術和功能目標。例如,通過清晰的映射產品功能目標與完整的依賴圖(如上),我們能夠避免出現因很小的改變而引起的極度不穩定排名,并且這種排名對用戶體驗沒有任何價值。這有助于我們做出正確的權衡,實現一個基于版本的設計,這既有利于技術層面的擴展,也有利于用戶端的直觀感受。

2、支持簡潔性和可擴展性。如果有疑問,寧可降低復雜性。從產品角度來說,這可以給用戶提供一個更清晰易懂的排名功能,從技術的角度來說,為我們在一個簡單易懂的系統上持續迭代打開了一扇大門。

總之,作為一個產品工程師,我已經能夠更好的看到 MVW 的影響,我也期待在未來能做更多的改進。對創建Quora的下一個精彩的功能有興趣嗎?查看職業生涯頁獲取更多關于在這里作為產品工程師的感受!

責任編輯:倪明 來源: cocoachina
相關推薦

2019-12-18 23:11:24

TF架構網絡連接

2015-07-22 16:08:46

OpenStack開源貢獻代碼

2013-09-09 12:35:54

MongoDB

2022-03-26 10:18:26

GoogleRust獲獎者

2015-09-08 09:05:16

貢獻者維基Linux

2015-06-23 13:41:03

Docker開源社區代碼貢獻

2015-05-19 09:11:32

OpenStackOpenStack貢獻

2011-07-01 09:26:12

2019-01-21 08:00:00

谷歌開源數據

2020-04-17 13:01:38

ASFApache董事會

2017-09-01 18:17:40

2021-10-22 10:18:51

鴻蒙HarmonyOS應用

2016-10-27 16:03:28

Easystack開源

2020-06-18 11:14:53

微軟谷歌開源

2017-09-04 11:06:40

2021-07-07 09:41:16

CentOS CentOS StreCentOS Stre

2009-07-21 08:41:52

Linux內核開源操作系統Intel

2012-11-13 10:47:59

大數據HBaseHadoop

2021-09-17 16:05:06

Google開源貢獻者獲獎者
點贊
收藏

51CTO技術棧公眾號

精品一区二区在线观看视频| 日韩欧美xxxx| 国产福利视频导航| 亚洲大胆av| 亚洲美女www午夜| 国产嫩草在线观看| 搞黄网站在线观看| av亚洲精华国产精华| 国产精品久久视频| 久久久久久av无码免费网站| 妖精一区二区三区精品视频| 欧美性大战久久久久久久| 99中文字幕在线观看| 午夜av免费在线观看| 日韩精品免费专区| 欧美激情欧美狂野欧美精品| 一级黄色片网址| 免费一级欧美片在线观看网站| 福利一区视频在线观看| 色爽爽爽爽爽爽爽爽| 午夜在线视频观看| 国产一区二区电影| 国产成人精品电影| 日韩成人高清视频| 女主播福利一区| 国产亚洲一区二区精品| 蜜臀av粉嫩av懂色av| 久久亚洲资源中文字| 疯狂做受xxxx欧美肥白少妇| 国产激情片在线观看| 91ph在线| 久久久久久麻豆| 国产福利久久| av中文字幕观看| 蜜桃传媒麻豆第一区在线观看| 久久久中文字幕| 欧洲第一无人区观看| 九九亚洲视频| 日韩电影中文字幕在线观看| 老熟女高潮一区二区三区| 欧美大片网站| 黑人巨大精品欧美一区二区免费 | 人人九九精品| 成人黄色一级视频| 成人av免费看| 国产成人精品a视频| 久久99久久久久| 国产精品视频成人| 国产真人无遮挡作爱免费视频| 日韩一级不卡| 97超级碰碰碰| 91国产丝袜播放在线| 亚洲精选成人| 高清欧美性猛交xxxx| 国产一级特黄视频| 一区在线观看| 97免费在线视频| 日本系列第一页| 99热在线精品观看| 欧美一级淫片videoshd| 国产成人无码精品| 国产精品亚洲欧美| 欧美做受高潮电影o| 国产又粗又爽视频| 日韩精品免费视频人成| 国产日本欧美一区二区三区在线| 国产一区二区视频免费观看| 精品一区二区免费视频| 91人成网站www| 性欧美一区二区三区| 成人黄色av网站在线| 国产精品自拍三区| 日韩av综合中文字幕| 人妻av一区二区| 全国精品免费看| 亚洲色图第三页| 永久免费观看片现看| 亚洲精品二区三区| 久久久久女教师免费一区| 日本天堂在线视频| 丝袜美腿亚洲色图| 成人av在线网址| 亚洲h视频在线观看| 99re在线视频这里只有精品| 日韩av在线一区二区三区| 网友自拍视频在线| 亚洲一区二三区| 免费观看日韩毛片| 国产亚洲精彩久久| 日韩欧美高清一区| 大黑人交xxx极品hd| 青青草国产免费一区二区下载| 伦理中文字幕亚洲| 草久视频在线观看| 麻豆免费精品视频| 国产一区精品视频| 一区二区三区视频在线观看视频| 一卡二卡三卡日韩欧美| 日韩中文字幕组| 精品国产一区二区三区2021| 精品网站999www| 国产天堂av在线| 亚洲欧美清纯在线制服| 亚洲在线免费看| 久久经典视频| 亚洲一区二区视频在线| 欧美日韩999| 中文字幕在线视频精品| 精品精品精品| 日韩资源在线观看| 草久久免费视频| 国产一区二区在线看| 久久视频在线观看中文字幕| 国产鲁鲁视频在线观看特色| 狠狠久久亚洲欧美专区| 亚洲天堂伊人网| 国产精品欧美日韩一区| 久久成年人免费电影| 区一区二在线观看| 顶级嫩模精品视频在线看| 欧洲精品码一区二区三区免费看| 欧美videosex性极品hd| 欧美视频一二三区| 六十路息与子猛烈交尾| 久久久久久久久国产一区| 国产99视频在线观看| www.国产三级| 亚洲天堂久久久久久久| 国产理论在线播放| 综合亚洲自拍| 97视频在线观看免费高清完整版在线观看| 96日本xxxxxⅹxxx17| 久久精品免费在线观看| 黄色一级视频片| 97久久综合精品久久久综合| 精品国产一区av| 中文字字幕在线观看| 久久久久久久综合日本| 干日本少妇首页| 精品综合久久88少妇激情| 久久999免费视频| 国产欧美日韩成人| 亚洲美女偷拍久久| 成人日韩在线视频| 久久影院100000精品| 国产精品你懂得| 成年人在线观看网站| 色一情一乱一乱一91av| 中国美女乱淫免费看视频| 99精品国产99久久久久久福利| 国产精品一区二区三区观看 | 欧美日本精品在线| 国产成人精品一区二三区四区五区| 国产精品久久久久久久浪潮网站| 亚洲精品怡红院| 日本不卡二三区| 国产精自产拍久久久久久蜜| 香蕉视频免费在线播放| 欧美日韩中文国产| 九九热视频在线免费观看| 激情综合色丁香一区二区| 伊人色综合影院| 欧美视频三区| 欧美激情亚洲综合一区| 天堂中文网在线| 亚洲二区视频在线| 欧美 日本 国产| 首页国产欧美日韩丝袜| 一级日韩一区在线观看| 久久久国产精品入口麻豆| 欧美老女人在线视频| 亚洲欧美另类综合| 福利精品视频在线| 992在线观看| 国产又黄又大久久| 国内精品在线观看视频| 一本色道久久综合狠狠躁的番外| 国产精品久久一区主播| 超碰在线免费公开| 亚洲国产成人精品女人久久久 | 欧美日韩在线免费视频| 欧美在线视频第一页| 成人av免费网站| 中文字幕视频在线免费欧美日韩综合在线看 | 国产一区二区精品在线| 丁香婷婷在线| 亚洲国产精品第一区二区三区 | 露出调教综合另类| 日韩av片免费在线观看| 米奇精品一区二区三区| 日韩视频123| 亚洲高清毛片一区二区| 国产精品久久久久久久久免费丝袜| 日本新janpanese乱熟| 狠狠操综合网| 成人综合色站| 不卡av影片| 国产亚洲美女久久| 黑人乱码一区二区三区av| 色欧美片视频在线观看| 老熟妇高潮一区二区三区| 成人性生交大片免费| 欧美私人情侣网站| 欧美日本亚洲韩国国产| 日韩片电影在线免费观看| 亚洲一区二区三区在线免费| 国产精品高清网站| 黄色网在线播放| 亚洲欧美在线免费| 懂色av一区二区三区四区| 欧美亚洲自拍偷拍| 国产午夜精品无码| 国产精品久久久久久久久免费樱桃 | 欧美综合国产| 天堂8在线天堂资源bt| 久久中文字幕二区| 久久久久久久久一区| 蜜桃在线一区| 欧美最猛性xxxx| 国产盗摄在线视频网站| 色狠狠av一区二区三区香蕉蜜桃| 香蕉视频成人在线| 欧美大片国产精品| 亚洲最新av网站| 91福利社在线观看| 久久狠狠高潮亚洲精品| 亚洲最新在线观看| 一区二区三区影视| 国产精品无圣光一区二区| 国产熟妇搡bbbb搡bbbb| 成人av电影在线| 手机看片国产精品| 精品一二三四区| 麻豆三级在线观看| 免费在线观看一区二区三区| 日日碰狠狠躁久久躁婷婷| 伊人蜜桃色噜噜激情综合| 视色,视色影院,视色影库,视色网| 国产一区网站| 区一区二区三区中文字幕| 秋霞综合在线视频| 久久草.com| 91久久偷偷做嫩草影院电| 国产精品一区电影| 成人精品高清在线视频| 国产精品久久一区| 777午夜精品电影免费看| 秋霞成人午夜鲁丝一区二区三区| 理论片午夜视频在线观看| 久久免费在线观看| h片在线观看视频免费| 久久久久久中文| 欧美三级一区二区三区| 红桃av永久久久| 久久久久久久久久免费视频 | 精品亚洲二区| 97在线资源站| 粉嫩av一区二区| 好看的日韩精品| 亚洲视频分类| 日韩中文字幕av在线| 波多野结衣的一区二区三区| 亚洲国产精品www| 国产精品91一区二区三区| 中文字幕av日韩精品| 欧美在线网址| 欧美亚洲日本一区二区三区| 亚洲一区日韩在线| 日韩一级理论片| 精品在线一区二区三区| 亚洲综合中文网| 91免费看片在线观看| 久久精品—区二区三区舞蹈| 国产精品久久久久影院老司| 强乱中文字幕av一区乱码| 亚洲mv在线观看| 波多野结衣在线观看一区| 欧美绝品在线观看成人午夜影视| 精品久久久无码中文字幕| 亚洲激情国产精品| 成人在线观看一区| 九九视频这里只有精品| 亚洲午夜天堂| 91理论片午午论夜理片久久| 国产精品乱战久久久| 你懂的网址一区二区三区| 999国产精品| 成人一对一视频| 精品一二三四区| 一区二区三区少妇| 国产精品麻豆视频| 国产中文字幕免费| 欧美中文一区二区三区| 亚洲黄色小说网| 国产亚洲美女久久| 丁香高清在线观看完整电影视频| 国产极品jizzhd欧美| 日韩在线观看中文字幕| 欧美一卡2卡3卡4卡无卡免费观看水多多| 欧美hentaied在线观看| 香港三级韩国三级日本三级| 久久精品72免费观看| 午夜视频在线观看国产| 成人免费一区二区三区视频 | 肉肉视频在线观看| 国产成人精品免费久久久久| 一区二区三区四区精品视频| 色就是色欧美| 国产一区91| 国产调教打屁股xxxx网站| 日本一区二区成人在线| 日韩免费视频网站| 91精品国产色综合久久不卡蜜臀 | 亚洲午夜精品久久久久久人妖| 久久99热99| 色哟哟精品观看| 性久久久久久久久| 国产叼嘿视频在线观看| 最近2019年好看中文字幕视频| 国产社区精品视频| yellow视频在线观看一区二区| 日本一区二区在线看| 免费在线激情视频| 北岛玲一区二区三区四区| 日韩精品一区二区亚洲av性色| 欧美中文字幕一区| 国内三级在线观看| 欧美一区三区三区高中清蜜桃| 盗摄系列偷拍视频精品tp| 四虎4hu永久免费入口| 麻豆91在线播放免费| 久久丫精品忘忧草西安产品| 欧美日韩另类字幕中文| 韩国av免费在线| 欧美二区在线播放| 久久伦理中文字幕| 熟女视频一区二区三区| 精品一区二区免费在线观看| 国产视频精品免费| 欧美综合欧美视频| 日本成人一区二区三区| 2018日韩中文字幕| 日韩精品欧美大片| 丝袜老师办公室里做好紧好爽| 99久久精品国产毛片| 日韩少妇高潮抽搐| 亚洲成人在线网| xxx.xxx欧美| 国产在线精品一区二区三区| 亚洲三级毛片| 少妇被狂c下部羞羞漫画| 婷婷综合另类小说色区| 五月天婷婷激情网| 日本久久久久久久久| 国产午夜一区| 伊人国产在线视频| 国产欧美日韩激情| 少妇一级淫片日本| 中文字幕在线看视频国产欧美在线看完整 | 精品一级毛片| 三级在线视频观看| 中文字幕一区二区三| 99久久久久久久| 久久久久久中文字幕| 一本色道久久综合亚洲精品酒店| 激情内射人妻1区2区3区| 亚洲国产精品t66y| 波多野结衣在线观看一区| 少妇激情综合网| 亚洲一级大片| 99久久久无码国产精品6| 欧美国产视频在线| 国产suv一区二区| 97精品国产aⅴ7777| 精品99在线| 中文字幕第22页| 调教+趴+乳夹+国产+精品| 国产福利在线| 亚洲综合在线小说| 国产亚洲精品v| 潘金莲一级黄色片| 亚洲成人久久久| 欧美高清影院| 成人网站免费观看入口| 国产欧美日韩不卡免费| 亚洲精品久久久久avwww潮水| 日本国产欧美一区二区三区| 四虎国产精品免费观看| 男人网站在线观看| 欧美日韩中文字幕精品| sm性调教片在线观看 | 自拍视频一区二区| 欧美群妇大交群中文字幕| 成年网站在线视频网站| 蜜桃麻豆www久久国产精品| 久久成人18免费观看| 日本少妇吞精囗交| 久久精品国产亚洲精品| 色愁久久久久久| 亚洲丝袜在线观看|