精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

幾萬條群離線消息,如何高效拉取?

開發 架構
關于寫擴散、讀擴散的問題,之前專門撰文寫過,今天重點說說設計的思考過程。

繼續回答星球提問:

  • 群離線消息是推還是拉?
  • 幾萬條群離線消息,怎么保證不丟失?

畫外音:歡迎大家加入星球提問(免費)。

群離線消息,是推還是拉?

關于寫擴散、讀擴散的問題,之前專門撰文寫過,今天重點說說設計的思考過程。

假如群離線是推,流程應該如何?會遇到什么問題?

先看看群離線消息的核心數據結構。

群成員表:

t_group_users(group_id, user_id)

畫外音:用來描述一個群里有多少成員。

群離線消息表:

t_offine_msgs(user_id, group_id, sender_id,time, msg_id, msg_detail)

畫外音:用來描述一個群成員的離線消息。

推,寫擴散,存儲群離線消息的過程如何?

  • 先從群成員表中,獲取群里有多少個用戶;
  • 從某個服務中,獲取這些用戶有多少個不在線;
  • 將群消息,插入到這些用戶的群離線消息表;

畫外音:如果要支持消息漫游,則可以省略步驟二。

此時,用戶拉取離線消息的過程如何?

  • 用戶登錄,向server拉取離線消息;
  • server返回并刪除離線消息;

離線消息推,存在什么問題?

對于同一份群消息的內容,多個離線用戶要存儲很多份。假設群中有200個用戶離線,離線消息則冗余了200份,這極大的增加了數據庫的存儲壓力。

如何優化,減少消息冗余量?

為了減少離線消息的冗余度,增加一個群消息表,用來存儲所有群消息的內容,離線消息表只存儲用戶的群離線消息msg_id,就能大大的降低數據庫的冗余存儲量。

群消息表:

t_group_msgs(group_id, sender_id, time, msg_id, msg_detail)

畫外音:用來存儲一個群中所有的消息內容。

群離線消息表,需要進行優化:

t_offine_msgs(user_id, group_id, msg_id)

畫外音:優化后只存儲msg_id。

這樣優化后,群消息的發送和存儲要做一些升級:

  • 每次發送群消息之前,先存儲群消息的內容;
  • 每次存儲離線消息時,只存儲msg_id,而不用為每個用戶存儲msg_detail;

相應的,拉取離線消息也要做對應的升級:

  • 先拉取所有的離線消息msg_id;
  • 再根據msg_id拉取msg_detail;
  • 刪除時,只刪除自己的離線msg_id,而不刪除msg_detail;

畫外音:畢竟msg_detail只存儲了一份,不能隨便刪。

上述過程,能保證離線消息的可達性么?

不能。

例如:server返回客戶端離線消息之后,刪除了離線消息,但客戶端沒有展現就崩潰了,離線消息就會丟失。

如何解決離線消息可達性呢?

很容易想到,通過ACK機制,server返回離線消息之后,不能立刻刪除離線消息,而必須等客戶端ACK,才能刪除。

此時,離線消息拉取升級為:

  • 用戶登錄,向server拉取離線消息;
  • server返回離線消息;
  • 客戶端確認收到了離線消息;
  • server再刪除離線消息;

畫外音:增加了3和4兩個步驟。

還有一個問題,一次有幾十個群,每個群有幾千條離線消息,共計幾萬條群離線消息,消息量過大怎么辦?

當然不能一次性拉取,可以:

  • 分群拉取;
  • 每個群分頁拉取;
  • 拉取一頁,刪除一頁,拉取下一頁,刪除下一頁...

如果拉取了消息,卻沒來得及應用層ACK,會收到重復的消息么?

可以在客戶端去重,對于重復的msg_id,對用戶不展現,從而不影響用戶體驗。

如上所示,簡單總結就是:

  • 群消息表存儲消息實體msg_detail;
  • 群離線消息表,存每個用戶的msg_id;
  • 分頁拉取+應用層ACK,既保證性能,又保證消息可達性;
  • 客戶端msg_id去重,保證用戶體驗;

