IM IM电竞架构设计03 读扩散 写扩散
发布时间:2022-09-12 15:48:08

  广义系统通知有1对1的通知以及一对多的通知有相对实时的业务通知以及能够容忍一定延时的系统通知。结合具体的场景来看下这样的一些系统通知究竟是推还是拉

  很多业务经常有这类计数通知通知结果只针对你这类通知是推送还是拉取的呢常见的有这样一些实践

  如果业务需求对计数需求需要实时展现例如微博的加好友计数假如希望实现不刷新网页计数就实时变化

  登录微博时会有一个计数的拉取对网页端的计数进行初始化

  这里的思路是一开始得到初始值后续推送增量值由网页端计算最终计数并呈现最终结果。需要注意针对不同业务计数变化的差值可增可减。

  上述方案的坏处是一旦有消息丢失网页端的计数会一直不一致直至再次登录重新初始化计数。这个计算计数可以优化为在服务器直接计算并通知网页端最终的结果网页端只负责呈现即可这样网页端的逻辑会变轻。

  如果业务对此类通知的展现不需要这么实时完全可以通过拉取

  只有在链接跳转或者刷新网页时才重新拉取最新的通知例如上述计数

  这样系统的实现会最简单。需要注意通知拉取要异步不要影响主页面的快速返回。

  系统对1的推送例如针对1个用户的业务计数推送计数的变化频率其实非常低使用cache来存储这些计数能够极大提升系统性能。

  系统对多的通知消息会比系统对1的通知消息复杂一些以两个场景为例

  在user每天非第一次登录的时候就拉取不到msg_id于是不会再次弹窗

  这个笨拙的方式会导致t_user_msg里有大量的脏数据毕竟大部分用户并不会登录。

  这个方式虽然有所优化但t_user_msg的数据量依然很大。

  这种方式不再存储消息与用户的笛卡尔关系数据量会大大减少是不是有点意思

  每天会对一批在线用户推送相同的弹窗TIPS广告例如球鞋广告手机广告等

  画外音如果1个推送一块钱5KW用户推送收入就有5KW收入哟一天推个几次实现1个亿的小目标居然如此简单。

  最直观的感受这是一个for循环批量推送的过程。如果是推送必须要考虑的问题是推送限速控制避免短时间内对系统造成冲击引发雪崩。

  完全可以这是一个对实时性要求不太高的场景用户早1分钟晚1分钟收到这个广告影响不大其实可以借助IM原本已有的keepalive请求在请求返回时告之“有消息拉取”然后采用拉取的方式拉取广告消息。

  这个方案的好处是由于5KW在线用户的keepalive请求是均匀的所以可以很均匀的将广告拉取的请求同样均匀的分散到一段时间内避免5KW集中推送对系统造成冲击。

  批量弹窗广告常见的方法是推送需要注意限速也可以拉取以实现请求的均匀分散

  不同的产品会有不同的客户端状态例如隐身、离线、忙碌、勿扰等这些状态大多是产品功能需求。有的产品例如微信在设计之初就摒弃了用户端状态这个概念。

  后文为了方便描述不妨设待讨论的是QQ这种拥有客户端状态的产品并假设客户端状态也只有在线和离线c;后文统一称为“用户状态”。

  消息的接收方也就是用户A如果是在网页端登录因为HTTP协议是“请求-响应”式的服务端与网页之间没有消息通道对于这类“收消息”的需求是如何处理的呢

  效率低下发消息是一个低频动作如果10次轮询才收到1条消息请求有效性只有10%浪费了大量服务器资源

  更要命的是在这种方案下实时性与效率是一对不可调和的矛盾如果将轮询周期设为1/10将时延缩短到1秒意味着100次轮询才会收到1条消息请求有效性则降为了1%。

  如果要兼顾实时性和效率长连接是最佳之选PC端聊天软件基本都是使用长连接IM电竞。网页端常见的实现长连接的方式有两种

  长轮询是通过拼装HTTP短连接来达到长连接的效果即保证了消息100%实时又最大化的系统效率。

  最通用的方式是长轮询通过HTTP短连接拼装长连接具体是通过“夯住”“只收推送通知”的“通知连接”来实现的能够做到消息的实时性到达

  核心问题2如果群消息只存一份怎么知道每个成员读了哪些消息

  群成员表记录群里的成员以及每个成员收到的最后一条群消息。

  发送方在线c;对于已读回执的发送真的需要实时推送么

  IM电竞答已读回执更新不实时最坏的情况下1分钟才更新回执。当然可以根据性能与产品体验来折衷配置这个轮询时间。

  已读的消息可以进行物理删除而不是标记删除

  假设一个群(gid)里有4个成员其中三个在线c;一个不在线)。

  A发送了一条消息很容易想到对于不同的群友消息存多份每个群友一个队列来存储。但由于在线的用户会实时的收到消息所以暂定只为离线的用户存储。

  不止写发布feed存储而且要写多个粉丝的接收feed存储故称为“写扩散”

  系统通知,究竟是推送还是拉取?任何脱离业务场景的架构设计都是耍流氓。广义系统通知,有1对1的通知,以及一对多的通知,有相对实时的业务通知,以及能够容忍一定延时的系统通知。结合具体的场景来看下,这样的一些系统通知,究竟是推还是拉?一、系统对1的通知典型业务,计数类通知: 有10个美女添加了你为好友 有8个好友私信了你 很多业务经..

  散布push、混杂形式(pushpull)相干cache(redis,memcache) 之前正在网上看到闭于Twitter、Sina和腾讯菲薄单薄的一些完成技巧,那个简略做个择要。 1、

  push、混合模式(push+pull)相关cache(redis,memcache)

  哪些产品是feed流典型业务? 答:微博,微信朋友圈,Pinterest是典型的feed流业务IM电竞,系统中的每一条

  就是一个feed。 这类业务的特点是: 有好友关系,例如关注,粉丝 我们的主页由别人发布的feed组成 这类业务的典型动作是: 关注im新闻,取关 发布feed 拉取自己的主页feed流 这类业务的核心元数据是: 关系数据 ...

  来自:之前在网上看到关于Twitter、Sina以及腾讯微薄的一些实现技术,这个简单做个摘要。1、

  全称是『Instant Messaging』,中文名是即时通讯。在这个高度信息化的移动互联网时代,生活中

  为核心功能的产品。当然目前微信已经成长为一个生态型产品,但其核心功能还是

  全称是『Instant Messaging』,中文名是即时通讯。在这个高度信息化的移动互联网时代,生活中

  技术领域基础篇 接入层的服务器程序如何升级 对于当前特定Access长连接接入服务而言 我经历的xxx项目中的情况: Access接入层服务, tcp长连接的, 如果需要更新的话, 那不是客户端需要重新登录 ? 是的,但是可以改造,access 再剥一层出来专门维护长连接 access 分为连接层和 access,前者不涉及业务,所以...

  一、毕业设计的要求和内容(包括原始数据、技术要求、工作要求) 一、系统功能 1.设计精美但是整洁、清爽的系统界面。 2.相关信息管理:对旅游景点信息能进行查看、添加、修改、删除操作。 3.用户信息管理:游客可以浏览和评论旅游景点信息,可以在线购票退票,可以对自己的信息进行查看、添加、删除和修改;管理员可以对游客信息、管理员信息

  增删改操作。 二、开发平台和相关技术 系统将采用基于B/S的结构,结合MVC设计模式,严格按软件工程的实验要求实施课题的需求调研、分析、设计、测试、部署以及各阶段的管理。编程语言可采用JSP,部署Tomcat服务器,数据库采用MySQL。 三、毕业设计实物内容及要求 系统名称: 智慧旅游在线平台的设计

  实现 系统内容: 1、 游客可以浏览和评论旅游景点信息,可以在线购票退票,可以对自己的信息进行查看、添加、删除和修改; 2管理员可以对游客信息、管理员信息

  增删改操作。 ------ 本科生毕业设计 任务书 题目: 智慧旅游在线平台的设计

  openssh 升级,开箱即用,有详细的教程 确认当前版本 ssh -V #备份现有的openssh配置 mkdir -p /etc/ssh.bak/ cp -ra /etc/ssh/ /etc/ssh.bak/ cp -ra /etc/pam.d/ /etc/ssh.bak/ #安装rpm包 rpm -Uvh openssh-8.9p1-1.el7.x86_64.rpm openssh-server-8.9p1-1.el7.x86_64.rpm openssh-clients-8.9p1-1.el7.x86_64.rpm

  国家文化大数据体系底层关联集成系统-内容资源管理系统V3.0.0-用户手册

  国家文化大数据体系通过底层关联集成系统和关联标识形成物理分布、逻辑关联的中华文化数据库。数据库中文化数据进场交易的入口是装配在文化机构的底层关联集成系统,通过底层关联集成系统获得文化数据唯一标识符的文化数据,就拥有了在交易和分发环节中的唯一身份识别。 为了便于交易主体充分理解交易标的入口为底层关联集成系统的重要意义和作用,现将“底层关联集成系统”进行解析如下: 01 标准术语 底层关联集成系统,类似于互联网的域名解析系统,采用中国主导制定的国际标准,即信息

  文献国际标准关联标识符。 02 定义和概念 国家文化大数据体系底层关联集成系统是国家文化大数据体系实现“物理分散、逻辑集中”的核心部件。系统基于ISLI国际标准、云计算技术、人工智能技术IM电竞、虚拟现实三维技术和互联网网络技术等,是为文化大数据结构化存储专门搭建的系统。

  内容解析 底层关联集成系统是通过国家文化专网连接省域中心,形成文化数据关联网络。只要经过底层关联系统结构化的数据,其在文化专网里的创作、生产、传播和消费全流程全都会被跟踪,从而以ISLI编码为纽带实现文化数据或产品的确权、关联、跟踪、管控、支付和

  matplotlib-3.3.4-cp36-cp36m-linux_aarch64.whl

  matplotlib-3.3.4-cp36-cp36m-linux_aarch64.whl