伺服器处理数据时是一个账号一个账号的处理吗,还是上万个一起处理


首先,伺服器性能没你想的那么低,推送万人并没有你想像中的那么困难。

其次,数据也是得看大小的。正常的像全服邮件或者全服通告之类的,有两种做法。

一就是分批发送,跑个非同步线程慢慢发。

二呢就是只发个消息头,然后让客户端主动过来请求。玩家不一定会立马查看,这样就形成时差,保证不会同一时间处理,从而降低伺服器压力。


题主你好,你说的这个问题,主要涉及到演算法的.同时也要看对面伺服器具体是个什么配置.

一般来讲,推送给万人的话,他是不会傻傻的真去同时发几万个包,就算能发,他也不必要这么去浪费这个资源,就和前面几个大佬讲的一样,它可以采用分批发送,来缓解伺服器的压力.

拿个实际的栗子吧,大型游戏开服或者搞活动的的时候,官方是不是会送虚拟物品,这个时候,明明规则是大家都可以领,而你的小伙伴领到了,你却半天还没领到,这就是他的账号处于前面发送的那几批.而你的账号在后面.


万人在线,精准发送

在线这个要求就排除了通过登录来错峰,实际上好多给全服玩家发送数据的行为可以通过登录这个玩家操作来错峰,比如全服邮件。

如果这个数据对实时性非常敏感的话,一般通过优化代码,如果还不行就做一些拆分,实际上这样的业务在游戏中不会很多,对实时性要求敏感的,一般同步的客户端量不会很大,如果需要同步的客户端确实很多,可以在业务上做一些改变,比如网游同屏玩家显示,可以不同步所有理论上看得到的玩家,太多了你也看不过来,或者这些玩家做分组等等措施。

如果对实时性不敏感的话,通过队列做限流慢慢发,或者通过先发送小消息,让客户端主动来取完整消息达到错峰目的来解决。


每个在线的客户端都存在内存中的,采用循环发送数据的方法,但是为了不阻塞其他玩法逻辑,全服推送的数据会采用分批发送。


在这个很简单啊,你把伺服器想的太简单又太笨了,他比我们想像的聪明,当然这中间他们也执行著不同的协议,按照协议有条不紊进行数据交互。


我做的是卡牌游戏,手游……是一个一个处理的……事实上不存在「同时」


推荐阅读:
相关文章