函式計算實踐——一個應用案例

流火星空發表於2020-12-30

一 背景 

來自一個使用者匹配的需求。使用者的不同資訊分佈於兩個系統,且客觀上無法直接打通。所以就涉及到兩個系統id匹配的問題。

先抽象問題:系統A,系統B;系統A中存在一個使用者a(欄位:a_id, a_img, a_name), 系統B中可能有a的補充資訊(欄位:ab_id, ab_img,ab_name),

目標:如果B中存在使用者a的資訊,那麼希望能找到並進行匹配,並把匹配結果返回系統A,結果格式:a_id, a_img, a_name,ab_id

二 問題詳細描述

欄位說明:

a_id 使用者a在系統A的id;

a_img 使用者a在系統A的屬性圖片連結,注: a_img和ab_img雖然都是使用者a的圖片連結,但可能連結並不相同。例如a_img: http://sysa/a1.jpg,ab_img:http://sysb/b2.jpg

a_name 使用者a在系統A的屬性暱稱;

ab_id 使用者a在系統B中的id。

兩個系統中的圖片,正常情況下,img內容是相同的(連結可能不同);或者是縮圖關係; name通常不會修改,但存在多個使用者暱稱相同的情況。

這兩個屬性是判定兩個系統中的使用者是否是同一個的主要依據。

三 匹配策略

注:以下只是專案初期的簡化匹配策略。因為資料特性,經過統計和特徵分析,驗證準確率可以達到預期,所以初期不會為百分之幾的優化投入過多資源和精力。所以不必糾結策略的準確率

1、首先通過暱稱匹配

    當系統A的使用者暱稱,與系統B的有且只有一條記錄暱稱相同時,將這兩個記錄匹配 【根據真實資料經驗,使用者進入兩個系統記錄的時間規律,並允許較低的錯誤率;支援人工修復】;

2、當系統A的輸入記錄,與系統B的多條記錄暱稱相同時,繼續判斷圖片內容。這裡的判斷步驟設計如下:

2-1 分別拉取a_img 和 ab_img的圖片內容(字串),如果內容相同,那麼確定是同一條記錄,記錄匹配關係;

2-2 如果內容不同,計算兩張圖片的相似度(漢明距離)。當相似度大於指定閾值時,認為二者匹配,記錄匹配關係

四 計算資源管理及優化

可以看到,這裡可能會有一個比較耗費資源的動作,就是需要匹配圖片內容時。我們要拉取圖片內容、字串直接比對、簡化特徵、計算漢明距離,而當這個計算邏輯被併發呼叫的頻率很高時,所需的頻寬、計算能力都有可能成為瓶頸。自運維就需要解決峰值問題,或強制限制呼叫頻率。所以採用函式計算來做彈性支援。

另外,為了減少重複的圖片拉取動作,降低流量消耗,且繫結資料儲存在系統B中。那麼我們先完成系統B內img的內容拉取,和特徵提取工作,對於一個新的匹配請求,我們只需要拉取a_img的內容並特徵提取就可以了,減少了近一半的工作。

 

目前,專案已經在開發中,效果已做驗證,即將上線。未來再進行深入優化

 

相關文章