目前主流廠商的推送系統都支援別名推送、使用者分群推送、標籤推送。其中有個難點是如何從億級裝置中檢索出特殊標籤的使用者實現高效的推送,如何實現每分鐘千萬推送訊息,全推秒級到達,億級大規模推送任務分鐘級別推送完成將是乙個很大的挑戰,最簡單的做法就是使用mysql 的 where 字句的檢索方案,但是這種方法對 mysql 的壓力非常大,而且查詢速度非常慢,這裡介紹在實踐過程中使用到的分布式的標籤檢索方案。
rbm 的主要思想並不複雜,簡單來講,有如下三條:
bitmap container 存放稠密的資料。即,若乙個 container 裡面的 integer 數量小於 4096,就用 short 型別的有序陣列來儲存值。
若大於 4096,就用 bitmap 來儲存值。
一致性雜湊演算法在2023年由麻省理工學院提出的一種分布式雜湊(dht)實現演算法,設計目標是為了解決網際網路中的熱點(hot spot)問題,初衷和carp十分類似。一致性雜湊修正了carp使用的簡 單雜湊演算法帶來的問題,使得分布式雜湊(dht)可以在p2p環境中真正得到應用。 一致性hash演算法提出了在動態變化的cache環境中,判定雜湊演算法好壞的四個定義:
具體演算法實現,這裡就不再贅敘。
接下來分為三步來介紹基於標籤的檢索系統
首先做乙個對映
deviceid 為裝置 id,唯一標識一台裝置,在系統中唯一對映為乙個uint32 guid
tag 為標籤,每個使用者會被打上不同的標籤,比如杭州、男性等,乙個 tag 對應 guid 的乙個集合
同時每個 tag 對應乙個 raoring bitmap,記錄 guid 資訊
構建總長度為 2^32 的 bitmap,分成 2^16 個分割槽,每個分割槽長度 2^16,支援裝置數量 40億+
guid 高 16 位確認分割槽,低 16 儲存為 roaring bitmap
tag 標籤,可以分為平台、版本、通道、地域、性別等,比如 android/ios/xiaomi/east 等
如果需要推送 android 和小公尺通道的使用者,只需要對 android tag 和 小公尺 tag 的 roaring bitmap 做與操作,就可以檢索出來對應的 guid 的集合。
從上面的資料可以看出,即使 10億的裝置,占用的空間也就不到 1g
roaring bitmap 檢索效能非常高
上面幾點介紹了 tag bitmap 系統檢索系統的高效性,接下來介紹一下如何實現高效的分布式分發
guid 高 16 位做一致性 hash,快取到對應 的push-logic 節點
tag bitmap 下發時,bitmap 分割槽做一致性 hash,下發到對應的push-logic 節點
bitmap 分布式 cache 到 push-logic節點
裝置在註冊時,根據 guid 做一致性 hash,更新 push-logic 裡面的快取
通過 tag bitmap 系統,可以實現高效的基於標籤的檢索系統,實現秒級千萬推送訊息,億級大規模推送任務分鐘級別推送。
如何找到乙個usb裝置的具體驅動
9 6 2009 9 22 43 pm 1.在ubuntu中插入了乙個pc camera,通過lsusb可以找到具體的裝置型別 bus 001 device 002 id 0ac8 301b z star microelectronics corp.zc0301 webcam 2.udevadm i...
iOS裝置中的推送 二 證書
推送中的證書 在推送過程中,證書是比不可少的,我們所用的第三方一般都會需要上傳證書。如上圖為,在極光控制台建立乙個軟體後,上傳證書後的情況,包括生產環境和開發環境的證書。證書上傳後,我們在手機端做好相應的設定之後就可以在控制台傳送訊息進行測試。當兩個證書都上傳成功後 控制台的這兩個圖示都可以選擇,注...
iOS裝置中的推送 二 證書
推送中的證書 在推送過程中,證書是比不可少的,我們所用的第三方一般都會需要上傳證書。如上圖為,在極光控制台建立乙個軟體後,上傳證書後的情況,包括生產環境和開發環境的證書。證書上傳後,我們在手機端做好相應的設定之後就可以在控制台傳送訊息進行測試。當兩個證書都上傳成功後 控制台的這兩個圖示都可以選擇,注...