自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

領(lǐng)域化、中臺化和多Region化,攜程賬號系統(tǒng)演進之路

開發(fā)
賬號系統(tǒng)從最開始的巨大單體應(yīng)用中剝離出來,經(jīng)歷了若干年的演進,變成了現(xiàn)在支持多Region部署的賬號中臺,這是業(yè)務(wù)發(fā)展和互聯(lián)網(wǎng)技術(shù)進步的一種體現(xiàn)和必然趨勢。

作者簡介

Scai,攜程高級研發(fā)經(jīng)理,多年深耕于賬號中臺,持續(xù)推進中臺的技術(shù)架構(gòu)演進及性能優(yōu)化。

一、前言

在互聯(lián)網(wǎng)早期時代,賬號系統(tǒng)的功能非常廣泛,包括賬號管理、登錄認證相關(guān)能力以及維護各類用戶信息,比如頭像、昵稱、積分、等級等。隨著業(yè)務(wù)的發(fā)展,每個功能逐漸分化出自己的需求和架構(gòu)側(cè)重點,獨立出各自的領(lǐng)域服務(wù)也成了業(yè)界共識。

本文分享的賬號系統(tǒng),指的是提供用戶賬號管理、登錄認證相關(guān)能力的系統(tǒng)。介紹了攜程在不斷發(fā)展的過程中,賬號系統(tǒng)在領(lǐng)域化、中臺化和多Region化方向上的演進、探索和一些思考。

二、領(lǐng)域化

微服務(wù)迅猛發(fā)展階段,賬號系統(tǒng)分裂出了很多應(yīng)用。比如,專門支持三方登錄的應(yīng)用,專門保存賬號實名信息的應(yīng)用,針對不同平臺的接入應(yīng)用。一開始確實可以滿足迅速開發(fā)上線的需求,當應(yīng)用裂變到幾十個的時候,應(yīng)用分層不合理,領(lǐng)域邏輯不內(nèi)聚帶來的問題逐漸顯現(xiàn)出來:

1)用戶請求會經(jīng)歷多個應(yīng)用之間的RPC調(diào)用,性能和穩(wěn)定性受影響。

2)操作無法原子性,易出現(xiàn)臟數(shù)據(jù)。

3)應(yīng)用過多,開發(fā)、運維、測試范圍大,影響效率。

領(lǐng)域化是對賬號系統(tǒng)的全面重構(gòu),有以下兩個目標:

1)合理劃分領(lǐng)域,邏輯內(nèi)聚。

2)改造需要對業(yè)務(wù)透明。

2.1 全面梳理,重新劃分領(lǐng)域

圖片圖片

賬號系統(tǒng)功能主要分為3個類型:

1)核心功能:負責管理和維護賬號系統(tǒng)的核心功能和數(shù)據(jù)。由于涉及到用戶的核心數(shù)據(jù),相關(guān)插入、變更接口只可暴露給業(yè)務(wù)BFF層。

賬號領(lǐng)域:包括賬號信息查詢;賬號注冊/注銷;手機、郵箱、三方等數(shù)據(jù)的綁定/解綁;openid的生成;密碼的管理和認證等功能。

登錄態(tài)領(lǐng)域:負責登錄態(tài)生成、驗證、續(xù)期、踢出、過期刪除等功能。

日志監(jiān)控領(lǐng)域:負責記錄賬號相關(guān)業(yè)務(wù)埋點和日志。

2)輔助功能:不僅可以被賬號相關(guān)業(yè)務(wù)依賴,也可以開放出去供類似業(yè)務(wù)場景的接入。

Token(臨時憑證)領(lǐng)域:負責Token的生成、驗證、過期刪除等功能。

驗證碼領(lǐng)域:負責驗證碼生成、發(fā)送、驗證等功能。  

3)接入功能:負責賬號相關(guān)的業(yè)務(wù)功能接入,包括端上接入和內(nèi)網(wǎng)服務(wù)接入。

BFF層:主要負責各類業(yè)務(wù)邏輯的組合(注冊、登錄、改綁手機等)以及接入方權(quán)限的控制。

前端UI、SDK:前端顯示UI以及提供出去供業(yè)務(wù)接入的SDK。直接對接BFF層。

其他一些業(yè)務(wù)中必須依賴的模塊,如風(fēng)控模塊,依賴公司相應(yīng)團隊提供的能力即可。

2.2 讀寫對比,透明改造

