重新思考 LinkedIn 的認證模塊架構

AvaArmer 9年前發布 | 5K 次閱讀 數據挖掘 軟件架構

如果你是 LinkedIn 的用戶,你一定知道它的認證系統。目前為止全球已經有數千萬專業人員點擊了“認證”按鈕,通過他們的關系連接分享了超過100億個技能認證。LinkedIn 上線認證系統的目的很簡單——創造一種讓其他人辨認人們的技能的方式。

當很大一部分 LinkedIn 用戶都使用認證功能的時候,我們意識到,想到達到產品的初衷,還有許多工作需要完成。我們注意到,一些認證相比其他要更具價值,所以我們準備打造一個更好的產品來幫助我們的會員理解利用認證能帶給他們的潛在價值。

實現一個為我們的用戶提供更多價值的認證系統,需要多方面的調研、新的機器學習模型以及重新架構的能夠服務和推薦新認證的后端系統。我們需要的不僅僅是更快的認證服務,還能讓我們基于用戶的關系和技能為他們提供更多的見解。我們相信,有了新的認證模塊架構奠定的基礎,我們最終將能夠實現上述目標。

當前的架構

依據歷史經驗來說,LinkedIn 的認證體驗主要依賴于兩大支柱:其一是推薦認證,其二是認證服務。推薦認證流程在后端架構的體現是,產生一組推薦給我們的用戶,引導關系網中的用戶去幫助認證。這些推薦為用戶提供了一個便捷途徑來獎勵他們同事的技能。

認證系統的第二個支柱是,當用戶看其他人的檔案的時候,簡單地允許他們認證他們關系網中的人,然后為這些認證服務。

認證服務

在 LinkedIn,我們使用微服務架構:大的功能(比如認證)會被封裝到一個單獨的服務中,然后只暴露出所有可以進行的操作。這樣,就可以在保持后端兼容性的基礎上讓服務在內部進行演進。

自該方案實施之后,認證產品只是依賴于一個簡單的架構,即使用一個單獨的 SQL 實例來服務所有的認證。為了在每秒數千請求(QPS)的情況下擴展到100億認證,我們不得不極度優化數據庫使用到的索引。

例如,由于最常見的使用場景是基于一個給定用戶進行認證服務,我們創建了一個結構化的索引,層級如下:

Recipient Id (1) → Endorsed Item (2) → Endorser Id (3)

利用這些索引,下面這些操作會變得非常簡單:

  • 遍歷用戶“Joey”的所有認證:我們使用索引(1),然后遍歷它的所有數據項。
  • 遍歷用戶“Joey”的所有“Java”技能的認證:我們使用索引(1)和(2)的組合,然后列出所有數據項。
  • 遍歷用戶“Yolanda”給予“Joey”的所有“Java”技能的認證(假設“Yolanda”是個推薦人):這次我們使用索引(1)、(2)和(3)的組合,然后遍歷找到的數據項。

當然,這種方法會有一些瓶頸。例如,如果我們想要找出“Jie”給出的所有認證,我們將不得不遍歷一遍數據庫中的100億條數據。

推薦認證

有兩條推薦認證流程:

  • 可認證技能:這個流程會預測一個用戶可能擁有或想要發展的技能條目。

  • 推薦認證:這個流程會提供每個用戶可以認證的(接受者,技能)元組列表。

這兩個流水線能夠在離線狀態下的 Hadoop 工作流中,利用機器學習和合并特征(例如相互關聯、檔案信息和歷史認證)產生推薦。這些“認證技能”和“推薦認證”數據會被推送到兩個不同的 Voldemort 存儲中。認證服務將會對鍵值對存儲進行在線查詢,拉取可能的認證,然后將他們交付給用戶。

(點擊放大圖像)

多年來,機器學習算法驅動的推薦系統一直在進行微調,以優化擴散和技能多樣性。認證系統已經生成了許多用戶參與,并已經驅動了 LinkedIn 的許多其他行動。迄今為止,認證的數量和參與此項功能的用戶數見證了這個模型的成功。

鑒于認證模塊在許多國家已經非常成熟,我們認為現在是時候來重新設計我們的架構,打開為我們的用戶提供更多相關內容的大門。我們走上了尋求重建認證模塊的愿景。

優化正確的目標指標

使用我們的用戶給出的認證數量來衡量認證系統的成功已然過時,我們希望定義一個新指標來更好地代表認證產品的目標。在本文中,我們將這個新指標稱之為“高評分的認證”。

獲取用戶的反饋

在 LinkedIn,我們是一個“用戶至上”的組織,意味著我們相信應該讓用戶的聲音來引導我們的產品設計。為了優化算法來盡可能交付最好的用戶體驗,我們想了解哪些認證的用戶評價最高。

我們提供了一個功能,讓會員可以在應用內對收到的新認證通知予以反饋。我們會問一些問題,類似于“它與你的技能的關聯度有多少?”、“這個認證價值幾何?”等。這些調查遵循 LinkedIn 嚴格的隱私政策,收集到的數據僅僅用于提升我們的模型。

用反饋來構建一個目標指標

我們開發一個目標指標的目的是捕獲那些能為用戶的技能提供有價值的確認的認證。根據我們獲得的用戶反饋,我們注意到認證通常來自于那些同時知道此接受者和此技能的推薦人。

為了定義更為具體的目標指標,最開始我們選擇了關于推薦人、接受人和他們的關系的80多種對定義有用的候選指標。

這些特性,與回應相結合,能夠讓我們將不同的特性與我們通過產品內的反饋接收到的積極信號關聯起來。使用各種各樣的機器學習算法,我們最終識別出了最有用的12種信號。

識別高評價認證最高特性的信號流程

為了開發一個有用的指標來衡量認證系統的健康狀態,并引導產品研發,我們希望這個定義是準確的、直觀的和全面的。

  • 準確的 意味著它與用戶調查反饋是強相關的。

  • 直觀的 意味著它與我們的產品直觀相符,并易于和用戶溝通。

  • 全面的 意味著它能捕獲到廣泛的高評價認證。

我們沒有直接使用機器學習模型作為我們的定義,因為盡管它是準確的和全面的,卻不夠直觀。相反,我們找到了一個更簡單的定義,并且它與調查數據相符。從最高的12個特性中,我們開始創建高評價認證的候選定義。例如,我們可以認為高評價的認證是那些由在這個技術領域是專家的同事給出的認證。對于每一個候選定義,我們會關注它的查全率和與人類理解它的精確度。

在這個過程結束時,我們開發出了一個目標認證指標,它被描述如下:

一個同時知道這個人和這項技術的關系人做出的認證是高評價的認證。

對于定義的每個部分(了解這項技術和了解這個人),我們基于由機器學習結果支持的直觀臨界值確定了它們各自的頂部信號的閾值。下周我們將討論 LinkedIn 服務認證的新后端架構。

 

來自:http://www.infoq.com/cn/articles/rethinking-linkedin-authentication-module-architecture

 

 本文由用戶 AvaArmer 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!