成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

據(jù)說(shuō),微信搞不定狀態(tài)同步,才取消了“在線”的概念?

開(kāi)發(fā) 架構(gòu)
微信“在線”的產(chǎn)品設(shè)計(jì)理念我不知道,做了幾十年IM,可以和大家聊聊在線狀態(tài)同步相關(guān)的架構(gòu)設(shè)計(jì)。

有童鞋問(wèn)我說(shuō),聽(tīng)說(shuō)QQ狀態(tài)同步過(guò)于復(fù)雜,微信的架構(gòu)師搞不定,才取消了“在線”的概念,是這樣嗎?

微信“在線”的產(chǎn)品設(shè)計(jì)理念我不知道,做了幾十年IM,可以和大家聊聊在線狀態(tài)同步相關(guān)的架構(gòu)設(shè)計(jì)。

QQ在線狀態(tài)同步分兩大類:

  • 好友狀態(tài)的同步;
  • 群友狀態(tài)的同步;

這兩類狀態(tài)同步的需求各異,前者需要實(shí)時(shí)同步,后者能夠容忍延時(shí)。

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓,這兩類場(chǎng)景的狀態(tài)同步,究竟是推送還是拉取呢?

用戶的在線狀態(tài),分為:

  • 客戶端狀態(tài)(端,顯示狀態(tài));
  • 服務(wù)端狀態(tài)(云,真實(shí)狀態(tài));

兩種形態(tài)。

什么是服務(wù)端狀態(tài)?

服務(wù)端狀態(tài),在線online和離線offline兩種,這是用戶的真實(shí)在線狀態(tài)。不同的狀態(tài),對(duì)于不同的業(yè)務(wù)處理流程可能不同。

例如,對(duì)于消息的處理:

  • 服務(wù)端狀態(tài)在線,直接投遞給用戶;
  • 服務(wù)端狀態(tài)離線,則存儲(chǔ)離線消息,等用戶下一次登錄拉取;

如何實(shí)時(shí)更新服務(wù)端狀態(tài)?

用戶uid-A登錄時(shí),會(huì)修改用戶的服務(wù)端狀態(tài)為在線。

用戶uid-A登出時(shí),會(huì)修改用戶的服務(wù)端狀態(tài)為離線。

經(jīng)常的,服務(wù)端會(huì)將用戶的服務(wù)端狀態(tài)存儲(chǔ)在高可用的緩存集群里。

什么是客戶端狀態(tài)?

對(duì)好友,群友顯示的在線狀態(tài),例如隱身、離線、忙碌、勿擾等,是客戶端狀態(tài),這些狀態(tài)是產(chǎn)品功能需求。我們所說(shuō)的“用戶狀態(tài)同步”,都是指的客戶端狀態(tài)。

為了方便介紹,假設(shè)客戶端狀態(tài)也只有online和offline兩種狀態(tài),與服務(wù)端狀態(tài)一致,后文統(tǒng)一稱為“用戶狀態(tài)”。

如何獲取好友的狀態(tài)?

uid-A登錄時(shí),先去數(shù)據(jù)庫(kù)拉取自己的好友列表,再去緩存獲取所有好友的狀態(tài)。

用戶uid-A的好友uid-B狀態(tài)改變時(shí)(由登錄、登出等動(dòng)作觸發(fā)),uid-A如何同步這一事件?

情況一:如果對(duì)于狀態(tài)變更實(shí)時(shí)性要求不高,可以采用拉取。

uid-A向服務(wù)器輪詢拉取uid-B(其實(shí)是自己的全部好友)的狀態(tài),例如每1分鐘一次,其缺點(diǎn)是:

  • 如果uid-B的狀態(tài)改變,uid-A獲取不實(shí)時(shí),可能有1分鐘時(shí)延;
  • 如果uid-B的狀態(tài)不改變,uid-A會(huì)有大量無(wú)效的輪詢請(qǐng)求,非常低效;

情況二:如果對(duì)于狀態(tài)變更實(shí)時(shí)性要求較高,則必須推送。

uid-B狀態(tài)改變時(shí)(由登錄、登出等動(dòng)作觸發(fā)),服務(wù)端不僅要在緩存中修改uid-B的狀態(tài),還要將這個(gè)狀態(tài)改變的通知推送給uid-B的在線好友。

推送的優(yōu)勢(shì)是:實(shí)時(shí)。

缺點(diǎn)是:當(dāng)在線好友量很大時(shí),任何一個(gè)用戶狀態(tài)的改變,會(huì)擴(kuò)散成N個(gè)實(shí)時(shí)通知,這個(gè)N叫做“消息風(fēng)暴擴(kuò)散系數(shù)”。

假設(shè)一個(gè)IM系統(tǒng)平均每個(gè)用戶有200個(gè)好友,平均有20%的好友在線,那么消息風(fēng)暴擴(kuò)散系數(shù)N=40,這意味著,任何一個(gè)狀態(tài)的變化會(huì)變成40個(gè)推送請(qǐng)求。

群友狀態(tài)的一致性,和好友狀態(tài)的一致性相比,復(fù)雜在哪里?可不可以采用實(shí)時(shí)推送?