賬號系統(tǒng)非常核心,上游是公司的各類業(yè)務(wù),依賴方非常多,牽一發(fā)而動全身。同時,業(yè)務(wù)也在急速發(fā)展,不會停下來等待系統(tǒng)的改造。對賬號系統(tǒng)的改造無疑是在快速開動的汽車上更換輪胎。因此,對賬號系統(tǒng)的改造需要一套完整的比對流程,需要滿足兩個條件:

1)完整性。比對需要覆蓋100%的場景,避免場景遺漏。

2)隔離性。比對需要在離線集群和存儲上進行,避免對在線系統(tǒng)造成影響。同時,需要屏蔽掉離線集群不必要的對外請求,以免對下游造成影響(包括RPC調(diào)用,消息,監(jiān)控數(shù)據(jù)等)。

在此基礎(chǔ)上,完成了賬號系統(tǒng)的讀寫比對流程:

讀對比:轉(zhuǎn)發(fā)-比對。利用鏡像流量的能力,將鏡像流量導(dǎo)入離線Old代碼集群。Old代碼集群在處理流量的同時,會轉(zhuǎn)發(fā)到離線New代碼集群,完成接口返回數(shù)據(jù)比對。

圖片圖片

寫比對:錄制-回放-比對。提前錄制生產(chǎn)環(huán)境的流量,記錄輸入、輸出和發(fā)出的消息等數(shù)據(jù);分別部署New/Old代碼離線集群和兩套相同的離線DB(里面數(shù)據(jù)為同一時間點的Snapshot);將錄制好的流量(DB Snapshot時間點后)回放到兩套集群上,比對輸出、存儲、發(fā)出來的消息等數(shù)據(jù),確保New/Old集群和錄制的結(jié)果三方一致。

圖片圖片

完成了領(lǐng)域化改造后,核心數(shù)據(jù)的變更沉淀到對應(yīng)的領(lǐng)域服務(wù)中,相關(guān)操作可以滿足原子性,避免臟數(shù)據(jù)的產(chǎn)生;應(yīng)用減少以及引入BFF層,減少了應(yīng)用間,用戶端和服務(wù)端的交互次數(shù),提升了系統(tǒng)穩(wěn)定性,提升了開發(fā)、運維、測試的效率。

三、中臺化

和大部分互聯(lián)網(wǎng)公司一樣,隨著集團的發(fā)展,會出現(xiàn)不同的品牌,需要一套獨立的賬號體系。也有業(yè)務(wù)團隊會將自己研發(fā)的賬號系統(tǒng)交給賬號團隊統(tǒng)一管理。如果賬號系統(tǒng)沒有做好中臺化的準備,勢必會在接入的過程中手忙腳亂。不僅代碼中會存在大量的判斷邏輯,接入時間也會很長,甚至可能無法滿足業(yè)務(wù)的需求。中臺化的改造需要考慮以下三點:

1)降低改造復(fù)雜度

減少系統(tǒng)的架構(gòu)改造復(fù)雜度

降低業(yè)務(wù)接入的復(fù)雜度

2)配置化

將需求抽象為功能,減少對業(yè)務(wù)需求的定制化開發(fā)

簡單配置即可快速接入

3)提供多樣化的接入方式,以滿足不同業(yè)務(wù)方的接入需求

3.1 降低改造復(fù)雜度

中臺化改造過程中,賬號體系ID是最核心的概念。

  • 標志著賬號所屬的業(yè)務(wù)體系,相互之間隔離
  • 控制賬號體系的策略和權(quán)限
  • 路由每一個賬號體系對應(yīng)的存儲

因此,對于賬號相關(guān)查詢請求,如果不知道賬號所在的體系ID,就無法找到對應(yīng)的存儲。要么進行全存儲查詢,要么需要一個大表存儲UID到體系ID的映射關(guān)系,這會引入額外的依賴,提高成本的同時,也會使得系統(tǒng)變得復(fù)雜。

另外,要求所有上游新增一個參數(shù)需花費大量的資源推動。

圖片圖片

UID全局唯一,并且通過編碼區(qū)分不同的體系ID,可以大大降低改造和接入的復(fù)雜度。

新接入的賬號體系,通過UID的編碼可以快速判斷賬號體系ID。

對于存量UID,默認屬于最早的賬號體系。

同時,UID全局唯一也可以提高排障和TS時的效率(不用反復(fù)確認某一個UID屬于哪個賬號體系)。

當然,一些不通過UID進行的查詢接口,如通過手機號查詢賬號的場景,還是需要業(yè)務(wù)方傳遞體系ID,但通過這樣的設(shè)計已極大的縮小了需要改造的范圍。

