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

幾萬條群離線消息,如何高效拉取,會(huì)不會(huì)丟?

開發(fā) 開發(fā)工具
關(guān)于寫擴(kuò)散、讀擴(kuò)散的問題,之前專門撰文寫過,今天不直接同步結(jié)論,重點(diǎn)說說設(shè)計(jì)的思考過程。

 

 

繼續(xù)答球友提問:

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

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

關(guān)于寫擴(kuò)散、讀擴(kuò)散的問題,之前專門撰文寫過,今天不直接同步結(jié)論,重點(diǎn)說說設(shè)計(jì)的思考過程。

畫外音:結(jié)論不如思路重要。

假如群離線是推,流程應(yīng)該如何?會(huì)遇到什么問題?

先看看群離線消息的核心數(shù)據(jù)結(jié)構(gòu)。

群成員表:

  1. t_group_users(group_id, user_id) 

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

群離線消息表:

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

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

推,寫擴(kuò)散,存儲(chǔ)群離線消息的過程如何?

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

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

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

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

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

對(duì)于同一份群消息的內(nèi)容,多個(gè)離線用戶要存儲(chǔ)很多份。假設(shè)群中有200個(gè)用戶離線,離線消息則冗余了200份,這極大的增加了數(shù)據(jù)庫的存儲(chǔ)壓力。

如何優(yōu)化,減少消息冗余量?

為了減少離線消息的冗余度,增加一個(gè)群消息表,用來存儲(chǔ)所有群消息的內(nèi)容,離線消息表只存儲(chǔ)用戶的群離線消息msg_id,就能大大的降低數(shù)據(jù)庫的冗余存儲(chǔ)量。

群消息表:

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

畫外音:用來存儲(chǔ)一個(gè)群中所有的消息內(nèi)容。

群離線消息表,需要進(jìn)行優(yōu)化:

  1. t_offine_msgs(user_id, group_id, msg_id) 

畫外音:優(yōu)化后只存儲(chǔ)msg_id。

這樣優(yōu)化后,群消息的發(fā)送和存儲(chǔ)要做一些升級(jí):

  • 每次發(fā)送群消息之前,先存儲(chǔ)群消息的內(nèi)容;
  • 每次存儲(chǔ)離線消息時(shí),只存儲(chǔ)msg_id,而不用為每個(gè)用戶存儲(chǔ)msg_detail;

相應(yīng)的,拉取離線消息也要做對(duì)應(yīng)的升級(jí):

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

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

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

不能。

例如:server返回客戶端離線消息之后,刪除了離線消息,但客戶端沒有展現(xiàn)就奔潰了,離線消息就會(huì)丟失。

如何解決離線消息可達(dá)性呢?

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

此時(shí),離線消息拉取升級(jí)為:

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

畫外音:增加了3和4兩個(gè)步驟。

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

當(dāng)然不能一次性拉取,可以:

  • 分群拉取;
  • 每個(gè)群分頁拉取;
  • 拉取一頁,刪除一頁,拉取下一頁,刪除下一頁...

如果拉取了消息,卻沒來得及應(yīng)用層ACK,會(huì)收到重復(fù)的消息么?

可以在客戶端去重,對(duì)于重復(fù)的msg_id,對(duì)用戶不展現(xiàn),從而不影響用戶體驗(yàn)。

如上所示,簡(jiǎn)單總結(jié)就是:

  • 群消息表存儲(chǔ)消息實(shí)體msg_detail;
  • 群離線消息表,存每個(gè)用戶的msg_id;
  • 分頁拉取+應(yīng)用層ACK,即保證性能,又保證消息可達(dá)性;
  • 客戶端msg_id去重,保證用戶體驗(yàn);

上面講的都是“推”模式,群離線消息的設(shè)計(jì),真正線上應(yīng)用較多的,是“拉”模式。

推模式,存在什么問題?

對(duì)于離線的每一條消息,雖然只存儲(chǔ)了msg_id,但是每個(gè)用戶的每一條離線消息都將在數(shù)據(jù)庫中保存一條記錄,有沒有辦法減少離線消息的記錄數(shù)呢?

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

拉模式,需要對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行怎樣的升級(jí)?

群成員表,增加一個(gè)屬性:

  1. t_group_users(group_id, user_id, last_ack_msg_id) 

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

群消息表,不變:

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

畫外音:還是用來存儲(chǔ)一個(gè)群中所有的消息內(nèi)容。

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

使用拉模式后,群消息的發(fā)送和存儲(chǔ)也要升級(jí):

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

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

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

總結(jié)

