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

群消息已讀回執(zhí)(這個屌),究竟是推還是拉?

開發(fā) 開發(fā)工具
群消息的流程如何,接收方如何確保收到群消息,發(fā)送方如何收已讀回執(zhí),究竟是拉取,還是推送,是今天要聊的話題。

每當(dāng)發(fā)出一條微信消息,都希望對方盡快看到,并盡快回復(fù),但始終不知道對方是否閱讀。

每當(dāng)收到一條不能立馬回復(fù)的微信消息,都默默返回,假裝沒看見。

畫外音:不想回復(fù)的人,唉,你只是個好人。

[[374547]]

微信用于個人社交,產(chǎn)品設(shè)計(jì)上,在線狀態(tài),強(qiáng)制已讀回執(zhí)都有可能暴露個人隱私,故微信并無相關(guān)功能。

釘釘用于商務(wù)交流,其“強(qiáng)制已讀回執(zhí)”功能,讓職場人無法再“假裝不在線”,“假裝沒收到”。

有甚者,釘釘?shù)娜河?ldquo;強(qiáng)制已讀回執(zhí)”功能,你在群里發(fā)出的消息,能夠知道誰讀了消息,誰沒有讀消息。

群消息的流程如何,接收方如何確保收到群消息,發(fā)送方如何收已讀回執(zhí),究竟是拉取,還是推送,是今天要聊的話題。

一、群消息投遞流程,以及可達(dá)性保證

大家一起跟著樓主的節(jié)奏,一步一步來看群消息怎么設(shè)計(jì)。

核心問題1:群消息,只存一份?還是,每個成員存一份?

答:存一份,為每個成員設(shè)置一個群消息隊(duì)列,會有大量數(shù)據(jù)冗余,并不合適。

核心問題2:如果群消息只存一份,怎么知道每個成員讀了哪些消息?

答:可以利用群消息的偏序關(guān)系,記錄每個成員的last_ack_msgid(last_ack_time),這條消息之前的消息已讀,這條消息之后的消息未讀。該方案意味著,對于群內(nèi)的每一個用戶,只需要記錄一個值即可。

解答上述兩個核心問題后,很容易得到群消息的核心數(shù)據(jù)結(jié)構(gòu)。

群消息表:記錄群消息。

  1. group_msgs(msgid, gid, sender_uid, time, content); 

各字段的含義為:消息ID,群ID,發(fā)送方UID,發(fā)送時間,發(fā)送內(nèi)容。

群成員表:記錄群里的成員,以及每個成員收到的最后一條群消息。

  1. group_users(gid, uid, last_ack_msgid); 

各字段的含義為:群ID,群成員UID,群成員最后收到的一條群消息ID。

在核心數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)完之后,一起來看看群消息發(fā)送的流程。

業(yè)務(wù)場景:

  • 一個群中有A, uid1, uid2, uid3四名成員;
  • A, uid1, uid2在線,期望實(shí)時收到在線消息;
  • uid3離線,期望未來拉取到離線消息;

其整個消息發(fā)送的流程1-4如上圖:

  • A發(fā)出群消息;
  • server收到消息后,一來要將群消息落地,二來要查詢?nèi)豪镉心男┤撼蓡T,以便實(shí)施推送;
  • 對于群成員,查詢在線狀態(tài);
  • 對于在線的群成員,實(shí)施推送;

這個流程里,只要第二步消息落地完成,就能保證群消息不會丟失。

核心問題3:如何保證接收方一定收到群消息?

答:各個收到消息后,要修改各群成員的last_ack_msgid,以告訴系統(tǒng),這一條消息確認(rèn)收到了。

在線消息,離線消息的last_ack_msgid的修改,又各有不同。

對于在線的群友,收到群消息后,第一時間會ack,修改last_ack_msgid。


對于離線的群友,會在下一次登錄時,拉取未讀的所有群離線消息,并將last_ack_msgid修改為最新的一條消息。