3.2 配置化

賬號中臺化后主要提供以下能力:

1)賬號管理:管理賬號的完整生命周期,包括注冊,驗證,注銷。支持賬號綁定手機號,郵箱,第三方賬號,以及對應(yīng)屬性的變更、解綁操作。管理賬號密碼,支持多種加密邏輯。管理Oauth相關(guān)數(shù)據(jù)。

2)多樣化登錄方式:包括賬號密碼登錄,手機驗證碼登錄,手機一鍵登錄,掃碼登錄,社交賬號登錄等登錄方式。特別的,在社交賬號登錄方式中,賬號系統(tǒng)已完成了與多個平臺的對接,常見的比如微信、支付寶、QQ、微博、華為等。

3)登錄態(tài)管理:包括登錄態(tài)的生成、驗證,登錄態(tài)信息維護,按需續(xù)期、踢出等功能。

4)安全&監(jiān)控體系:賬號中臺具有完善的日志體系,并已完成對接前端滑塊和后端實時風(fēng)控。

在中臺化建設(shè)的過程中,雖然已經(jīng)全量梳理了中臺應(yīng)該提供的能力,仍然會有新的需求需要支持。在接到新的需求,而現(xiàn)有的功能無法支持的時候,不要急于解決本次需求,需要思考本次需求涉及的具體功能,從而在實現(xiàn)的過程中避免定制化邏輯,沉淀為中臺的新能力。

比如,某次需求為:一個賬號體系全平臺需要保證登錄態(tài)是唯一的,即新的登錄產(chǎn)生后,會踢出之前的登錄態(tài)。可以抽象為需要中臺提供對某一個賬號體系的登錄態(tài)數(shù)量進行控制。進一步的,可以按照平臺(App、小程序、H5等)分別進行控制。


圖片圖片

中臺化建設(shè)完成后,不同的功能都可以通過配置進行控制,也可以對每一個功能進行細節(jié)上的調(diào)整。同一體系的配置放置在同一配置文件中,便于維護。如果沒有特別的需求,直接使用默認配置接入即可。

圖片圖片

3.3 多樣化接入方式

為了適應(yīng)業(yè)務(wù)多樣化的接入需求,中臺提供了3種接入方式:

1)UI接入:在攜程的主Web站點、App和小程序,統(tǒng)一使用中臺開發(fā)的前端界面,業(yè)務(wù)方按需拉起。

2)前端SDK接入:有少量定制需求,如顯示的LOGO需要調(diào)整,協(xié)議需要變更等,可以使用中臺的前端SDK接入。此SDK已包含所有的流程邏輯,接入時僅需替換掉對應(yīng)的元素。

3)后端對接:若業(yè)務(wù)方有過多的與業(yè)務(wù)藕合的邏輯,則不適合將邏輯放在中臺。此時,業(yè)務(wù)方可以自行開發(fā)一層BFF,利用中臺BFF層和輔助系統(tǒng)(驗證碼、Token)提供的能力,組合出合適的業(yè)務(wù)邏輯。

中臺化改造完成后,新賬號體系需要申請接入時,僅需選擇需要的能力,中臺通過調(diào)整配置,小時級即可完成接入。大大減少了新增一套賬號體系的支持成本。

四、多Region化

兩地三中心是近期比較熱門的部署方案,一方面可以更好的應(yīng)對城市級別的故障,另一方面可以更好的服務(wù)當?shù)赜脩簦ɡ?,一個產(chǎn)品定位于服務(wù)西部用戶,相應(yīng)的應(yīng)用和數(shù)據(jù)部署在西部城市可以提供更好的用戶體驗)。賬號作為業(yè)務(wù)的基石,需要第一時間完成多Region部署,為各業(yè)務(wù)的部署做好準備。

多Region部署,賬號中臺制定了兩個目標:

1)數(shù)據(jù)支持多Region部署,請求正確路由。結(jié)合業(yè)務(wù)需求,賬號中臺的應(yīng)用和數(shù)據(jù)按需部署到指定的Region中,相應(yīng)的用戶請求需要準確的落到對應(yīng)的Region。

2)架構(gòu)需要同構(gòu)部署,不能因為多Region部署引入開發(fā)和維護上的額外成本。

4.1 用戶識別及請求路由

為了滿足數(shù)據(jù)不同Region部署的需求,需要對用戶數(shù)據(jù)進行識別并打標,利用公司DB數(shù)據(jù)同步組件(DRC)進行帶過濾的雙向同步(有的數(shù)據(jù)僅需要本Region使用,會過濾不進行同步),將數(shù)據(jù)部署到需要的Region上。后續(xù)的更新也由DRC進行同步。

