天天看點

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語

背景

使用者身份權益體系(或會員權益體系)幾乎是各大成熟app的标配,使用者身份權益體系通過對使用者賦予身份(會員、等級)的方式,提供不同級别的産品權限給不同的使用者,是使用者活躍度營運以及商業化的重要工具。同時,使用者身份也是用于區分使用者影響力、優質程度等關鍵能力的重要标記(如微網誌的大v),對于不論是電商類還是社交類産品,都有着非常關鍵的作用。

本文将從技術實作的視角,以閑魚app的使用者身份權益體系為例,介紹如何設計一個具有良好擴充性的使用者身份權益體系。

問題與挑戰

  • 【身份權益的管理】在常見身份權益管理場景中,使用者可以同時獲得多個不同的身份、多個身份可能持有重疊的權益、相同的權益可能存在内容上的差異(如數量大小)、權益重複時需要處理權益的合并政策。如何對身份、權益的概念進行抽象設計,是整個系統最核心需要解決的問題。
  • 【身份的透出】當使用者獲得了一個身份,不論是大v标記還是會員等級,都希望在app上進行顯示,以傳遞身份特有的心智,不同身份可能有同樣的标簽(例:閑魚的領域賣家、會玩達人都顯示v标),同一身份可能有不同的個性化标簽内容(例:某某領域達人),如何統一管理使用者身份在app全鍊路的透出,也是身份權益體系需要解決的一個問題。
  • 【身份的賦予】不同的産品中,身份的賦予方式各不相同,常見的有付費購買、積分更新、認證、營運加白等等,在賦予過程中還會加入豐富的更新路線(等級體系等),同一産品中多見的會同時具備多種賦予的方式。如何支援多元的身份賦予途徑,以及如何支援不同身份的擴充,也是技術上需要解決的一個重要問題。

本文将以閑魚的身份權益體系為例,針對身份權益體系中的身份權益的定義、管理,身份的透出進行了詳細的介紹,同時以閑魚的使用者認證流程為例,介紹了如何解耦身份管理與身份賦予兩個過程,并在身份賦予過程中做到身份的可擴充。

技術實作

概念梳理

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語
  • 身份是指,使用者滿足某些準入條件後,被授予的一個身份标記。一個身份在技術實作上,是一個和使用者關聯的記錄/系統标簽。
  • 權益是指,使用者因為具有某個身份,而獲得的在現有的一些業務中的一些特權。我們用一個鍵值對表示一條權益,key表示的是權益,value表示的是權益的值,這個值可以是一個數字、boolean、一個帶占位符的文本等,權益的提供方根據這個權益的值提供具體的權益。
  • 透标标簽是指,根據某個身份外顯權益而獲得的一個基于使用者的可展示的描述符,這個描述符可以在用戶端和前端頁面進行渲染,進而實作身份的外顯。一個标簽的描述可以是:一個文本、一個圖檔url、一組用戶端可以識别的元素等,用戶端根據這個标簽的内容進行渲染。
  • 認證是指,使用者因希望獲得某個身份而發起的一個認證申請,認證後會獲得一個身份。一個認證在技術實作上是一條認證記錄,包括了認證的狀态、這次認證所關聯的資訊(包括送出的表單,稽核的結果等)。

注:認證是獲得身份方式的一種,本文以認證流程為例,介紹如何實作一個身份賦予的過程。值得注意的是,在我們的設計中,身份的透出,作為一種權益進行設計。

系統拆分

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語

我們對應的将系統拆分為三個獨立的子產品:身份權益服務、使用者标簽服務、認證服務(以認證服務為代表的身份賦予子產品)。

