基於Aerospike的使用者資料管理系統實踐

2021-07-08 19:23:16 字數 1478 閱讀 6501

2015-05-12

freewheel

‍ 在網際網路廣告行業中,根據使用者的資訊和購買興趣進行精準廣告投放已成為乙個基本需求。為了滿足這一需求,需要搭建乙個支援高併發、低延遲、可擴充套件的使用者資料庫,這是很多實時廣告系統面臨的乙個技術挑戰。

freewheel的使用者資料庫目前儲存著6億多條使用者資料,每天更新的資料約1億條,要求達到10ms量級的使用者資料讀取效能。我們在使用者資料庫的架構設計上做過很多嘗試和改進,本文介紹了我們最近基於aerospike的一些實踐。

如上圖所示,aerospike主要分為3層:

client layer,distribution layer 和 data storage layer

freewheel使用者資料庫一方面要維護大量的使用者資料,並根據使用者資料實時投放廣告,另一方面每天還有大量使用者資料更新並實時地同步到所有資料中心,所以我們對使用者資料庫的響應速度、穩定性和可擴充套件性都有極高的要求。經過對不同資料庫的調研和效能評估,aerospike不僅在效能上最優,而且能夠方便地動態擴充套件,因此我們最終選擇了aerospike作為儲存使用者資訊的資料庫,並根據我們的業務需求對 aerospike的功能進行了以下定製:

由於我們需要實時同步大量使用者資料到所有的資料中心,基於aerospike xdr的功能,我們建立了如下資料流的拓撲圖,減少不同資料中心的依賴:

切換到aerospike後,我們的廣告投放系統不僅在響應速度上有很大的提公升,而且跨資料中心同步平均延遲控制在毫秒級,基本到達實時更新的需求。下圖是切換到aerospike前後響應時間大於100ms的廣告決策數量變化。

作者簡介:

王敏,2023年畢業於北京大學計算機系,獲工學碩士學位,2023年加入freehweel,現任廣告**組資深工程師,主要負責使用者資料管理系統的架構設計和開發工作。****:[email protected]

王敏說:

aerospike的乙個問題,tcp connection會比較多,以及如果xdr的話都是by record,可能會很多小包(根據你的存的內容)

然後xdr的效能也是有點瓶頸,普通的read/write performance倒是沒有問題

普通的read/write performance的瓶頸更容易在頻寬上

另外開始建立好namespace,加新namespace好費勁

對於記憶體、磁碟的使用量建議不要超過60%

併發使用者數的理解

什麼是併發使用者數,很多人都會拿這個指標來衡量乙個網路系統的好與壞,剛開始接觸loadrunner的時候,曾認為虛擬使用者就是所謂的併發使用者數,不過經過一系列的測試後,發現這種看法並不怎麼全是正確。首先,要分兩種測試情況,第一種是通過跑網頁實際業務測試,如教務系統,觀察其登陸事務,查詢事務等,第二...

併發使用者數和QPS

關於併發使用者數和qps,自己一直被這兩個概念糾結,閱讀了一下相關資料,總結如下 併發 使用者數和qps兩個概念沒有直接關係,但是如果要說qps時,一定需要指明是多少併發使用者數下的qps,否則豪無意義,因為單使用者數的40qps和20並 發使用者數下的40qps是兩個不同的概念。前者說明該應用可以...

匯入匯出使用者資料

首先在要匯入資料的資料庫中建立乙個與原資料庫中使用者名稱相同的使用者,在匯出資料前確定要匯出使用者的各個資料表中資料不為空。新建使用者後要授予其connect,resource權利,運用sys登入資料庫,授權 如下 sqlplus sys passwd test as sysdba sql gran...