1. 程式人生 > >解密阿裏雲Redis助力雙十一背後的技術

解密阿裏雲Redis助力雙十一背後的技術

階段 版本 排序。 向上 同時 阿裏集團 tar 表達 bsp

摘要: Redis是一個使用範圍很廣的NOSQL數據庫,阿裏雲Redis同時在公有雲和阿裏集團內部進行服務,本文介紹了阿裏雲Redis雙11的一些業務場景:微淘社區之億級關系鏈存儲、天貓直播之評論商品遊標分頁和菜鳥單據履行中心之訂單排序。

雙11如火如荼的結束了,阿裏雲Redis(ApsaraDB for Redis原KVStore)也圓滿完成了雙11Redis的保障工作。目前阿裏雲Redis提供了單機版本和集群版本的Redis。

  • 單機版本Redis具有很高的兼容性,並且支持Lua腳本及地理位置計算。
  • 集群版本具有大容量、高性能的特性,能夠突破Redis單線程的單機性能極限。

阿裏雲Redis默認雙機熱備並提供了備份恢復支持,同時阿裏雲Redis源碼團隊持續對Redis進行優化升級,提供了強大的安全防護能力。本文將選取雙11的一些業務場景簡化之後進行介紹,實際業務場景會比本文復雜。

微淘社區之億級關系鏈存儲

微淘社區承載了億級淘寶用戶的社交關系鏈,對於每個用戶都有自己的關註列表,每個商家有自己的粉絲信息,整個微淘社區承載的關系鏈如下圖所示。

技術分享

如果選用傳統的關系型數據庫模型表達如上的關系信息,會使業務設計繁雜,並且不能獲得良好的性能體驗。微淘社區使用Redis集群緩存了存儲社區的關註鏈,簡化了關註信息的存儲,並保證了雙11業務絲滑一般的體驗。微淘社區使用了Hashes存儲用戶之間的關註信息,存儲結構如下,並提供了以下兩種的查詢接口:

  • 用戶A 是否和 用戶B產生過關註關系;
  • 用戶A的主動關系列表;

技術分享

天貓直播之評論商品遊標分頁

雙11用戶在觀看無線端直播的時候,需要對直播對應的評論進行刷新動作,主要有以下三種模式:

  • 增量下拉。 也即是從指定位置向上獲取指定個數(增量)的評論。
  • 下拉刷新。 也即是獲取最新的指定個數的評論。
  • 增量上拉。 也即是從指定位置向下獲取指定個數(增量)的評論。

無線直播系統使用Redis優化該場景的業務,保證了直播評論接口的成功率,並能夠保證5w+以上的tps和毫秒級的rt請求。直播系統對於每個直播會寫入兩份數據,分別為索引和評論數據,索引數據為SortedSet的數據結構用於對評論的排序,而評論數據使用Hashes進行存儲,在獲取評論的時候通過索引拿到需要的索引id之後通過Hashes的讀取來獲得評論的列表。評論的寫入過程如下:
技術分享
用戶在刷新列表之後後臺需要獲取對應的評論信息,獲取的流程如下:

  • 獲取當前索引位置
  • 獲取索引列表
  • 獲取評論數據

技術分享

菜鳥單據履行中心之訂單排序

雙11用戶在產生一個交易訂單之後會隨之產生一個物流訂單。經過菜鳥倉配系統處理的訂單,為了讓倉配各個階段能夠更加智能的協同作業,決策系統會根據訂單信息指定出對應的訂單履行計劃,包括什麽時候下發倉、什麽時候出庫、什麽時候配送攬收、什麽 時候送達等信息,單據履行中心根據履行計劃,對每個階段按照對應的時間去履行物流服務。由於倉、配的運力有限,對於有限的運力下,期望最早作業的單據是業務認為優先級最高的單據,所以訂單在真正下發給倉或者配之前,需要按照優先級進行排序。
技術分享
訂單履行中心通過使用Redis來對所有的物流訂單進行排序決定哪個訂單是最高優先級的。

結束

Redis是一個優秀的開源數據庫,提供了開發者更便利的數據模型,阿裏雲Redis致力於提供穩定、高性能的Redis服務,歡迎廣大開發者使用阿裏雲Redis服務。

解密阿裏雲Redis助力雙十一背後的技術