圖片圖片

在數(shù)據(jù)部署完成后,如何保證用戶的請求落到了正確的Region。

方案一:每次請求經(jīng)過網(wǎng)關(guān)的時候,網(wǎng)關(guān)進行一次用戶到Region的映射查詢,再將請求正確的路由到數(shù)據(jù)所在Region。這樣的做法不僅會對請求引入一次額外的查詢,還會使得網(wǎng)關(guān)這一及其關(guān)鍵的節(jié)點引入一個依賴,會影響整個網(wǎng)站的穩(wěn)定性。

方案二:基于用戶的數(shù)據(jù)一定完整的存在某一個Region的前提,在用戶登錄的時候,將之前識別時打上的標識下發(fā)到端上。請求的時候,網(wǎng)關(guān)只需對標識進行簡單的路由配置,即可正確的路由到對應(yīng)的Region。


圖片圖片

4.2 多Region架構(gòu)

在多Region的部署中,賬號中臺實現(xiàn)了同構(gòu)部署。

1)網(wǎng)關(guān)層。利用網(wǎng)關(guān)根據(jù)用戶登錄下發(fā)的標識,將請求路由到正確的Region。

2)內(nèi)網(wǎng)服務(wù)。通過完整的部署,內(nèi)網(wǎng)請求在同一Region內(nèi)完成,實現(xiàn)Region閉環(huán),提高服務(wù)性能。同時也避免了DB多Region寫入引起數(shù)據(jù)沖突的問題。

3)數(shù)據(jù)層。

DB數(shù)據(jù)。DB表結(jié)構(gòu)完全一致,通過DRC根據(jù)用戶標識進行帶過濾的多向復(fù)制。

Redis緩存數(shù)據(jù)。本地使用,不需要同步。當一個Region的數(shù)據(jù)有變更的時候,其他Region接受DRC的同步消息,對本Region的Redis進行刪除。


圖片圖片

在這樣的多Region部署架構(gòu)下,可以根據(jù)業(yè)務(wù)的使用場景和數(shù)據(jù)部署需求,實現(xiàn)用戶數(shù)據(jù)的單Region或多Region存儲。

五、結(jié)語

賬號系統(tǒng)從最開始的巨大單體應(yīng)用中剝離出來,經(jīng)歷了若干年的演進,變成了現(xiàn)在支持多Region部署的賬號中臺,這是業(yè)務(wù)發(fā)展和互聯(lián)網(wǎng)技術(shù)進步的一種體現(xiàn)和必然趨勢。

當然,這種趨勢也不會停止于此,賬號系統(tǒng)的功能和架構(gòu)必將繼續(xù)演進,其他系統(tǒng)也同樣如此?;赝^去,基于現(xiàn)在,展望未來,敢為人先,為各業(yè)務(wù)的發(fā)展打好基石,這正是賬號等基礎(chǔ)系統(tǒng)的意義所在,技術(shù)團隊的價值也存在于此。

責任編輯:張燕妮 來源: 攜程技術(shù)
相關(guān)推薦

2023-01-13 14:35:00

攜程實踐

2022-08-06 08:27:41

Trace系統(tǒng)機票前臺微服務(wù)架構(gòu)

2023-09-15 09:34:54

2024-10-12 09:58:21

2024-03-08 14:43:03

攜程技術(shù)系統(tǒng)

2025-03-18 12:23:25

2023-08-18 10:49:14

開發(fā)攜程

2021-09-16 16:15:14

Linux設(shè)備虛擬化機器模擬器

2023-01-10 07:26:12

監(jiān)控標準化演進

2023-11-13 11:27:58

攜程可視化

2018-09-11 17:40:23

容器數(shù)據(jù)云計算

2018-06-29 13:10:02

阿里巴巴監(jiān)控系統(tǒng)人工智能

2023-03-03 09:42:27

日志數(shù)據(jù)

2021-08-20 11:00:04

Redis攜程數(shù)據(jù)庫

2018-05-02 11:16:27

數(shù)據(jù)中心

2022-10-21 10:40:08

攜程酒店MySQL慢查詢

2018-07-22 14:36:51

網(wǎng)絡(luò)自動化智能化

2021-11-24 08:43:02

扁平化函數(shù)數(shù)組

2023-10-13 09:34:27

算法數(shù)據(jù)

2025-04-03 00:45:12

UP主分銷系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號