用戶身份標(biāo)識(shí)與賬號(hào)體系實(shí)踐
一、業(yè)務(wù)背景
通常在系統(tǒng)研發(fā)的過(guò)程中,需要不斷適配各種業(yè)務(wù)場(chǎng)景,擴(kuò)展服務(wù)的領(lǐng)域和能力,一般會(huì)將構(gòu)建的產(chǎn)品矩陣劃分出多條業(yè)務(wù)線,以便更好地管理;
由于各個(gè)業(yè)務(wù)線的數(shù)據(jù)入口和管理策略的不同,這樣從不同路徑下沉淀的數(shù)據(jù),可能因?yàn)橄到y(tǒng)邊界問(wèn)題從而被孤立;如果用戶數(shù)據(jù)被分裂,會(huì)因?yàn)閿?shù)據(jù)不全面給分析決策帶來(lái)誤導(dǎo);
比較經(jīng)典的場(chǎng)景,用戶從應(yīng)用端完成注冊(cè)之后,通常不會(huì)過(guò)多提供自身信息,由于業(yè)務(wù)需要不斷豐富用戶畫像,所以用戶數(shù)據(jù)通常會(huì)被調(diào)度到獨(dú)立的管理系統(tǒng)中,通過(guò)不同的觸點(diǎn)反饋進(jìn)行信息擴(kuò)展,比如采集埋點(diǎn)數(shù)據(jù),線下接觸,營(yíng)銷電話等;
這種情況從操作上是有明顯感知的場(chǎng)景,顯然用戶在應(yīng)用庫(kù)中的數(shù)據(jù)和在管理庫(kù)是存在很大差異的,在真實(shí)的情況中用戶可能在不同的應(yīng)用和場(chǎng)景中會(huì)產(chǎn)生重復(fù),必然會(huì)導(dǎo)致用戶數(shù)據(jù)難以統(tǒng)一維護(hù);
二、唯一標(biāo)識(shí)
用戶的行為數(shù)據(jù)在當(dāng)下的互聯(lián)網(wǎng)產(chǎn)品中,是極其具有分析價(jià)值的,不同的應(yīng)用端不管是否處于登錄狀態(tài),在產(chǎn)品中產(chǎn)生的數(shù)據(jù)都是有記錄的手段,進(jìn)而在數(shù)據(jù)層面分析識(shí)別;
這些編號(hào)最大的特點(diǎn)就是具有唯一性,可以標(biāo)識(shí)用戶在不同終端不同狀態(tài)的操作信息,而當(dāng)這些數(shù)據(jù)沉淀到系統(tǒng)時(shí),會(huì)根據(jù)端口和操作類型進(jìn)行存儲(chǔ),不同的終端下其數(shù)據(jù)唯一標(biāo)識(shí)也不相同;
從數(shù)據(jù)分析的角度上來(lái)看,顯然不希望用戶的行為信息被分裂并且各自孤立,這樣對(duì)多終端多狀態(tài)下的用戶行為數(shù)據(jù)進(jìn)行全域關(guān)聯(lián),是行之有效的方式,其基本原理涉及到ID的映射技術(shù);
三、Id映射
基于上述的業(yè)務(wù)情況,在產(chǎn)品矩陣中提供用戶身份的全局統(tǒng)一標(biāo)識(shí)至關(guān)重要,用戶實(shí)體在不同業(yè)務(wù)線所產(chǎn)生的行為數(shù)據(jù),通過(guò)唯一序列號(hào)進(jìn)行識(shí)別,這樣進(jìn)行用戶分析時(shí)看到的畫像比較全面;
在當(dāng)下的互聯(lián)網(wǎng)產(chǎn)品中,基于手機(jī)號(hào)創(chuàng)建應(yīng)用賬號(hào)的模式已經(jīng)是常見功能,手機(jī)號(hào)注冊(cè)之后,再通過(guò)手機(jī)號(hào)去關(guān)聯(lián)相應(yīng)的終端ID,從而使各種孤立的數(shù)據(jù)被鏈接起來(lái);
其實(shí)現(xiàn)的原理并不復(fù)雜,首先需要提供一套映射庫(kù),當(dāng)新的手機(jī)號(hào)被系統(tǒng)識(shí)別采集時(shí),在映射庫(kù)中新建一條數(shù)據(jù),手機(jī)號(hào)和對(duì)應(yīng)的唯一ID,此后其他路徑的數(shù)據(jù),如果手機(jī)號(hào)相同則綁定在該ID下面;
四、數(shù)據(jù)關(guān)聯(lián)
在ID映射機(jī)制下,雖然各個(gè)業(yè)務(wù)線數(shù)據(jù)相對(duì)孤立,數(shù)據(jù)之間不會(huì)產(chǎn)生直接影響,但是實(shí)際上已經(jīng)被唯一ID串聯(lián)起來(lái),這樣將ID關(guān)聯(lián)的數(shù)據(jù)進(jìn)行綜合分析,準(zhǔn)確性會(huì)提高很多;
不管從任何路徑或渠道下采集的數(shù)據(jù),如果存在手機(jī)號(hào)的維度,或者手機(jī)號(hào)相關(guān)聯(lián)的序列號(hào)標(biāo)識(shí),判斷該手機(jī)號(hào)是否存在全局映射ID,沒(méi)有則在映射庫(kù)中創(chuàng)建對(duì)應(yīng)關(guān)系,如果有則直接綁定即可;
在執(zhí)行數(shù)據(jù)的全局調(diào)度和分析時(shí),則通過(guò)映射庫(kù)的標(biāo)準(zhǔn)關(guān)系,基于ID標(biāo)識(shí)將全部業(yè)務(wù)線的數(shù)據(jù)進(jìn)行查詢和統(tǒng)籌分析,從而生成相對(duì)全面的數(shù)據(jù)檔案,以及標(biāo)準(zhǔn)的分析邏輯;下面給出一個(gè)參考性的結(jié)構(gòu)設(shè)計(jì):
這里存在數(shù)據(jù)關(guān)聯(lián)的邏輯,ID標(biāo)識(shí)與手機(jī)號(hào)都是唯一的且一對(duì)一,但是手機(jī)號(hào)與終端的序列號(hào)可能存在一對(duì)多,甚至是多對(duì)多;賬號(hào)與應(yīng)用中產(chǎn)生的行為數(shù)據(jù),雖然追求準(zhǔn)確性,但是精確度不會(huì)過(guò)度要求;
這種情況下就需要執(zhí)行相應(yīng)的業(yè)務(wù)策略,比如同一個(gè)手機(jī)號(hào)可能登錄過(guò)不同手機(jī)中的相同應(yīng)用,手機(jī)中的應(yīng)用也可能被多個(gè)賬號(hào)登錄過(guò),此時(shí)則需要基于策略做關(guān)聯(lián)上的取舍,可能是賬號(hào)登錄時(shí)長(zhǎng),或者登錄前后的時(shí)段,無(wú)法一概而論;
五、注冊(cè)登錄
以手機(jī)號(hào)作為賬號(hào)主體為例,開放的應(yīng)用并不會(huì)明顯區(qū)別注冊(cè)和登錄,以此簡(jiǎn)化操作避免阻斷掉用戶,在通過(guò)手機(jī)號(hào)登錄時(shí),如果是未注冊(cè)的用戶直接進(jìn)行信息初始化即可;
- 用戶在登錄表單中,輸入手機(jī)號(hào)并獲取驗(yàn)證碼;
- 在登錄服務(wù)中,生成并維護(hù)驗(yàn)證碼的時(shí)效;
- 驗(yàn)證碼需要借助對(duì)接的第三方短信平臺(tái)推送到用戶手機(jī)中;
- 登錄表單填充驗(yàn)證碼之后提交登錄信息進(jìn)行驗(yàn)證;
- 當(dāng)?shù)卿涷?yàn)證成功之后,如果用戶未注冊(cè)則初始化賬號(hào)體系;
- 賬號(hào)體系校驗(yàn)和維護(hù)之后,通過(guò)異步方式關(guān)聯(lián)ID標(biāo)識(shí);
- 最后需要給用戶端返回Token身份令牌,作為賬號(hào)識(shí)別;
注冊(cè)登錄集成在一起的復(fù)用接口比較復(fù)雜,但是以最短的路徑讓用戶快速使用產(chǎn)品,通過(guò)行為數(shù)據(jù)采集分析,從而可以精準(zhǔn)識(shí)別用戶需求,進(jìn)行正確的引導(dǎo)和營(yíng)銷,發(fā)揮出數(shù)據(jù)的真正價(jià)值;
這里給出一份賬號(hào)管理的結(jié)構(gòu)設(shè)計(jì)參考,通常情況下用戶的主表維度會(huì)圍繞可登錄的賬號(hào)來(lái)設(shè)計(jì),而涉及到信息采集的數(shù)據(jù)會(huì)寫入用戶檔案表,由于不同業(yè)務(wù)場(chǎng)景對(duì)信息依賴不同,所以在用戶注冊(cè)之后會(huì)引導(dǎo)各種數(shù)據(jù)采集的頁(yè)面;
用戶身份識(shí)別和賬號(hào)作為系統(tǒng)非?;A(chǔ)的核心能力,在設(shè)計(jì)的時(shí)候既要有用戶體驗(yàn),同時(shí)要重視數(shù)據(jù)的安全性;作為核心能力在前期設(shè)計(jì)的時(shí)候就需要一定的前瞻性,做好可能性的規(guī)劃和結(jié)構(gòu)預(yù)留,避免后續(xù)的迭代跨度過(guò)大。
六、參考源碼
編程文檔:https://gitee.com/cicadasmile/butte-java-note
應(yīng)用倉(cāng)庫(kù):https://gitee.com/cicadasmile/butte-flyer-parent