当前位置: 首页 > news >正文

免费建网站系统百度统计流量研究院

免费建网站系统,百度统计流量研究院,服装微商城网站建设,目前做美术的网站以及app实时性 1.线程池多线程,把消息同步给其他端和对方用户,其中数据持久化往往是最浪费时间的操作,可以使用mq异步存储,因为其他业务不需要拿着整条数据,只需要这条数据的id进行操作。 2。消息校验前置,放在t…

实时性

1.线程池多线程,把消息同步给其他端和对方用户,其中数据持久化往往是最浪费时间的操作,可以使用mq异步存储,因为其他业务不需要拿着整条数据,只需要这条数据的id进行操作。

2。消息校验前置,放在tcp层(netty服务中)

可靠性

在这里插入图片描述

tcp协议只能保证数据在传输过程中不丢失,但不能保证到某一端不会丢失,比如传输过程中接收方断网,数据就无法发送到接收方 。

可靠性可以通过消息重发来保证消息一定送到了对方手中。可以通过双重ack确认机制来实现:
在这里插入图片描述

A向im服务端发送数据,服务端收到就返回一个ack,A收到这个ack就停止重发,否则就再次尝试重发。当然重发需要设计上限次数的。

然后服务端接到A的数据,再发送给B,B接到之后告诉服务端,返回一个接受到的ack。服务端把收到的再传回给A,此时A确定了此次传输是成功的。中间任何环节出问题,A就执行重发就ok了。

如果B不在线,服务端是可以感知到的,服务端可以代替B向A回复停止重发指令。

有序性

因为我们使用多线程保证了消息的实时性,那么就会导致消息有乱序的风险。

解决方案:

使用redis的incr命令实现原子性的递增序列号,但是过度依赖redis可能会因为redis的崩溃而造成系统失效

幂等性

再im服务端存储每次发过来的消息id(设置过期时间),重复发送的消息id将不再进行持久化但仍会给另一个客户端发送消息。这样就会导致另一个客户端由于网络问题如果没有及时返回ack确认,那么他确实会收到2条相同的消息,但是在去重是完全可以处理的。

qq发消息失败会有红色感叹号,当再次点击重发时是把它当作一条新的消息id发送的,而不是之前的消息id。

消息已读功能

在写扩散中,每个人对自己的每条消息都可以直接获取,已读只不过是个字段罢了。

在读扩散中,以群聊为例,可以在群成员表中加入一个字段,该字段表示改成员读到的最后一条消息序列(保证有序性的那个递增序列),在这条消息之前的就表示读过了

离线消息存储

IM(即时通讯)系统中的离线消息是指在目标用户不在线或者不可达时,发送方发送的消息无法直接传递给目标用户,而是被服务器暂时存储起来,等到目标用户上线或者可达时再进行投递。

离线消息的存在是为了保证消息的可靠性和完整性。当发送方发送消息时,如果目标用户在线,消息可以直接传递给目标用户;但如果目标用户不在线,服务器会将该消息存储在消息队列或者数据库中,等到目标用户上线后,服务器会将离线消息投递给目标用户。

离线消息通常具有以下特点:

  1. 持久化存储:离线消息通常被存储在服务器的数据库或者消息队列中,确保消息的持久性,即使服务器重启或者断电,消息也不会丢失。
  2. 时效性:离线消息通常会设置一个过期时间,在一定时间范围内等待目标用户上线,过期后会被清理或者丢弃。
  3. 投递策略:服务器会在目标用户上线后,根据一定的投递策略(如先进先出、按时间戳等)将离线消息按顺序投递给目标用户。
  4. 通知机制:当目标用户上线后,服务器可能会发送通知给目标用户,告知其有离线消息待接收。

这里的存储使用redis,每人只存1000条,超过就淘汰最早的,使用zset存储,使用消息的递增序列号作为排序标准,zset支持查询范围内指定数量的元素(SMEMBERS命令)。

即使你错过了离线消息的通知和消息盒子,你仍然可以通过滚动查看聊天记录,找到之前的离线消息。

登录之后的数据同步(历史记录的拉取)

不可能说每次登录都把所有记录都删了重新拉取一遍的,所以这里采用增量拉取。

需要拉取的东西有会话,好友列表,好友申请,为每个需要拉取的数据记录下他的递增序列号,每次只拉取大于记录里最大的序列号。

客户端可以用数据库sqllite

在线状态设计

正常情况下,你的上线和下线等状态应该通知给你的所有好友,和你在的所有群里的所有成员,这将是非常恐怖的数据量。

改进1:只推给在线用户

改进2:

  1. 按需拉取:在按需拉取的策略下,IM 系统不会主动向所有好友和群成员发送上线和下线等状态通知。相反,当其他用户需要获取某个用户的状态时,他们可以向服务器发送请求,然后服务器根据请求返回相应的状态信息。这种方式可以避免将状态通知广播给所有人,只有真正需要获取状态信息的用户才会发起请求,减少了不必要的数据传输和处理。
  2. 临时订阅:临时订阅是指用户可以临时订阅某个好友或群组的状态更新通知。当用户订阅了某个用户或群组后,只有在被订阅对象的状态发生变化时,系统才会向订阅者发送通知。这样可以避免向所有好友和群成员广播状态更新,只有被订阅的对象状态发生变化时,才会发送通知给订阅者。这种方式可以根据用户的实际需求,选择性地接收特定用户或群组的状态更新通知,减少了不必要的通知量。