群消息還是非常有意思的,做個(gè)簡(jiǎn)單總結(jié):

  • 群離線消息一般采用拉取模式,只存一份,不需要為每個(gè)用戶存儲(chǔ)離線群msg_id,只需存儲(chǔ)一個(gè)最近ack的群消息id/time;
  • 為了保證消息可達(dá)性,在線消息和離線消息都需要ACK;
  • 離線消息過多,可以分群拉取、分頁拉取等優(yōu)化;

畫外音:還可按需拉取,登錄不拉取,點(diǎn)進(jìn)群再拉取。

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

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2025-11-11 07:10:00

架構(gòu)消息開發(fā)

2020-11-13 07:14:55

Kafka消息中間件

2013-05-16 10:15:11

信息泄密彭博Bloomberg

2018-10-11 09:33:51

Kafka消息處理

2016-11-02 13:12:31

微信離線消息

2025-04-15 09:00:00

2022-04-20 11:41:45

Kafka數(shù)據(jù)解決方案

2015-09-21 11:06:48

2018-09-13 09:39:03

騰訊運(yùn)維IT

2022-04-12 16:39:55

數(shù)據(jù)泄露網(wǎng)絡(luò)攻擊

2024-11-04 09:41:47

2016-11-10 21:00:49

消息存儲(chǔ)數(shù)據(jù)

2025-04-17 09:00:00

架構(gòu)聊消息微信

2024-12-20 07:30:00

2013-08-08 10:34:16

云計(jì)算中間件

2018-07-25 13:47:51

彭于晏邪不壓正Python

2013-10-25 09:22:14

2021-02-07 18:07:28

大數(shù)據(jù)AI人工智能

2009-12-04 10:41:03

臺(tái)式機(jī)消亡

2022-06-20 08:01:56