對于三個系統的功能和邊界定義如下:

  • 【身份權益服務】:管理使用者的身份以及身份-權益的關系,營運可以通過系統配置身份對應的權益,系統能夠對使用者的權益進行計算、合并,權益提供方可以通過身份權益服務查詢使用者的權益。
  • 【使用者标簽服務】:根據使用者的權益、個性化資料以及其他外部服務等,按規則向全鍊路下發使用者的透标标簽。全鍊路的各個場景可以用不同規則查詢目前場景可渲染的使用者标簽,标簽系統對不同的規則可以有差異化的定制,做到不同場景按需訂閱、擴充。
  • 【認證服務】:管理使用者的認證流程,使用者通過認證服務發起申請,系統對使用者的準入和表單進行校驗,将表單轉發給營運稽核,并對稽核結果進行處理。認證通過後,通過身份權益服務接口對使用者進行身份添加。同理,不論是積分、白名單還是使用者等級體系,均可以以這種方式進行接入。

基于上述的設計,使用者通過認證服務獲得身份,權益提供方根據身份權益服務查詢相應的權益提供特權,使用者标簽服務對其中的透标權益進行支援,在app側渲染使用者的身份,進而實作身份外顯,完整的滿足了使用者身份認證-透标的能力。

下面展開介紹各個系統分别是如何實作的。

【身份權益服務】實作

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語

【身份權益服務】基于身份權益配置和使用者标簽系統(集團中台的使用者标簽服務)實作。我們将身份權益的配置,寫入到身份權益配置表,編輯完成後,通過配置中心,釋出到各個伺服器的記憶體中。

另一方面,使用者認證流程、白名單等服務通過身份服務接口将身份寫入到UIC的标簽系統中,标簽系統是集團實作的使用者-标簽的管理系統,可以基于緩存快速查詢使用者是否具有某個标簽,一個身份由一個标簽表示(沒有标簽系統的話也可以用資料庫+緩存的方式實作)。

在權益提供方查詢使用者權益時,我們快速從使用者标簽系統中讀取使用者的全部身份标,根據記憶體中身份-權益的配置,通過一個身份-權益計算函數(輸入身份标和權益配置schema,輸出權益),對權益進行合并、擇優去重後(不同權益的合并方式按權益配置,如邏輯或、最大值、字元連接配接等),将計算結果(權益)傳回給權益提供方。

【使用者标簽服務】實作

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語

【使用者标簽服務】實作了使用者次元的标簽透出。服務可以基于身份權益服務、使用者個性化資料、外部服務等,傳回使用者需要透出的标簽,标簽的描述包括但不限于圖檔url,文本,複雜結構等。服務支援通過規則id進行定制,不同的規則id,可以定制需要透出的标簽的組合,各個場景根據需要展示的标簽,選用合适的規則id進行訂閱,在原規則id不适用的情況下,可以定義新的規則id進行支援。

【認證服務】實作

玩轉使用者身份權益——詳解閑魚身份權益體系的實作 背景技術實作結語

【認證服務】定義了一套标準的認證流程,統一對認證的狀态進行管理,同時通過擴充接口,讓不同認證流程的業務對擴充接口進行實作,進而實作流程标準化,内容可擴充。

認證服務的整體流程分為認證查詢、表單送出、稽核結果處理三個階段,在認證流程中,系統維護了未認證、稽核中、稽核未通過、稽核通過四個不同的狀态,不同的認證流程具有相同的狀态流轉,由認證服務統一維護。

在認證查詢中,不同的認證流程具有不同的準入條件;在表單送出過程中,不同的認證流程具有不同的表單字段和合法性要求;在稽核結果中,針對稽核結果不同認證流程有不同的處理方式。是以,認證流程提供了三個擴充接口,第一個擴充接口用于實作擷取使用者的準入條件判定和表單渲染;第二個擴充接口用于使用者表單的校驗,同時生成稽核用的資料表單;第三個擴充接口用于對稽核結果進行處理。于是在我們的認證服務上,隻需要實作上述三個擴充接口,就能完成一套新的認證流程的接入。

結語

本文以閑魚的身份權益體系實作為例,介紹了如何對身份權益體系進行概念定義、子產品拆解、技術實作,同時以閑魚的身份認證流程為例介紹了如何實作、接入不同的身份賦予管道,希望對大家系統中的身份權益設計起到一些參考作用。