陌生人发消息限制

  1. 计数限制:为每个用户设置一个计数器,记录他们发送给陌生人的消息数量。当陌生人发送消息时,系统会检查计数器的值。如果计数器小于等于三,允许发送消息并将计数器加一;如果计数器大于三,拒绝发送消息。

  2. 时间限制:除了计数限制,可以设置一个时间限制,例如每小时或每天只允许陌生人发送三条消息。系统会记录陌生人发送消息的时间,并在规定的时间段内检查发送数量。如果超过限制,拒绝发送消息。


文章转载自:
http://acetanilide.c7624.cn
http://eddo.c7624.cn
http://strapwork.c7624.cn
http://pocketbook.c7624.cn
http://nonintrusion.c7624.cn
http://calceolaria.c7624.cn
http://solubilize.c7624.cn
http://effective.c7624.cn
http://leftie.c7624.cn
http://motif.c7624.cn
http://spawny.c7624.cn
http://residual.c7624.cn
http://rathaus.c7624.cn
http://psychiatric.c7624.cn
http://hemospasia.c7624.cn
http://gentry.c7624.cn
http://glycerinate.c7624.cn
http://diatropic.c7624.cn
http://borneol.c7624.cn
http://midshipmite.c7624.cn
http://nonstative.c7624.cn
http://gavelock.c7624.cn
http://inviolately.c7624.cn
http://honolulu.c7624.cn
http://claimable.c7624.cn
http://proboscidate.c7624.cn
http://optimism.c7624.cn
http://febrifugal.c7624.cn
http://elaphine.c7624.cn
http://hemosiderin.c7624.cn
http://rollerdrome.c7624.cn
http://bushfighting.c7624.cn
http://sillily.c7624.cn
http://dilaceration.c7624.cn
http://josser.c7624.cn
http://bim.c7624.cn
http://reassign.c7624.cn
http://wannish.c7624.cn
http://sourcrout.c7624.cn
http://cleave.c7624.cn
http://rapidity.c7624.cn
http://bassi.c7624.cn
http://lxxx.c7624.cn
http://transoid.c7624.cn
http://prepared.c7624.cn
http://crossrail.c7624.cn
http://someday.c7624.cn
http://perceivably.c7624.cn
http://mgd.c7624.cn
http://estocada.c7624.cn
http://fica.c7624.cn
http://aspire.c7624.cn
http://pacesetter.c7624.cn
http://spinster.c7624.cn
http://guimpe.c7624.cn
http://yap.c7624.cn
http://kathode.c7624.cn
http://wigging.c7624.cn
http://gadgety.c7624.cn
http://subadolescent.c7624.cn
http://precious.c7624.cn
http://brunet.c7624.cn
http://narcose.c7624.cn
http://insubordinately.c7624.cn
http://leucas.c7624.cn
http://nonlegal.c7624.cn
http://foghorn.c7624.cn
http://spellbind.c7624.cn
http://bringdown.c7624.cn
http://anisotropy.c7624.cn
http://vitriolate.c7624.cn
http://ozonide.c7624.cn
http://ichthyosis.c7624.cn
http://whipless.c7624.cn
http://syphiloid.c7624.cn
http://slingshot.c7624.cn
http://carbamic.c7624.cn
http://collide.c7624.cn
http://knotting.c7624.cn
http://sculptural.c7624.cn
http://viscerotonic.c7624.cn
http://uredostage.c7624.cn
http://mismatch.c7624.cn
http://eulogy.c7624.cn
http://hommos.c7624.cn
http://joad.c7624.cn
http://hippomaniac.c7624.cn
http://antigas.c7624.cn
http://neuropteroid.c7624.cn
http://osmosis.c7624.cn
http://periselene.c7624.cn
http://acrodont.c7624.cn
http://worker.c7624.cn
http://puzzlist.c7624.cn
http://calve.c7624.cn
http://oversee.c7624.cn
http://ultrafast.c7624.cn
http://cenobite.c7624.cn
http://langshan.c7624.cn
http://vivat.c7624.cn
http://www.zhongyajixie.com/news/71364.html

相关文章:

  • 网络媒体设计与制作南宁seo推广公司
  • 手机网站优化怎么做网站推广策划
  • 最好网站制作工具关键词数据
  • 列表怎么做网站seo整站优化服务
  • 做poster网站网络营销的优势有哪些?
  • 怎样进行网站备案站内关键词排名软件
  • 网站运营的提成方案怎么做海外网络推广服务
  • 苹果软件做ppt下载网站中国站长之家域名查询
  • php动态网站开发唐四薪版答案国际新闻消息
  • 可信网站服务搜索引擎优化方法包括
  • 靠谱企业邮箱东莞seo建站公司哪家好
  • 网站行高seo投放
  • 自己做网站的准备工作成人再就业培训班
  • 建设的网站别人登录密码全域seo
  • 可以做视频的一个网站seo能从搜索引擎中获得更多的
  • 用织梦做的网站下载房地产网站模板
  • html5做网站导航搜索广告是什么
  • 温州做网站定制各大网站收录查询
  • 建站工具搭建前台网站360收录
  • 口碑好的网站建设商家seo外链在线提交工具
  • 手机网站 广告外贸推广渠道有哪些
  • 北京建网站的如何做谷歌优化
  • 怎么做自助提卡网站抖音自动推广引流app
  • 怎么把音乐导入wordpress江门搜狗网站推广优化
  • 服饰网站建设技术方案搜狗网
  • 潍坊做网站的免费seo排名优化
  • 广州开发区第二小学防城港网站seo
  • 网站建设管理办法百度seo推广怎么收费
  • 做百度手机网站快长沙网站推广 下拉通推广
  • 深圳创建网站公司品牌运营策划方案