上面講的都是“推”模式,群離線消息的設計,真正線上應用較多的,是“拉”模式。

推模式,存在什么問題?

對于離線的每一條消息,雖然只存儲了msg_id,但是每個用戶的每一條離線消息都將在數據庫中保存一條記錄,有沒有辦法減少離線消息的記錄數呢?

對于一個群用戶,在ta登出后的離線期間內,肯定是所有的群消息都沒有收到的,完全不用對所有的每一條離線消息存儲一個離線msg_id,而只需要存儲最近一條拉取到的離線消息的time(或者msg_id),下次登錄時拉取在那之后的所有群消息即可,而完全沒有必要存儲每個人未拉取到的全部離線消息msg_id。

拉模式,需要對數據結構進行怎樣的升級?

群成員表,增加一個屬性:

t_group_users(group_id, user_id, last_ack_msg_id)

畫外音:用來描述一個群里有多少成員,以及每個成員最后一條ack的群消息的msg_id(或者time)。

群消息表,不變:

t_group_msgs(group_id, sender_id, time, msg_id, msg_detail)

畫外音:還是用來存儲一個群中所有的消息內容。

群離線消息表:不再需要。

使用拉模式后,群消息的發送和存儲也要升級:

  • 在消息msg_detail存儲到群消息表后,不再需要操作離線消息表(之前需要將msg_id插入離線消息表);
  • 用戶收到消息,應用層ACK后,將last_ack_msg_id更新(之前需要將msg_id從離線消息表刪除);

群離線消息的拉取流程也類似:

  • 分頁拉取離線消息;
  • ACK離線消息;
  • 更新last_ack_msg_id;

總結

  • 群消息還是非常有意思的,做個簡單總結:
  • 群離線消息一般采用拉取模式,只存一份,不需要為每個用戶存儲離線群msg_id,只需存儲一個最近ack的群消息id/time;
  • 為了保證消息可達性,在線消息和離線消息都需要ACK;
  • 離線消息過多,可以分群拉取、分頁拉取等優化;

畫外音:還可按需拉取,登錄不拉取,點進群再拉取。

  • 如果收到重復消息,需要msg_id去重,讓用戶無感知;

群離線消息架構架構設計要點,你學廢了嗎?

知其然,知其所以然。

思路比結論更重要。

責任編輯:趙寧寧 來源: 架構師之路
相關推薦

2019-08-21 07:44:32

離線消息拉取開發

2013-05-16 10:15:11

信息泄密彭博Bloomberg

2018-10-11 09:33:51

Kafka消息處理

2015-09-21 11:06:48

2018-09-13 09:39:03

騰訊運維IT

2022-04-12 16:39:55

數據泄露網絡攻擊

2024-11-04 09:41:47

2018-07-25 13:47:51

彭于晏邪不壓正Python

2013-10-25 09:22:14

2022-06-20 08:01:56

Kafka服務器數據量

2014-01-21 17:36:58

2021-01-08 08:22:17

消息數據結構開發

2025-07-02 09:15:06

2010-01-12 12:20:42

2025-03-07 11:17:09

2025-09-01 01:45:00

數據虛擬列表

2010-07-27 16:10:22

2015-07-07 10:55:05

個人信息個人信息安全信息安全

2024-04-22 00:00:01

Redis集群

2019-07-16 08:51:03

熱搜新浪微博數據
點贊
收藏

51CTO技術棧公眾號