核心問題4:如果ack丟失,群友會不會拉取重復(fù)的群消息?

答:會,可以根據(jù)msgid在客戶端本地做去重,即使系統(tǒng)層面收到了重復(fù)的消息,仍然可以保證良好的用戶體驗(yàn)。

上述流程,只能確保接收方收到消息,發(fā)送方仍然不知道哪些人在線閱讀了消息,哪些人離線未閱讀消息,并沒有實(shí)現(xiàn)已讀回執(zhí),那已讀回執(zhí)會對系統(tǒng)設(shè)計(jì)產(chǎn)生什么樣的影響呢?

二、已讀回執(zhí)流程

對于發(fā)送方發(fā)送的任何一條群消息,都需要知道,這條消息有多少人已讀多少人未讀,就需要一個基礎(chǔ)表來記錄這個關(guān)系。

消息回執(zhí)表:用來記錄消息的已讀回執(zhí)。

  1. msg_acks(sender_uid, msgid, recv_uid, gid,if_ack); 

各字段的含義為:發(fā)送方UID,消息ID,回執(zhí)方UID,群ID,回執(zhí)標(biāo)記。

增加了已讀回執(zhí)邏輯后,群消息的流程會有細(xì)微的改變。

步驟二,server收到消息后,除了要:

  • 將群消息落地;
  • 查詢?nèi)豪镉心男┤撼蓡T,以便實(shí)施推送;之外,還需要:
  • 插入每條消息的初始回執(zhí)狀態(tài);

接收方修改last_ack_msgid的流程,會變?yōu)椋?/p>

  • 發(fā)送ack請求;
  • 修改last_ack_msgid,并且,修改已讀回執(zhí)if_ack狀態(tài);
  • 查詢發(fā)送方在線狀態(tài);
  • 向發(fā)送方實(shí)時推送已讀回執(zhí)(如果發(fā)送方在線);

如果發(fā)送方不在線,ta會在下次登錄的時候:

  • 從關(guān)聯(lián)表里拉取每條消息的已讀回執(zhí);

這里的初步結(jié)論是:

  • 如果發(fā)送方在線,會實(shí)時被推送已讀回執(zhí);
  • 如果發(fā)送方不在線,會在下次在線時拉取已讀回執(zhí);

三、流程優(yōu)化方案

再次詳細(xì)的分析下,群消息已讀回執(zhí)的“消息風(fēng)暴擴(kuò)散系數(shù)”,假設(shè)每個群有200個用戶,其中20%的用戶在線,即40各用戶在線。群用戶每發(fā)送一條群消息,會有:

  • 40個消息,通知給群友;
  • 40個ack修改last_ack_msgid,發(fā)給服務(wù)端;
  • 40個已讀回執(zhí),通知給發(fā)送方;

可見,其消息風(fēng)暴擴(kuò)散系數(shù)非常之大。

同時:

  • 需要存儲40條ack記錄;
  • 群數(shù)量,群友數(shù)量,群消息數(shù)量越來越多之后,存儲也會成為問題。

(1) 是否有優(yōu)化方案呢?

群消息的推送,能否改為接收方輪詢拉取?答:不能,消息接收,實(shí)時性是核心指標(biāo)。

(2) 對于last_ack_msgid的修改,真的需要每個群消息都進(jìn)行ack么?

答:其實(shí)不需要,可以批量ack,累計(jì)收到N條群消息(例如10條),再向服務(wù)器發(fā)送一次last_ack_msgid的修改請求,同時修改這個請求之前所有請求的已讀回執(zhí),這樣就能將40個發(fā)送給服務(wù)端的ack請求量,降為原來的1/10。

(3) 會帶來什么副作用?

答:last_ack_msgid的作用是,記錄接收方最近新取的一條群消息,如果不實(shí)時更新,可能導(dǎo)致,異常退出時,有一些群消息沒來得及更新last_ack_msgid,使得下次登陸時,拉取到重復(fù)的群消息。但這不是問題,客戶端可以根據(jù)msgid去重,用戶體驗(yàn)不會受影響。

