QQ如何把你的消息传递给好友的?

张叔叔先告诉大家一个数据:QQ注册用户量累计超过10个亿,QQ日活超过3亿,月活超过5亿。日活直白点说就是每天使用QQ的用户量,月活就是每个月累计活跃的用户量。中国人口13.8亿,几乎人人都有QQ号,大家都是腾讯的忠实用户!

不出意外的话,你不仅有QQ号码,而且还有很多QQ好友吧!那你知道QQ登录的流程吗?你知道如何把你好朋友加为QQ好友的吗?你知道每一条消息怎样到达你好友手机上的吗?带着这些疑问跟张叔叔一起来学习吧。

那是历史上的某一天,你知道了QQ的存在,而且通过电脑或者手机找到了QQ的注册界面,根据提示你把注册所需的信息都填写完整并点击了注册按钮。这个时候你所填写的信息通过计算机网络传递到了腾讯的服务器,腾讯服务器给你分配了一个QQ号码,并且把该QQ号码与你所设定的密码绑定到了一起。恭喜你,现在注册成功了!

温馨提示:现在网络推行实名制,每个QQ号码目前都需要绑定一个手机号喔,所以网上发言要谨慎,为自己的言行负责喔。

之后你输入QQ号码和密码登录的时候,计算机网络承载着你的登录请求再次欢快地来到了腾讯的服务器。腾讯服务器首先从自己的数据库中查询你输入的QQ号码是否存在,如果号码都不存在,腾讯服务器会直接返回账号不存在的错误给你。如果QQ号码存在,服务器会校验你输入的密码和数据库中存储的QQ密码是不是一致的,如果不一致,会提示你密码错误;如果一致,恭喜你,登录成功了!

登陆之后发现好友列表是空空如也呀,此刻略感孤单和寂寞。猛然间想起放学时候同学小芳给你塞的纸条,上面是一串数字,当时没有领悟到数字的含义,现在恍然大悟,原来纸条上写的是小芳的QQ!以迅雷不及掩耳之势,你在申请好友栏中填入了那串数字,点击查询按钮之后显示出了对方的昵称“村里那个姑娘”,你毫不犹豫就点击了申请好友按钮。

搜寻QQ和申请加好友的过程中发生了什么?你搜索的请求传递到腾讯服务器之后,首先会从数据库中查询是否存在你搜索的QQ,结果成功搜索到了“村里那个姑娘”并且返回给你。点击申请好友按钮后,你的申请请求再次被传送到腾讯服务器,服务器会记录住你申请添加了小芳,并且给小芳推送一条好友申请消息。

果不其然,当小芳登录QQ之后收到了腾讯发送过来的好友申请:“村头小伙”申请添加你为好友。小芳定睛一瞧“嘿嘿,这不就是他嘛”,兴高采烈的点击了同意按钮。同样的道理,数据通过计算机网络再次被传输到了腾讯服务器,服务器判断你们已经两相情愿,于是好友关系建立成功并成功存储在服务器上。

每当你和小芳使用QQ的时候都会发现自己的好友列表中有了彼此,这是因为你的好友列表已经存储在服务器上面,每次登录都会拉取到好友列表,信息是不会丢失的。当然了,有几次小芳生气把你删除了,这个时候腾讯数据库中你们彼此的好友列表中也就没有了彼此。最后死皮赖脸你又把小芳这个好友加上了。这反反复复的添加和删除操作其实就是对于腾讯数据库的反复增加和删除好友记录。

自从添加了小芳之后,每天都会和她聊天。那你发送的文字和语音是怎么传递到小芳那的?先来回答一个问题,你如果从城市北边的学校到城市西边的动物园?通常情况下我们有两种方式:从学校坐公交车到城市中心的公交枢纽,然后换成一辆公交车到达动物园;明确学校和动物地址之后,直接驾车从学校到动物园。第一种方式中有个公交枢纽,起到中转的效果;第二种方式是两个地点直接相连相通。

你通过QQ发送消息给小芳的时候类似于从学校到动物园,可以把你和小芳所在的网络位置比作学校和动物园,而腾讯的服务器可以比作公交枢纽。你发送的消息传递到小芳同样有两种方式。

先来介绍比较简单的中转方式,当你和小芳登录成功之后会与腾讯的服务器建立连接,通过这个连接你们的电脑或者手机可以与服务器进行信息交互。当你发送消息给小芳时,消息首先通过这个连接到达了腾讯服务器。服务器解析消息格式,发现这些消息的接收者是小芳,服务器找到与小芳的连接,并且将消息通过这条连接发送给小芳。腾讯服务器此时起到的作用就是公交枢纽的作用,通过该枢纽可以实现任意站点之间的连接。

中转方式的优点很明显,实现相对简单,只要所有的用户与腾讯服务器建立连接就可以了,消息的调度和推送都由服务器负责。缺点是什么呢?如果任何消息都要通过服务器中转,那么服务器真的是很忙,而且当消息量比较大的时候,服务器还会很拥堵。这就好比所有人坐公交车都要去公交枢纽转乘,公交枢纽的服务人员不得忙死了,周边的道路肯定也会非常拥挤,最终大家都不能按时到达目的地(消息延迟),很多人可能也因此中途下车了(消息丢失)。

下面谈到的第二种直连方式可以有效地解决上述的问题。直连的方式就是你和小芳之间是直接相连的,发送的消息不用通过第三方直接到达小芳。你和小芳是怎么实现直连的呢?首先是获取彼此的连接地址,这个腾讯会提供对应的服务支持你和小芳获取彼此直连的地址。你们获取彼此地址之后就可以直接连接到一起,这个时候是不是和小芳的距离突然就缩短了。

无论是中转方式还是直连方式,都需要解决一个问题,怎么保证消息到达呢?你给小芳发送的10条信息丢失了5条,这个天聊的是不是断断续续。你给小芳发送1条消息,结果小芳重复收到了5条,这个天聊的是不是啰啰嗦嗦。如果现在让你解决消息到达率和重复率的问题,你会怎么做呢?

为了保证你和小芳的沟通顺畅,腾讯可是做了很多事情。首先,可以为每一条消息增加一个编码,比如1、2、3、4、5,小芳会把收到的消息编码反馈给你,比如自己收到了1、2、3、4,编号5的消息很明显丢失了。这个时候为了保证到达率,可以重新发送编号为5的消息。通过以上手段就解决了消息到达率的问题。

消息重复问题是不是也可以通过编码解决?of course!小芳收到消息之后取出消息编码,然后判断之前又木有收到过这条消息,如果之前出现过,那么肯定是重复消息,不再展示即可;如果没有出现过,那就是新消息,可以进行展示。如此,重复问题得以解决。

是不是通过这篇文章对于QQ消息是如何发送给好友有了更清晰的认识,还是那句话,相信坚持与专注的力量,跟着张叔叔继续学习吧!

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181028A0EQ1X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券