新闻动态

线程业务:游戏服务器中多线程之间如何通信

发布日期:2021-02-11 18:48 | 文章来源:YINGSOO

  【小编提示】本文部分内容来源于互联网,仅供参考!若有云服务器\物理机\vps\专用服务器产品租用问题,请咨询[YINGSOO]在线客服,答疑解惑!

  【境外主机】台湾100M服务器价格 | 服务器价格计算器 | CDN加速 | 菲律宾云服务器价格

  【相关阅读】如何选择海外云主机?看完这7条你就会选了 | 免备案服务器选哪里的好?免备案服务器推荐

线程业务

  在游戏服务器中,线程的管理是重中之重,因为线程数量不能太多,所以为了提高游戏服务器并发性,就需要在线程处理业务的速度要快,不能长时间卡住线程,比如,不能有网络io,磁盘io等耗时的操作。所以我们会把有限的线程数进配按需分配。线程的主要分配方式如下:

  1,与客户端的io线程

  负责接收客户端消息,和向客户端发送消息。

  2,处理玩家业务的逻辑线程

  负责业务逻辑的处理与计算。

  3,处理rpc或数据库同步的网络线程。

  负责不同服务之间的通信

  4,处理日志的磁盘io 线程

  相应的线程分别做自己该做的时间。但是这时候问题来了,既然按用途分配了这些线程,那不可免费的就会出现不同线程之间的数据交互了。举个例子来说,比如玩家登陆和排队,假如说一个区一台物理机,处理与客户端的io线程占1个,业务逻辑线程16个,请求数据库的线程3个。其它的先忽略不算。这个时候,服务器收到客户端登陆的请求,业务线程收到这个请求,第一件事情是去数据库查用户的信息,因为业务逻辑线程是多个用户之间共用的,所以你不能在这里等待数据库请求的返回,要不然会卡别的业务逻辑处理。最好的做法就是,把这个请求封装成一个事件,发送到数据库同步线程中去处理这个事。等待数据库线程处理完了,再把结果告诉业务逻辑线程,然后再处理业务,这个时候处理的数据都在内存中了,所以速度非常快,处理完之后再返回客户端。

  有人说,那这样还不是卡登陆吗?是的,必卡登陆,因为处理数据库的线程就那么3个。对于mysql的查询性能测试如下:

  我们3个线程按1500个计算,那么也只有登陆并发达到1500的时候,才会觉得服务慢一些,(实际情况可能会再底一些),如果并发能达到这么高,说明游戏很火了,可以等待数钱了。如果再多的人,我们就可以使用排队的功能的。可以查询到数据库线程中正在等待执行任务的数量,如果达到某个值,就可以在业务服务中给客户端返回正在排队的,让客户端过[高防云服务器]一会再来请求即可。

  回到正题,那么游戏服务器线程之间该如何传递数据呢,可能每个人的做法不一样,这里只列举中一个,希望给大家给带来些参考,就当是交流学习了。如果你有更好的方法,也希望您评论分享。

  在Java中,多线程之间交互数据,即A线程给b线程一个请求事件,A线程还要获取b线程的执行结果,比如登陆,请数据库线程去查库,查完之后告诉逻辑线程。Java提供了一个Future/callable的机制,详细大家可以自动百度它们的用法,但是它们有一个缺点,就是A线程在获取结果时(调用future.get())的时候是同步的,如果b线程没有执行完,还是会卡A线程。这显示不是我们想要的。对于这一点,我们伟大的异步框架,netty的作者给出了一个解决方法,那就是Future / promise模式。这里对它的源码暂不做分皙了,有时间另写文章说明吧,有兴趣的同学可以自己查看。这里只说一下它的用法。

  此代码只是模拟,真实应用中还需要自己设计,首先是[云主机云服务器]数据库查询的管理类:

  然后是业务管理类:

  通过这个例子,其它关于多线程交互数据的功能实现,大家就可以举一返回三了。

  本公司为网络游戏营运公司提供了高性能、高可用、可伸缩性、高性价比的idc数据中心解决方案!详询在线客服!

  

  网站备案的密码忘了怎么找回

  导语:网站备案成功之后之后都会有一个账号密码,如果这个密码丢了怎么办?我们该怎么找回呢?

  首先在登陆页面一般都能够找到“找回密码”的字样,点击进入相关的页面。

  进入找回密码的页面之后,会有一系列的信息需要我们填写,比如用户名、联系人姓名和电子邮件等,还要选择相应的用户类别。

  信息填写无误之后,直接点击“提交”,新的密码就会发到相应的邮箱中。

  在这个过程,还有一种情况会出现,那就是用户名、电子邮箱等信息也不记得了,这个时候就会比较麻烦一点。

  如果[越南服务器]是自己自己备的案,就要联系你备案所在省的通信管理局,让他们帮忙将密码重置一下;如果是通过服务商备案的话,直接联系[台湾云服务器推荐]自己的服务商就可以重置密码了。

  网站备案的账号密码是比较重要的信息,虽然密码丢了可以通过各种渠道找回密码,但是我们平时还是要注意保管好这些重要信息,防止有些用心不良的人拿来制造麻烦。

  YINGSOO热线:400 630 3752

  热门文章:【如何防止服务器被攻击】【英国虚拟主机】【联通1000兆机房】【选择美国仿牌服务器需要注意什么】【可能危害云服务器安全的9个因素】【香港服务器带宽如何选】【香港服务器多少钱一月】【免费香港服务器租用】【云服务器需要备案么】【1g服务器价格】【高清直播服务器】【区块链技术】【香港服务器托管时的注意事项】【杭州服务器】【网站空间主机】【备份服务器】【主机托管的优势】【云主机服务器购买】【香港服务器托管选择】【服务器认证】【台湾vps带显卡】【香港云主机哪家好】【虚拟主机试用】【永久免费vps云主机】【服务器被ddos】【境外服务器租用价格】【有哪些免费的云服务器】【韩国站群ip】【香港电商服务器】【高防服务器文章

  国外云服务器_美国_日本_韩国精选线路,实时开通

  国外云服务器,YINGSOO,专业海外云服务器提供商,提供亚洲,欧美等全球范围云服务器租用托管,1对1客服指导,7x24小时保障,全球精选线路免费试用

  https://www.yingsoo.com/

  海外CN2云服务器【YINGSOO云】免备案_去试用

  海外CN2云服务器,YINGSOO国外云服务器套餐,限时特惠,注册满减,助力企业出海,YINGSOO国外云服务器安全,稳定,易用,弹性扩展,按需配置,3天免费试用,7x24在线支持

  https://www.yingsoo.com/

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部