(4) 發(fā)送方在線時,對于已讀回執(zhí)的發(fā)送,真的需要實(shí)時推送么?

答:其實(shí)不需要,發(fā)送方每發(fā)一條消息,會收到40個已讀回執(zhí),采用輪詢拉取(例如1分鐘一次,一個小時也就60個請求),可以大大降低請求量。畫外音:或者直接放到應(yīng)用層keepalive請求里,做到0額外請求增加。

(5) 會帶來什么副作用?

答:已讀回執(zhí)更新不實(shí)時,最壞的情況下,1分鐘才更新回執(zhí)。當(dāng)然,可以根據(jù)性能與產(chǎn)品體驗(yàn)來折衷配置這個輪詢時間。

(6) 如何降低數(shù)據(jù)量?

答:回執(zhí)數(shù)據(jù)不是核心數(shù)據(jù)

  • 已讀的消息,可以進(jìn)行物理刪除,而不是標(biāo)記刪除;
  • 超過N長時間的回執(zhí),歸檔或者刪除掉;

四、總結(jié)

對于群消息已讀回執(zhí),一般來說:

  • 如果發(fā)送方在線,會實(shí)時被推送已讀回執(zhí);
  • 如果發(fā)送方不在線,會在下次在線時拉取已讀回執(zhí);

如果要對進(jìn)行優(yōu)化,可以:

  • 接收方累計(jì)收到N條群消息再批量ack;
  • 發(fā)送方輪詢拉取已讀回執(zhí);
  • 物理刪除已讀回執(zhí)數(shù)據(jù),定時刪除或歸檔非核心歷史數(shù)據(jù);

推還是拉?任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓。

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

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

 

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

2021-01-05 09:23:49

網(wǎng)頁端消息

2016-11-01 15:16:52

QQ狀態(tài)即時通訊

2025-07-02 09:15:06

2020-12-22 21:24:45

在線狀態(tài)服務(wù)端狀態(tài)狀態(tài)同步

2011-02-28 09:51:43

內(nèi)省

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2015-12-14 15:34:35

開源投資創(chuàng)業(yè)

2010-06-28 14:47:45

云計(jì)算

2012-08-20 10:34:07

軟件開發(fā)開發(fā)軟件

2024-10-18 14:43:31

2019-04-26 13:55:02

Istio微服務(wù)架構(gòu)

2016-11-10 21:00:49

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

2009-05-06 16:10:17

Java傳值引用

2019-10-21 13:58:22

爬蟲互聯(lián)網(wǎng)程序員

2011-02-16 16:13:40

Debian

2020-06-11 09:18:34

動靜分離架構(gòu)架構(gòu)設(shè)計(jì)開發(fā)

2020-05-07 10:53:04

人工智能技術(shù)開發(fā)

2019-02-14 10:10:11

系統(tǒng)廠商芯片

2020-05-06 18:32:37

人工智能AI制藥

2019-06-04 14:15:08

JavaScript V8前端
點(diǎn)贊
收藏

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

