Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微博与im消息实现对比[随想]

微博与im消息实现对比[随想]

作者头像
Java架构师必看
发布于 2021-09-23 06:50:48
发布于 2021-09-23 06:50:48
3480
举报
文章被收录于专栏:Java架构师必看Java架构师必看

这两天在Qcon的群里讨论im讨论的比较多,翻出11年写的一篇blog(略显稚嫩?),原文如下:

=====

在网上看了一篇关于微博feed系统的架构文章(SK:可能是2010年timyang在Qcon上的分享,又好像是一篇关于推拉模式的文章),有所感想,由于自己是做IM系统的,故自然会将两者的方案进行联想和对比。

feed系统 可以理解为一个发布订阅系统,你关注了姚晨的微博,姚晨发布了消息,会feed给你。

IM系统 即时通讯系统,典型系统为QQ。

实现方式 (1)推送 IM消息 就是一个典型的推送系统,服务端会主动将消息推送给客户端; IM消息 实时性比较强,而微博的实时性相对不这么强,别人发的信息,订阅者晚个几分钟,甚至十几分钟收到都无所谓; IM群与微博 有共同点:一个人发布一条群消息,推送给群内的其他成员; IM群与微博 的不同点:群人数有限,而姚晨被500W人关注,消息扩散级别不在一个数量级;

如果使用推送来实现feed系统的话,姚晨发布一条消息,就要推送给500W个人,这个量级的扩散是不能接受的。

(2)拉取 IM系统消息(就是登陆QQ广告那种消息) 与微博 的共同点:系统消息需要推送给所有IM用户; IM系统消息 与微博 的不同点:系统消息频率很低,可能每天几条,可微博发送频率很高;

IM系统消息的实现:不会对所有IM用户进行扩散,而是在用户登陆后,轮询拉取,例如10分钟一次。 系统消息实时性和微博类似,有个十几分钟延时也无所谓。

微博压力和IM系统消息压力不在一个数量级: 不妨设微博同时在线为1000W(指在浏览微博网页的),平均每人在线时长为1小时,每天需要轮询次数为: 1000w * 60分钟 / 10分钟一次 = 6000w次 一天4w秒算,每秒压力2k的QPS

不知道我是不是算少了,感觉应该能搞定。