群業(yè)務(wù)場(chǎng)景大伙也非常熟悉,你能夠加入若干群(例如20個(gè)),假設(shè)平均每個(gè)群有200人,即你會(huì)有4000個(gè)群友。依然假設(shè)20%的用戶在線,那么為了保證群友狀態(tài)的實(shí)時(shí)性,每個(gè)用戶登錄,就要將自己的狀態(tài)改變通知發(fā)送給20*200*20%=800個(gè)群友,N=800,意味著,任何一個(gè)狀態(tài)的變化會(huì)變成800個(gè)推送請(qǐng)求。

如果說(shuō)好友狀態(tài)實(shí)時(shí)推送,消息風(fēng)暴擴(kuò)散系數(shù)N=40尚可以接受,那么群友狀態(tài)實(shí)時(shí)推送,N=800則是災(zāi)難性的。此類業(yè)務(wù)往往采用輪詢拉取的方式,獲得群友的狀態(tài)。

輪詢拉取群友狀態(tài)也會(huì)給服務(wù)器帶來(lái)過(guò)大的壓力,還有什么優(yōu)化方式?

群友的數(shù)據(jù)量太大,雖然每個(gè)用戶平均加入了20個(gè)群,但實(shí)際上并不會(huì)每次登錄都進(jìn)入每一個(gè)群。

不采用輪詢拉取,而采用按需拉取,延時(shí)拉取的方式,在真正進(jìn)入一個(gè)群時(shí)才實(shí)時(shí)拉取群友的在線狀態(tài),是既能滿足用戶需求(用戶感覺(jué)是狀態(tài)是實(shí)時(shí)、一致的,但其實(shí)是進(jìn)入群才拉取的),又能降低服務(wù)器壓力。這是一種常見(jiàn)方法。

總結(jié)

狀態(tài)的實(shí)時(shí)性與一致性是一個(gè)較難解決的技術(shù)問(wèn)題,一般來(lái)說(shuō):

  • 好友狀態(tài)同步,是采用推送的方式同步;
  • 群友狀態(tài)同步,由于消息風(fēng)暴擴(kuò)散系數(shù)過(guò)大,一般采用拉取的方式同步;
  • 群友狀態(tài)同步,還能采用按需拉取的優(yōu)化方式,進(jìn)一步降低服務(wù)端壓力;
  • “消息風(fēng)暴擴(kuò)散系數(shù)”是指一個(gè)消息發(fā)出時(shí),變成N個(gè)消息的擴(kuò)散系數(shù),這個(gè)系數(shù)一定程度上決定了技術(shù)采用推送還是拉取;

知道為什么,一個(gè)群最多500人了吧?

知其然,知其所以然。

思路比結(jié)論更重要。

責(zé)任編輯:趙寧寧 來(lái)源: 架構(gòu)師之路
相關(guān)推薦

2023-01-06 07:37:08

JavaScript技巧t性能

2020-06-12 10:12:07

蘋(píng)果 iOS微信

2016-11-15 15:38:59

2019-10-21 08:16:17

邊緣計(jì)算數(shù)據(jù)安全網(wǎng)絡(luò)安全

2021-01-22 15:33:58

iOS微信iPhone

2021-01-24 08:20:55

微信微信8.0.1移動(dòng)應(yīng)用

2021-01-05 07:00:53

微信隱藏功能移動(dòng)應(yīng)用

2020-02-17 15:14:43

計(jì)算機(jī)十進(jìn)制二進(jìn)制

2021-09-27 05:27:21

微信微信狀態(tài)騰訊

2025-05-28 08:20:00

無(wú)線網(wǎng)絡(luò)ACAP

2021-01-13 11:48:18

數(shù)據(jù)分析供應(yīng)鏈管理主管

2021-01-30 07:51:59

微信微信8.0騰訊

2024-06-11 14:30:18

2020-09-15 06:13:05

Vue.jsJavaScript框架

2020-07-22 18:04:00

VueAPI共享

2020-07-27 15:06:14

微信張小龍焦慮

2021-05-10 14:53:22

微信技巧小程序

2014-07-23 15:44:00

微盟SaaS

2013-08-08 10:13:25

微信

2021-05-26 09:46:10

數(shù)據(jù)庫(kù)工具技術(shù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 免费黄色大片 | 久久成人一区 | 老司机深夜福利网站 | 亚洲一二三区免费 | 人人人人干 | 一久久久 | 日本激情视频中文字幕 | 一区二区在线不卡 | 婷婷一级片 | 午夜欧美一区二区三区在线播放 | 国产区在线 | 国产中的精品av涩差av | 永久网站 | 我想看国产一级毛片 | 欧美精品一区二区在线观看 | 亚洲欧美一区二区三区1000 | 又爽又黄axxx片免费观看 | 国产精品久久久久久一区二区三区 | 99精品一区 | 天天干夜夜操 | 国产精品区二区三区日本 | 九九综合 | 国产在线精品一区二区三区 | 婷婷在线视频 | 在线播放国产一区二区三区 | 色视频网站免费 | 日韩亚洲视频 | 国产一区黄色 | 国产精品不卡视频 | 欧美综合一区二区三区 | 超碰成人在线观看 | 羞羞视频网页 | 在线午夜 | 欧美精品一二三 | 成人亚洲片 | 奇米四色在线观看 | 一级黄色av电影 | 91视视频在线观看入口直接观看 | 黑人巨大精品欧美一区二区一视频 | 亚洲导航深夜福利涩涩屋 | 日韩欧美国产电影 |