欧美性高清videossexo| 久久久噜噜噜久久中文字幕色伊伊| 色噜噜亚洲精品中文字幕| 精品99在线视频| 懂色一区二区三区| 久久精品人人做人人爽电影蜜月| 一本一本久久a久久精品牛牛影视| 九色porny91| 国产鲁鲁视频在线观看特色| 成人小视频免费观看| 欧美专区在线视频| 国产精品久久久免费看| 91成人入口| 欧美日韩一区二区免费视频| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲字幕av一区二区三区四区| 一区二区三区毛片免费| 日韩精品免费在线观看| 日韩不卡一二三| 岛国片av在线| 日本一区二区不卡视频| 91黄色国产视频| 亚洲 日本 欧美 中文幕| 欧美 日韩 国产一区二区在线视频 | 麻豆免费精品视频| 欧美成人网在线| 一级性生活毛片| 蜜桃精品视频| 欧美吻胸吃奶大尺度电影| 2019日韩中文字幕mv| 在线观看av黄网站永久| 成人app下载| 91精品免费看| 无码人妻av一区二区三区波多野| 成人羞羞动漫| 日韩精品在线看| 日本xxxx免费| 香蕉久久一区| 欧美亚洲日本一区| 欧美三级一级片| 暖暖在线中文免费日本| 最新高清无码专区| 日韩精品久久久免费观看| 人妻精品一区二区三区| 国产麻豆精品在线| 91精品久久久久久久| 成人免费毛片男人用品| 国产欧美日韩一级| 精品少妇v888av| 九九这里只有精品视频| 日韩dvd碟片| 亚洲视频专区在线| 在线 丝袜 欧美 日韩 制服| 高清日韩欧美| 日韩欧美专区在线| 日本成人在线免费观看| 免费日韩成人| 欧美日韩精品一区二区在线播放| 色诱视频在线观看| 亚洲第一影院| 91久久奴性调教| 国产成人无码av在线播放dvd| 国产理论在线| 欧美日韩日本国产| 国产男女在线观看| 国产成人精品亚洲日本在线观看| 懂色aⅴ精品一区二区三区蜜月| av免费看网址| freexxx性亚洲精品| 亚洲成人动漫精品| 香港三级韩国三级日本三级| 国产在线美女| 色久综合一二码| 亚洲免费看av| 狠狠久久伊人中文字幕| 欧美日韩国产在线播放网站| 国内国产精品天干天干| 久久久久久爱| 欧美成人高清电影在线| 欧亚乱熟女一区二区在线| 欧美黄色网视频| 亚洲午夜av久久乱码| 日本猛少妇色xxxxx免费网站| 精品视频黄色| 久久久国产在线视频| 青娱乐国产在线视频| 精品成人久久| 热草久综合在线| 亚洲男人天堂网址| 麻豆精品久久久| 97人人干人人| 亚洲av成人无码久久精品老人| 久久综合色鬼综合色| 日韩免费毛片| av在线网址观看| 亚洲精品成人天堂一二三| 成人国产在线看| 2020国产在线| 欧美亚洲国产一区二区三区| 日韩av自拍偷拍| 欧美第一在线视频| 亚洲精品午夜精品| 99久久99久久精品免费看小说.| 一精品久久久| 国产成+人+综合+亚洲欧美丁香花| 中日韩av在线| 成人丝袜18视频在线观看| 日韩av电影免费在线观看| av免费在线网站| 色婷婷一区二区| 极品人妻一区二区| 精品国内自产拍在线观看视频 | 在线观看av黄网站永久| 亚洲一二三四在线| 婷婷六月天在线| 成午夜精品一区二区三区软件| 亚洲欧洲xxxx| 久久久久成人片免费观看蜜芽| 老牛国产精品一区的观看方式| 91免费看片在线| 男人av在线| 亚洲自拍偷拍九九九| 一区二区三区入口| 日韩成人一级| 欧美成人免费网| 中文精品久久久久人妻不卡| av亚洲精华国产精华精华| 中文字幕99| 欧美性xxx| 亚洲第一精品久久忘忧草社区| 女教师淫辱の教室蜜臀av软件| 国产精品久久久一区二区| 亚洲影院污污.| 91最新在线| 色婷婷久久一区二区三区麻豆| 一级黄色片毛片| 欧美在线看片| 成人激情在线播放| 粉嫩一区二区三区国产精品| 欧美日韩美女在线观看| 在线观看成人动漫| 欧美日韩综合| 亚洲综合最新在线| 老司机在线永久免费观看| 在线观看网站黄不卡| 欧美bbbbb性bbbbb视频| 在线欧美不卡| 国产精品国产三级欧美二区| 91麻豆免费在线视频| 欧美丰满美乳xxx高潮www| 女教师淫辱の教室蜜臀av软件| 日本欧美韩国一区三区| 日韩成人在线资源| 日日夜夜天天综合| 国产丝袜一区二区三区| 精品成人av一区二区在线播放| 国产91对白在线观看九色| 超碰超碰超碰超碰超碰| 日韩精品视频一区二区三区| 欧美成人午夜免费视在线看片| 99riav国产| 又紧又大又爽精品一区二区| 国产男女无遮挡猛进猛出| 女人天堂亚洲aⅴ在线观看| 亚洲一区美女视频在线观看免费| 成人免费网站在线观看视频| 欧美一区二区女人| 欧美成人片在线观看| 国产精品1区2区3区在线观看| 欧美美女黄色网| 日韩一区二区三区色| 欧美激情视频一区二区| 日日夜夜精品免费| 福利微拍一区二区| 中文字幕人妻一区二区| 石原莉奈在线亚洲三区| 亚洲国产欧美一区二区三区不卡| 日韩第二十一页| 欧美日韩第一视频| 午夜福利视频一区二区| 色综合咪咪久久| 手机看片国产日韩| 国产成人福利片| 日韩激情免费视频| 精品国产乱码久久久久久1区2匹| 国产啪精品视频网站| bt在线麻豆视频| 亚洲精品v欧美精品v日韩精品 | 欧美性三三影院| 51精品免费网站| 成人av在线电影| 欧洲av无码放荡人妇网站| 日韩欧美伦理| 99热在线国产| 二吊插入一穴一区二区| 久久香蕉国产线看观看网| 亚洲精品无码久久久| 日韩欧美在线看| 色撸撸在线视频| 成人午夜av电影| 99视频在线视频| 欧美激情偷拍| 欧美日韩在线高清| 日韩区一区二| 国产成人精品一区二区三区| fc2ppv国产精品久久| 亚洲视频免费一区| 亚洲春色一区二区三区| 在线精品国精品国产尤物884a| 欧美老熟妇一区二区三区| 91婷婷韩国欧美一区二区| 一道本在线免费视频| 一区在线观看| 在线视频一区观看| 久久av中文| 成人免费视频视频在| 黄色欧美视频| 日本福利午夜视频在线| 久久影院100000精品| 国产精品一区视频网站| 国产成人免费| 69影院欧美专区视频| 久cao在线| 亚洲无限av看| 天天综合天天综合| 日韩一区二区免费在线电影| 国产精品国产精品国产| 黄色成人在线播放| 黄色一级片中国| 国产精品三级电影| 一区二区三区久久久久| 成人白浆超碰人人人人| 国产精品999.| 国产真实乱对白精彩久久| 国产成人精品无码播放| 黄色工厂这里只有精品| 性欧美.com| 美女一区二区在线观看| 国产福利久久精品| 欧美日韩午夜电影网| 成人黄色免费看| 男人天堂久久| 国产精品香蕉av| 97欧美成人| 国产精品免费一区| 无人区在线高清完整免费版 一区二| 97香蕉超级碰碰久久免费的优势| 青草在线视频在线观看| 美女福利精品视频| 成人免费网址| 久久99精品久久久久久琪琪| 麻豆影院在线观看| 精品国产自在精品国产浪潮 | 亚洲国产精品va在线观看黑人| 性色av蜜臀av| 日韩欧美亚洲国产精品字幕久久久| 国产又粗又大又爽视频| 欧美日韩一区二区在线观看| 中文字幕 亚洲视频| 欧美影院午夜播放| 一区两区小视频| 欧美精选在线播放| 国产美女免费视频| 日韩欧美中文字幕精品| 精品国产av鲁一鲁一区| 精品国产亚洲一区二区三区在线观看| 亚洲AV无码乱码国产精品牛牛 | av一区二区高清| 亚洲巨乳在线观看| 欧美a级在线| 免费在线看黄色片| 亚洲精品综合| caopor在线视频| 麻豆91在线观看| 在线视频一二区| 成人午夜在线视频| 久久精品国产亚洲av久| 国产精品污污网站在线观看| 99久久精品久久亚洲精品| 怡红院av一区二区三区| 日韩无码精品一区二区三区| 一本大道久久a久久综合| 最近中文字幕在线观看| 日韩一级完整毛片| 四虎成人免费在线| 在线观看日韩视频| 国产黄色小视频在线| 性欧美视频videos6一9| 在线日本欧美| 91精品黄色| 国产精品探花在线观看| 国产又爽又黄ai换脸| 亚洲国产国产亚洲一二三| 欧美日韩怡红院| 国产激情一区二区三区| 久久精品国产亚洲av久| 亚洲精品国产一区二区三区四区在线 | 欧美日韩精品免费| 国产极品999| 国产视频久久网| 八戒八戒神马在线电影| 2020国产精品视频| 国产精品亚洲综合在线观看| 精品国产日本| 亚洲国产精品综合久久久| 久色视频在线播放| 国产综合色视频| 李宗瑞91在线正在播放| 一区二区三区四区不卡在线| 日韩电影在线观看一区二区| 69精品人人人人| 三级在线视频| 久久91亚洲人成电影网站| 99久久精品一区二区成人| 国产精品一区二区免费| 日韩久久精品| 97成人在线观看视频| 国产福利一区二区三区视频 | 超碰在线人人干| 亚洲一级片在线看| 国产直播在线| 成人午夜电影免费在线观看| 欧美特黄一级大片| 无码人妻丰满熟妇区毛片18| 懂色中文一区二区在线播放| 黄色裸体一级片| 一本色道久久加勒比精品| 午夜精品久久久久久久99老熟妇| 中文字幕综合一区| 欧美国产大片| 国内精品**久久毛片app| 欧美激情五月| 能看毛片的网站| 中文字幕一区二区三区不卡| 无码人妻黑人中文字幕| 亚洲激情视频在线观看| 欧美hdxxxxx| 亚洲最大的av网站| 亚洲视频在线免费| 一区二区三区四区毛片| 日本一区二区视频在线| 无码人妻精品一区二区三区蜜桃91| 亚洲激情中文字幕| 亚洲美女尤物影院| 精品一区二区国产| 制服诱惑一区二区| 黄色片视频免费观看| 欧美日韩免费在线| 水莓100在线视频| 奇门遁甲1982国语版免费观看高清| 人妖一区二区三区| 国产在线青青草| 久久久精品2019中文字幕之3| 黄色片中文字幕| 亚洲人在线视频| 97精品国产综合久久久动漫日韩 | 日本一卡二卡四卡精品 | 中文字幕在线观看视频网站| 亚洲精品成人久久| 成人美女大片| 神马欧美一区二区| 久久超碰97中文字幕| 天天做夜夜爱爱爱| 日韩欧美视频在线| а√天堂8资源中文在线| 久久综合九色综合网站| 久久综合中文| 三级黄色在线观看| 日韩一区二区电影| 黄视频网站在线观看| 久久婷婷国产综合尤物精品| 久热国产精品| 91视频最新网址| 日韩精品在线一区二区| av电影院在线看| 日本一区二区免费看| 久久99九九99精品| 激情小说中文字幕| 亚洲成av人片在线观看香蕉| 阿v免费在线观看| 国产伦精品一区二区三区精品视频 | 天海翼精品一区二区三区| 一区二区三区在线观看www| 韩国v欧美v亚洲v日本v| 国产高潮流白浆| 亚洲国产中文字幕久久网| 理论不卡电影大全神| 亚洲成人午夜在线| 国产成人在线免费| 国产伦精品一区二区三区视频网站| 亚洲品质视频自拍网| 亚洲色图综合| 美女av免费观看| 久久久精品tv| 国产情侣av在线| 欧美黑人性视频| 国产剧情在线观看一区| 中文字幕国产免费| 婷婷综合在线观看| 成人精品一区二区三区校园激情|