根據whois資料查詢業務場景、響應效能等需求,該庫採用hbase + es 技術組合設計,其中hbase儲存全量whois資料,es庫作為查詢索引庫,只儲存查詢whois資料時的索引項資料。當提交一條查詢請求時,首先從es庫中利用索引檢索出記錄的唯一鍵【_id】,再使用該唯一鍵從hbase中查詢出全量資料。
hbase庫配置:同pdns庫設計中hbase配置。
es庫配置:7伺服器集群【與hbase共用硬體伺服器】,jdk版本1.8,單節點jvm堆記憶體固定為12g。
2.1.1 業務字典
whois業務字典見《whois資料說明.pdf》文件。
whois原始資料為.csv格式,第三方資料樣例檔案見whoisdemo.csv檔案
2.1.2 資料規模
whois第三方資料以csv文字檔案格式儲存,經粗略統計,全量資料大小約180g,索引資料大小約80g,包含whois記錄約3億4千萬。
whois資料查詢需求簡單描述為,根據約定的可查詢業務欄位項進行查詢,查詢時可根據多條件項進行邏輯匹配,需要支援等值匹配、模糊查詢。無聚合查詢、分組查詢等複雜查詢需求。
2.2.1 根據約定業務字段查詢
查詢輸入:
查詢輸出:全量whois記錄,具體欄位見《whois資料說明.pdf》
若查詢項不能滿足需求,後續可從全量資料中增加。
2.3.1 whois_data_index索引表設計
es中的索引資料表名為: whois_data_index。
id的格式為 : _
表示網域名稱;
表示註冊時間,格式為13位時間戳;
表示過期時間,格式為13位時間戳,且該字段不存在與es查詢欄位中,該字段為whois全量資料中的記錄,需要在匯入es庫時,寫入_id。
建表指令碼為:
put whois_data_index,:
,"domain_status":,
"registrar":,
"reg_email":,
"registrar_whois_server":,
"name_server":,
"reg_data":,
"registrar_abuse_contact_email":,
"reg_name":,
"registrant_organization":,
"registrant_city":,
"registrant_state_province":,
"reg_country":,
"registrar_iana_id":}}}}
2.3.2 whois表設計2.3.3關於資料匯入對於es索引庫,需要開發匯入程式將第三方原始whois中索引資料匯入。
對於hbase庫,需要開發匯入程式將第三方原始whois匯入,在匯入資料時,需要將對應列的資料填充到列族中。
2.4.1 es rest api
利用postman工具,簡單列舉幾種典型查詢場景。
輸出:
輸出:
2.4.2 hbase rest api
hbase表名為whois, rest api同1.5.2
海量積分資料實時排名處理方式介紹一
查詢使用者名次。查詢topn 即查詢前n名的使用者 實時排名 很多專案是可選的 當排序的資料量不大的時候,這個需求很容易滿足,但是如果資料量很大的時候比如百萬級 千萬級甚至上億的時候,或者有實時排名需求 這個時候要滿足效能 低成本等需求,在設計上就變得複雜起來了。這裡列舉下日常對於排名的常規做法和缺...
使用Bmob SDK實時資料功能的一次經歷
需求 使用bmob ios sdk中的資料實時功能 完成以下功能 使用者可以隨意發布帖子 這個使用者的關注者可以立即接收到這個發布的帖子資訊。其中第乙個需求是很容易實現的,關鍵是第二個需求,需要用到資料實時功能去監聽當前登入使用者關注的作者是否傳送新帖子。解決方案 接到這個需求,很容易就想到以下方案...
使用mock資料實現登入時的一次bug記錄
這次的專案是從github拉取下來的,通過閱讀readme檔案,使用提供的賬號和密碼登入時出現一些問題 一 請求超時 登入時一直報請求超時,通過修改timeout時間發現問題 請求超時時間加長後使用谷歌的開發者工具,開啟network觀察介面的請求狀態,請求還是不成功 二 介面請求出錯 在api的l...