51精品视频一区二区三区| 久久久亚洲综合| 欧美激情综合亚洲一二区| 国产 xxxx| 久久69成人| 一区二区三区免费网站| 日韩视频中午一区| 亚洲精品9999| www.久久成人| 日精品一区二区三区| 久久亚洲精品网站| 亚洲久久久久久| 日韩黄色碟片| 精品欧美激情精品一区| 一区二区三区四区欧美| 日韩一区二区三区不卡| 亚洲一级淫片| 日韩精品一二三四区| 黄色一级在线视频| 在线免费观看黄| 成人高清免费观看| 国产人妖伪娘一区91| 日本少妇久久久| 国产精品视屏| 制服丝袜av成人在线看| 激情五月开心婷婷| 成人在线高清免费| 亚洲三级在线看| 欧洲一区二区在线| 亚洲av成人无码网天堂| 国产成人一级电影| 国产精品自拍小视频| 日本a级c片免费看三区| 亚洲第一黄网| 欧美日韩国产成人在线| 91ts人妖另类精品系列| 精品一区二区三区的国产在线观看| 免费在线午夜视频| 美女国产精品| 欧美最猛性xxxxx(亚洲精品)| 日韩欧美中文字幕视频| 99精品视频精品精品视频| 亚洲视频日韩精品| 91av在线免费| 黄色欧美在线| 婷婷国产v国产偷v亚洲高清| 国产日韩欧美大片| av色图一区| 国产色综合一区| 成人免费在线视频网址| 一区二区乱子伦在线播放| 久久99伊人| 欧美在线视频观看| 日韩精品在线不卡| 亚洲福利专区| 97国产精品久久| 国产午夜视频在线| 亚洲成人原创| 2019亚洲男人天堂| 五月婷婷亚洲综合| 毛片一区二区| 国产精品久久中文| 这里只有精品999| 美国av一区二区| 成人免费淫片视频软件| 99国产在线播放| 国产成人精品一区二区三区四区 | 日本在线一区二区| 91精品国产免费| 色诱av手机版| 欧美偷窥清纯综合图区| 精品视频在线观看日韩| 亚洲图片另类小说| 成人毛片免费看| 精品国产视频在线| 国产亚洲成人av| 久久成人在线| 成人午夜激情免费视频| 亚洲国产一二三区| 久久久久久久电影| 夜夜爽99久久国产综合精品女不卡 | 永久免费成人代码| 精品久久成人| 国产美女精品在线| 久久av在线看| 国产精品成人av久久| 欧美精品国产| 欧美又大又粗又长| 中文字幕777| 国产精一区二区三区| 欧美国产极速在线| 夫妇露脸对白88av| 一个色综合网| 欧美在线日韩在线| 国产三级视频在线播放| 97精品视频在线观看自产线路二| 色姑娘综合网| 国产三线在线| 欧美日韩视频专区在线播放| 欧美成人xxxxx| 欧美午夜三级| 精品久久久久99| 日韩视频在线观看免费视频| 欧美日本国产| 国产精品视频久| 姝姝窝人体www聚色窝| 26uuu久久天堂性欧美| 福利网在线观看| 在线高清av| 91精品国产麻豆国产自产在线| 亚洲一区二区三区无码久久| 99久久精品费精品国产风间由美| 91成人在线视频| 久久午夜鲁丝片午夜精品| 天堂午夜影视日韩欧美一区二区| 91精品国产高清自在线看超| 一本一道精品欧美中文字幕| 91视频免费观看| 国产成人亚洲综合无码| 免费日韩成人| 亚洲人成77777在线观看网| 免费网站看av| 狠狠v欧美v日韩v亚洲ⅴ| 欧美黑人3p| 国产在线精彩视频| 日韩精品中文字幕一区| 国产wwwwxxxx| 久久亚洲影院| 麻豆91av| 绿色成人影院| 亚洲国产成人久久综合| 欧美激情国产精品免费| 国产自产v一区二区三区c| 日韩三级电影| 性欧美1819sex性高清| 亚洲高清一区二| 久久亚洲国产成人精品性色| 国产精品一区三区| 亚洲第一导航| 日本成人福利| 伊人久久久久久久久久久久久| 国产三级av片| www激情久久| 国产精品免费入口| 美国十次av导航亚洲入口| 九九久久精品一区| 国产高中女学生第一次| 亚洲视频在线一区观看| 国产一级免费大片| 国语一区二区三区| 久久99精品视频一区97| 国产免费叼嘿网站免费| 日韩久久一区二区| 182午夜视频| 艳女tv在线观看国产一区| 成人网在线视频| 最新av在线播放| 日韩一区二区三区在线视频| 91精品国产高清一区二区三蜜臀| 国产米奇在线777精品观看| 大桥未久一区二区三区| 国产精品日韩精品在线播放 | 永久av免费网站| 国产麻豆成人传媒免费观看| 国产青草视频在线观看| 九九热hot精品视频在线播放| 97久久国产精品| 日本不卡视频一区二区| 欧洲av在线精品| 性生交大片免费全黄| 国产一区二区三区久久久| 99热都是精品| 超碰一区二区三区| 2019中文字幕在线| 99re热久久这里只有精品34| 欧美高清激情brazzers| 久久国产露脸精品国产| 99久久精品国产网站| 日本男人操女人| 香蕉av一区二区| 国产手机精品在线| 精品日本视频| 欧美成人高清视频| 亚洲AV成人无码一二三区在线| 在线亚洲人成电影网站色www| 强制高潮抽搐sm调教高h| 丁香亚洲综合激情啪啪综合| 欧美日韩亚洲第一| 一区二区三区网站| 久久久久久草| 黄网在线免费看| 亚洲美女在线视频| 国产精品无码免费播放| 亚洲h在线观看| 一本色道久久88| 99在线精品免费| 亚洲怡红院在线| 午夜在线视频一区二区区别| 国产精品免费观看高清| 欧美片第一页| 精品自在线视频| 成人午夜在线观看视频| 精品盗摄一区二区三区| 一级黄色大片网站| 精品女同一区二区三区在线播放 | 日本精品专区| 日韩视频一区二区在线观看| 无码人妻丰满熟妇区bbbbxxxx| 亚洲女子a中天字幕| 国产精品久久免费观看| av亚洲精华国产精华精| 91网址在线观看精品| 久久午夜影视| 毛片在线视频播放| 欧美激情1区| 亚洲精品9999| 精品99久久| 久久精品午夜一区二区福利| 亚洲精品v亚洲精品v日韩精品| 国产精品成人v| 久草在线资源福利站| 久久久久成人网| 99视频免费在线观看| 中文字幕在线视频日韩| 毛片在线能看| 亚洲美女动态图120秒| 欧美 日韩 国产 成人 在线| 日韩一区二区免费在线电影 | 欧美成人影院| 97国产精品视频人人做人人爱| 18videosex性欧美麻豆| 久久九九国产精品怡红院| 最新国产在线观看| 在线观看国产欧美| 黄色电影免费在线看| 亚洲免费电影一区| 亚洲色偷精品一区二区三区| 亚洲国产成人爱av在线播放| 欧美 日韩 综合| 欧美成人乱码一区二区三区| 午夜精品久久久久久久99| 欧美一区二区精品在线| 99草在线视频| 日韩欧美成人一区| 亚洲av无码专区在线| 欧美xingq一区二区| 性中国xxx极品hd| 欧美成人a∨高清免费观看| 性欧美8khd高清极品| 欧美第一区第二区| xxxx国产精品| 日韩不卡在线观看| 亚洲欧美日韩动漫| 亚洲视频在线看| wwwww在线观看免费视频| 在线日韩中文字幕| 日本视频在线观看| 欧美猛少妇色xxxxx| 久久不射影院| 奇米成人av国产一区二区三区| 日韩av中字| 国产精品欧美一区二区| 亚洲成人精品综合在线| 亚洲在线视频福利| 大陆精大陆国产国语精品| 国产日韩一区二区三区| 午夜先锋成人动漫在线| 日本在线观看不卡| 日韩精品一区二区三区免费观影 | 亚洲美女炮图| 国产精品久久精品| 日韩精品视频一区二区三区| 国产伦理久久久| 欧美一区电影| 中文精品无码中文字幕无码专区| 日韩天堂av| 我要看一级黄色大片| 国产精品自产自拍| 波多野结衣先锋影音| 国产免费观看久久| 成熟妇人a片免费看网站| 91视视频在线观看入口直接观看www | 鲁丝一区鲁丝二区鲁丝三区| 精品国产一区二区三区| 一区二区免费在线视频| 国产精品久久| 一区二区三区视频在线播放| 午夜精品国产| 黄色一级大片在线观看| 韩国女主播成人在线| 日韩无码精品一区二区| 国产欧美综合在线观看第十页| 可以直接看的黄色网址| 色综合天天做天天爱| 99久久久久久久| 亚洲久久久久久久久久久| 黄色网址免费在线观看| 日本aⅴ大伊香蕉精品视频| 高清一区二区| 日韩国产欧美一区| 影音先锋中文字幕一区二区| 第四色婷婷基地| 99精品热视频| 中日韩一级黄色片| 日韩欧美中文在线| 精品人妻一区二区三区换脸明星| 亚洲午夜未删减在线观看| 欧美中文在线| 美女视频黄免费的亚洲男人天堂| 欧美日韩免费看片| 国产成人精品日本亚洲11| 日韩欧美伦理| 99久久激情视频| 99热99精品| 久久99久久98精品免观看软件| 欧美日韩一区二区三区免费看| 亚洲av成人精品日韩在线播放| 欧美国产极速在线| 9999在线精品视频| 天堂资源在线亚洲视频| 国产精品久久久一区二区| av在线天堂网| 亚洲欧美福利一区二区| 亚洲一区二区影视| 一区二区成人精品| 欧美黑人疯狂性受xxxxx野外| 国产另类自拍| 雨宫琴音一区二区在线| 波多野结衣中文字幕在线播放| 国产精品欧美经典| 九九热最新视频| 亚洲男人第一网站| 性感女国产在线| 久久久久久草| 另类图片国产| 波多野结衣办公室33分钟| 天天亚洲美女在线视频| 天堂av在线免费| 亚洲**2019国产| 欧美18xxxx| 日本日本19xxxⅹhd乱影响| www.日本不卡| 国产 日韩 欧美 在线| 亚洲精品国产精品乱码不99按摩| av在线理伦电影| 国产精品91久久| 久久99国产精品视频| 久久久久久久激情| 久久久精品免费观看| 亚洲无码精品一区二区三区| 亚洲日韩欧美视频一区| 欧美黄色三级| 中文字幕一区二区三区最新| 精品写真视频在线观看| √天堂中文官网8在线| 日韩欧美国产麻豆| 2020av在线| 欧美日韩最好看的视频| 日韩不卡免费视频| 看黄色录像一级片| 日韩欧美色综合| 国产高清自产拍av在线| 麻豆精品传媒视频| 日本不卡高清视频| 国产一级黄色录像| 五月婷婷久久综合| 美丽的姑娘在线观看免费动漫| 国产精品成久久久久三级| 91综合在线| 蜜臀av粉嫩av懂色av| 在线亚洲免费视频| 国产网站在线免费观看| 国产精品免费一区二区三区四区| 久久精品人人| 糖心vlog免费在线观看 | 日av在线播放| 国产日韩精品在线观看| 欧美日本在线| 久操视频免费看| 9191久久久久久久久久久| 激情在线视频播放| 日韩电影大全在线观看| 国产一区二区不卡老阿姨| 1级黄色大片儿| 中文字幕亚洲字幕| 波多野结衣欧美| 91小视频网站| 婷婷综合另类小说色区| √新版天堂资源在线资源| 国产伦精品一区二区三区在线 | 俄罗斯精品一区二区| 久久国产欧美| 免费无遮挡无码永久在线观看视频 | 亚洲专区**| 黄色高清无遮挡| 亚洲精品欧美综合四区| 邻居大乳一区二区三区| 91久久久精品| 日日摸夜夜添夜夜添精品视频| 免费麻豆国产一区二区三区四区|