Kafka服務(wù)器數(shù)據(jù)量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品国产乱码久久久久久果冻传媒 | 欧美日韩亚洲天堂| 亚洲美女av在线| 伊人久久大香线蕉综合75| 国产黑丝一区二区| 黄网站在线免费| 国产一区二区三区网| 亚洲一区二区三区四区在线免费观看| 国产精品欧美日韩一区二区| 色噜噜在线观看| heyzo高清在线| 国产精品亚洲一区二区三区在线 | av在线电影观看| 国产亚洲毛片| 亚洲风情亚aⅴ在线发布| 小说区视频区图片区| 中文字幕二区三区| sdde在线播放一区二区| 欧美r级电影在线观看| 狠狠噜天天噜日日噜| 国产女无套免费视频| 香蕉久久网站| 91精品国产欧美日韩| 婷婷视频在线播放| 日韩大胆人体| 久久精品伊人| 国产亚洲视频在线| 欧美一级特黄a| 色影院视频在线| 麻豆成人av在线| www.午夜精品| 国产精品igao网网址不卡| a视频在线观看| 国产成人午夜视频| 国内久久久精品| jizz欧美性20| 99国产精品免费网站| 亚洲高清久久久| 精品伦精品一区二区三区视频| 日产精品久久久久| 国产精选一区| 精品夜色国产国偷在线| 高清一区二区视频| 久操视频在线播放| 国产精品美女一区二区在线观看| 国产欧美日韩亚洲精品| 在线观看成人毛片| 色狼人综合干| 欧美日韩国产小视频| 99久re热视频精品98| 熟妇高潮一区二区高潮| 丝袜亚洲精品中文字幕一区| 日韩在线www| 四季av中文字幕| 欧美特黄不卡| 色哟哟精品一区| 精品91一区二区三区| 在线视频二区| 99麻豆久久久国产精品免费| 国产91免费观看| 少妇久久久久久被弄高潮| 久久一区二区中文字幕| 亚洲大胆人体av| 四虎精品一区二区| 欧美日韩免费电影| 亚洲成a人v欧美综合天堂下载| 欧美一二三区| 亚洲av无码一区二区乱子伦| 久久精品一区二区国产| 国产精品高潮呻吟久久av野狼| 在线免费看av网站| 九九免费精品视频在线观看| 欧美精品电影在线播放| 女人和拘做爰正片视频| 久cao在线| 亚洲一区二区免费视频| 缅甸午夜性猛交xxxx| 黄色成年人视频在线观看| 亚洲精品视频在线观看免费| 水蜜桃亚洲精品| 日本激情一区二区| 国产麻豆精品视频| 国产有色视频色综合| a网站在线观看| 青青草97国产精品免费观看| 97精品久久久| 久久久久久久久久久久久久免费看 | 91在线网站视频| 2021亚洲天堂| 国产日韩欧美一区在线| 国产日韩中文字幕在线| 好吊色一区二区三区| 狠狠色丁香久久婷婷综合_中 | 成人黄色777网| 91九色单男在线观看| 国产18精品乱码免费看| 国产亚洲一区二区三区四区| 久久99国产精品| 日本激情一区二区三区| 久久精品视频一区二区三区| 国产原创精品| av片在线看| 亚洲一区二区视频在线观看| 国产a级片免费观看| 日韩大片免费观看| 午夜精品久久一牛影视| 中文字幕 91| 欧美亚洲二区| 91 com成人网| 天天影视色综合| 亚洲免费看片| 91精品麻豆日日躁夜夜躁| av无码一区二区三区| 欧美日韩看看2015永久免费| 日韩二区三区在线| 伊人网在线视频观看| 国产精品亚洲人成在99www| 色综合色综合网色综合| 久久综合综合久久| 紧缚奴在线一区二区三区| 九9re精品视频在线观看re6| av片哪里在线观看| 亚洲国产精品尤物yw在线观看| 一区二区三区入口| 亚洲理论电影| 色系列之999| 亚洲色图欧美色| 亚洲欧美日韩国产| 国产精品久久久久久超碰| 天天射,天天干| 一区二区成人在线| 91国视频在线| 久久福利在线| 中日韩午夜理伦电影免费| 一级免费黄色录像| 亚洲调教视频在线观看| 91地址最新发布| 国产无遮挡又黄又爽又色视频| 人妖欧美一区二区| 欧美精品欧美精品| 日本www在线观看| 亚洲国产综合91精品麻豆| 日本一二三四区视频| 久久悠悠精品综合网| 在线a欧美视频| 1024手机在线视频| 国产精品综合视频| 91精品国产吴梦梦| 乡村艳史在线观看| 91精品婷婷国产综合久久| 成年人免费视频播放| 免费成人av资源网| 成人黄动漫网站免费| 蝌蚪视频在线播放| 一卡二卡三卡日韩欧美| 成年人看片网站| 久久最新网址| 国产精品盗摄久久久| av网站在线免费播放| 欧美年轻男男videosbes| 日本一二三区在线观看| 国产二区国产一区在线观看| 国产女教师bbwbbwbbw| 97se亚洲| 91产国在线观看动作片喷水| 三级黄视频在线观看| 色老汉av一区二区三区| 最新中文字幕日本| 国产尤物精品| 久久综合一区二区三区| 亚洲无线看天堂av| 欧美色视频在线| 国产精品第七页| 视频一区二区三区在线| 亚洲欧洲一区二区福利| 一个人www视频在线免费观看| 日韩乱码在线视频| 高潮无码精品色欲av午夜福利| 床上的激情91.| ijzzijzzij亚洲大全| 亚洲一区二区三区四区电影 | 麻豆tv免费在线观看| 欧美大片一区二区| 色哟哟一一国产精品| 日韩电影网1区2区| 欧美视频小说| 二区三区精品| 色婷婷**av毛片一区| 国产黄色片av| 色偷偷久久人人79超碰人人澡| 制服丨自拍丨欧美丨动漫丨| 成人网在线播放| 一路向西2在线观看| 伊人狠狠色j香婷婷综合| 亚洲资源在线看| 欲香欲色天天天综合和网| 日韩中文字幕免费| 五月天婷婷在线观看| 亚洲sss视频在线视频| 亚洲女优在线观看| 天堂成人免费av电影一区| 一级黄色免费在线观看| 日韩伦理一区二区三区| 91色中文字幕| av有声小说一区二区三区| 亚洲女同精品视频| www.爱爱.com| 亚洲一区在线观看免费 | **欧美大码日韩| 在线观看免费不卡av| 亚洲精品123区| 久久99精品久久久久久三级| 先锋影音一区二区| 热久久免费视频精品| 国家队第一季免费高清在线观看| 一本一道久久a久久精品综合蜜臀| 亚洲不卡在线播放| 亚洲国产精品成人久久综合一区| 波多野结衣天堂| 亚洲国产免费| www.黄色网址.com| 日韩欧美一区免费| 亚洲www在线| 成人精品电影在线| 国产视频亚洲视频| 国产 欧美 自拍| 日韩一级视频免费观看在线| 久久丫精品久久丫| 亚洲人成7777| 中文字幕人妻一区二区三区| 国产精品资源在线观看| 久久人人爽av| 免费成人在线视频观看| 日韩肉感妇bbwbbwbbw| 久久精品女人| 男女av免费观看| 99视频精品全国免费| 97影院在线午夜| 中文在线免费视频| 97视频在线观看亚洲| 91吃瓜在线观看| 91国自产精品中文字幕亚洲| 岛国在线视频网站| 日韩中文第一页| 9191在线| 久久精品久久久久| 无码精品在线观看| 日韩经典中文字幕在线观看| 水莓100国产免费av在线播放| 欧美性色综合网| 精品人妻在线播放| 一区二区三区四区蜜桃| 97人妻精品一区二区免费| 91亚洲精品久久久蜜桃| 中文字幕线观看| 国产一区二区精品| 成人在线观看黄| 国产一区二区你懂的| 成年人免费在线播放| 久久久精品日韩| 日韩av片网站| 国内不卡的二区三区中文字幕| 天天摸天天舔天天操| 国产精品自在在线| 美女又爽又黄免费| 国产调教视频一区| 日本在线一级片| 亚洲sss视频在线视频| 久久久久久无码精品大片| 欧美最猛性xxxxx直播| 日本一区二区免费在线观看| 欧美日韩亚洲一区二| 懂色av蜜臀av粉嫩av喷吹| 欧美乱熟臀69xxxxxx| 黄色一级大片在线免费看国产一| 日韩毛片中文字幕| 91精彩视频在线播放| 欧美理论电影在线观看| 日本福利在线| 色在人av网站天堂精品| 亚洲色图官网| 成人免费视频网址| 国产原创一区| av一区和二区| av一区二区高清| 黄色一级大片免费| 久久久久综合| 先锋资源在线视频| 久久品道一品道久久精品| 日本一级片在线播放| 欧美韩日一区二区三区四区| 日本少妇色视频| 日韩美女久久久| 精品国产xxx| 日韩欧美一区二区三区| 精品在线视频免费| 亚洲国产欧美一区二区三区丁香婷| 一级片视频在线观看| 日韩一区二区三区四区| 国自产拍在线网站网址视频| 欧美精品情趣视频| 丁香花在线观看完整版电影| 九九热这里只有在线精品视| 亚洲综合电影| 国产精品久久久999| jizz国产精品| 伊人久久大香线蕉午夜av| 亚洲欧美久久| 95视频在线观看| 91亚洲资源网| 欧美成欧美va| 欧美日韩精品系列| 日韩大胆视频| 性金发美女69hd大尺寸| 久久免费福利| 伊人久久大香线蕉成人综合网| 国产精品一级| 国产精品亚洲一区二区无码| 17c精品麻豆一区二区免费| 五月婷婷激情视频| 亚洲电影在线看| 一色桃子av在线| 成人性教育视频在线观看| 欧美色就是色| 综合色婷婷一区二区亚洲欧美国产| 国产亚洲在线观看| 人妻激情偷乱频一区二区三区| 亚洲欧美一区二区三区国产精品 | 免费观看一级特黄欧美大片| 人妻无码一区二区三区| 亚洲国产日产av| 粉嫩av一区二区夜夜嗨| 色综合久综合久久综合久鬼88| 精品一区二区三区中文字幕视频 | 欧美日韩国产高清一区二区三区| 免费观看成年在线视频网站| 午夜精品一区二区三区在线视频| 最新国产一区二区| 亚洲色成人www永久在线观看| 99精品国产在热久久下载| 免费黄色特级片| 久久亚洲春色中文字幕久久久| 日韩黄色三级视频| 亚洲精品二三区| 香蕉视频在线免费看| 国产精品久久久久久久久久| 精品久久久久久久| 中文字幕第80页| 国产精品乱码一区二三区小蝌蚪| 亚洲一区二区激情| 亚洲第一精品夜夜躁人人躁| 超碰在线资源| 精品视频一区二区三区四区| 亚洲日本黄色| 欧美做受高潮6| 亚洲一二三专区| 国产小视频一区| 91产国在线观看动作片喷水| 精品一区三区| 欧美特级aaa| 亚洲精品乱码久久久久| 亚洲国产精品一| 26uuu另类亚洲欧美日本老年| 日韩国产一二三区| 中文字幕久久综合| 国产成人精品网址| 小早川怜子久久精品中文字幕| 在线亚洲一区二区| 欧美激情二区| 国产精品免费看一区二区三区| 日韩毛片视频| 国内av免费观看| 婷婷久久综合九色综合伊人色| 一级欧美一级日韩| 国产亚洲一级高清| 9999在线精品视频| 久久亚洲中文字幕无码| 久久九九99视频| 国产免费黄色网址| 69精品小视频| 欧美超碰在线| 亚洲自拍偷拍精品| 欧美图片一区二区三区| 日本天码aⅴ片在线电影网站| 久久综合给合久久狠狠色| 久久精品999| 日本五十熟hd丰满| 中文字幕在线日韩| 国产亚洲成av人片在线观黄桃| 日本一区二区三区四区五区六区| 成人免费视频caoporn| 欧美一级做a爰片免费视频| 色综合久久88| 欧美日韩色图| 18深夜在线观看免费视频| 亚洲精品五月天| 精品av中文字幕在线毛片| 亚洲永久免费观看| 日韩精品亚洲专区| 在线看成人av|