(3)按时间优化拉取 热门微博与热门群消息,都可以按照时间对消息进行分级来优化,例如: 1小时消息表; 1天消息表; 1周消息表; 1月消息表; 可以针对每个级别的消息,做不用策略的存储或者cache。 最活跃的表,查询次数最多的表肯定是时间上最近的表,cache命中率会很高。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
feed留,单聊群聊,系统通知,状态同步,到底是推还是拉?
可以理解为一个发布订阅业务,典型业务是微博(朋友圈)。你关注了姚晨的微博,姚晨发布了消息,你的主页能看到她最新发布的消息,这个场景是推送,还是拉取呢?
架构师之路
2018/07/27
1.4K0
微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed架构,也就是推拉模式(timyang上次也分享了新浪微薄的模式)。下面我们就微博的feed推拉(push,pull)模式做一下探讨,并提出新的时间分区拉模式。
爱撸猫的杰
2019/10/24
2K0
微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
揭秘:微信 / 微博 / 头条 / 快手是如何轻松处理亿级规模的 Feed 流的?
差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动互联网时代的新产品在过去几年间借着智能手机的风高速成长。
iMike
2019/09/17
1.5K0
揭秘:微信 / 微博 / 头条 / 快手是如何轻松处理亿级规模的 Feed 流的?
直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践
本文原题“百度直播消息服务架构实践”,由百度APP消息中台团队原创分享于“百度Geek说”公众号,为了让文章内容更通俗易懂,本次已做排版优化和内容重新划分,原文链接在文末。
JackJiang
2021/04/27
1.4K0
feeds流系统设计概述
什么是 Feeds 流? 从用户层面来说, 各种手机 APP 里面, 特别是社交类的, 我们可以看到关注的内容、好友的动态聚合成一个列表(最典型的就是微信朋友圈)都是 feeds 流的一种形式。
leobhao
2024/06/18
9140
feeds流系统设计概述
IM群聊消息的已读回执功能该怎么实现?
我们平时在使用即时通讯应用时候,每当发出一条聊天消息,都希望对方尽快看到,并尽快回复,但对方到底有没有真的看到?我却并不知道。
JackJiang
2018/08/29
5.1K0
跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
本文将要分享的是如何从零实现一套基于Netty框架的分布式高可用IM系统,它将支持长连接网关管理、单聊、群聊、聊天记录查询、离线消息存储、消息推送、心跳、分布式唯一ID、红包、消息同步等功能,并且还支持集群部署。
JackJiang
2023/06/09
1.4K0
跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
巧用 Redis,实现微博 Feed 流功能!
Feed 流【关注页 Feed 流】的初始化指的是,当用户的 Feed 流还不存在的时候,为该用户创建一个属于他自己的关注页 Feed 流,具体怎么做呢?其实很简单,遍历一遍关注列表,取出所有关注用户的 feed,将 feedId 存放到 redis 的 sortSet 中即可。这里面有几个关键点:
搜云库技术团队
2023/10/21
6330
巧用 Redis,实现微博 Feed 流功能!
群消息已读回执(这个diao),究竟是推还是拉?
微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。
架构师之路
2018/07/27
1.7K0
群消息已读回执(这个diao),究竟是推还是拉?
移动端IM中大规模群消息的推送如何保证效率、实时性?
众所周之,群聊是移动端IM的服务端技术难点所在,难在哪?大量的群聊消息,是一条条推给群内成员还是可以使用什么样的优化策略?试想一个2000人大群,一条消息的发出,如果瞬间被扩散写成2000条一对一消息的投递,对于接收方而言不过是一条消息而已,而服务端是以对相对比单聊消息的2000倍处理压力后的结果。那么服务端在保证消息投递的同时,面对这么大的压力该如何解决好效率问题?解决不好效率问题那实时性就不能保证!
JackJiang
2018/08/23
1.6K0
移动端IM中大规模群消息的推送如何保证效率、实时性?
让人欲罢不能的Feed流系统是如何设计的?
差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长。
Bug开发工程师
2019/07/12
2.8K0
让人欲罢不能的Feed流系统是如何设计的?
QQ状态同步究竟是推还是拉?
前面两篇讲即时通讯核心技术的文章 《微信为什么不丢消息?》 《http如何像tcp一样实时的收消息?》 反馈还可以,故继续即时通讯这一个系列吧,今天聊聊即时通讯中的“状态”。 需求缘起 “在线状态一致
架构师之路
2018/03/01
2K0
QQ状态同步究竟是推还是拉?
5亿用户如何高效沟通?钉钉首次对外揭秘即时消息服务DTIM
作者 | 陈万红,张世梁,杨世泉,余秋宇,谈云兵 策划 | 褚杏娟 这是钉钉第一次对外揭秘 DTIM(DingTalk IM,钉钉即时消息服务)。我们从设计原理到技术架构、从最底层存储模型到跨地域的单元化,全方位地展现了 DTIM 在实际生产中遇到各种挑战与解决方案,期望为企业级 IM 的建设贡献一臂之力。 钉钉已经有 2100 万 + 组织、5 亿 + 注册用户在使用。DTIM 为钉钉用户提供即时消息服务,用于组织内外的沟通,这些组织包括公司、政府、学校等,规模从几人到百万人不等。DTIM 有着丰富
深度学习与Python
2023/03/29
1.1K0
5亿用户如何高效沟通?钉钉首次对外揭秘即时消息服务DTIM
IM系统设计
即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。实现方式有两种。第一种基于Server转发的,Client双方通信会经过Server转发来完成消息传递。例如QQ、微信。
gglinux
2019/02/23
3.8K0
几个大型网站的Feeds(Timeline)设计简单对比
Facebook起源的NewsFeed,以及Twitter起源的Timeline,核心问题都是如何处理巨大的消息(活动,activity)分发。“推Push”和“拉Pull”或者“推拉结合”,是主要的处理方式。
芋道源码
2018/09/30
3.6K0
几个大型网站的Feeds(Timeline)设计简单对比
Feed流系统设计
差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长。
架构师修炼
2020/11/19
1.4K0
Feed流系统设计
群消息这么复杂,怎么能做到不丢不重?
【需求缘起】 之前的文章更多的聊了单对单的消息投递: 《微信为什么不丢消息?》 《http如何像tcp一样实时的收消息?》 群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息: (1)在线的群友能第一时间收到消息 (2)离线的群友能在登陆后收到消息 由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉?》),群消息的复杂度要远高于单对单消息。群消息的实时性,可达性,离线消息是今天将要讨论的核心话题。 【常见的群消息流程】 开始讲群消息投递流程之前,先介绍两个群业
架构师之路
2018/03/01
1.7K0
群消息这么复杂,怎么能做到不丢不重?
feed与秒杀,撑住10Wqps,架构方案一样吗?
《并发扣款,如何保证一致性?》一文,描述了高并发情况下,并发扣款的一致性,幂等性,以及ABA问题。
架构师之路
2023/01/04
5670
feed与秒杀,撑住10Wqps,架构方案一样吗?
IM系统海量消息数据是怎么存储的?
现在的IM系统,消息都要落地存储。这样如果接收消息的用户不在线,等他下次上线时,能获取到消息数据。
普通程序员
2019/10/23
8.2K0
IM系统海量消息数据是怎么存储的?
企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等
本文总结了企业微信的IM消息系统架构设计,阐述了企业业务给IM架构设计带来的技术难点和挑战,以及技术方案的对比与分析。同时总结了IM后台开发的一些常用手段,适用于IM消息系统。
JackJiang
2021/07/19
3.8K1
推荐阅读
相关推荐
feed留,单聊群聊,系统通知,状态同步,到底是推还是拉?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档