对于服务器功能和策略的提取的思考
【温馨提醒】文章部分内容来源网络,不代表本站观点!若有了解“对于服务器功能和策略的提取的思考”等有关服务器、云主机租用、托管、配置、价格问题,请随时咨询YINGSOO客服,为您答疑解惑!
【热搜主机】日本CN2服务器 | 美国显卡服务器 | 新加坡CN2服务器
【主机百科】台湾有哪些著名的服务器机房?
对于玩家的超时管理,粒度不能太大。要做超时控制的首要原因,是socket连接太长没有发送消息的话,服务器端应该认为该玩家挂机你时间过长,将其清理出房间,关闭此socekt连接。
这只是服务器对玩家的时间超时控制的一个比较明显的原因,在 游戏服务器中,往往会低估 一件事情的复杂程度从而呈现出过多的乐观主义。 如果考虑下在时间控制的领域内,需要 清除玩家的因素,可以分为这么几个:
1. 在房间内挂机时间过长,换句话说就是已经连接的socket过长时间没有发送任何数据。
2. 游戏加载的过程中,如果加载的时间过长,则应关闭此连接,提示玩家重新连接。
3. 玩家要进入游戏房间前,发送预约请求包后,预约的时间超过限制,需要关闭。
4. 在踢出玩家的过程中,如果玩家的消息还没有发送完毕,需要给一个时间专门用来发送剩下的数据,超过这个时间限制后,就强行退出。
踢出玩家这一功能单元,比较好的机制是状态管理器的方式, 玩家存在不同的状态,当每个心跳,处理逻辑的时候,根据玩家的状态进行不同的处理。 在处理过程中,根据游戏的运算逻辑更改玩家的状态属性,这样便将 踢出玩家的逻辑原因 和 处理玩家的退出,包括资源清理 进行了分离, 将代码进行了解耦。 其实这是属于玩家的状态控制, 玩家在不同的状态进行不同的处理。
在整个服务器的处理中,socket封装层专门用来处理网络连接和数据的传送, 在这一层,是和业务逻辑无关的。 业务层将数据写入已经开辟的缓冲区中,然后在心跳时,socket封装层将缓冲区中的数据进行发送。socket层数据的接收和此类似, poll或者epoll轮询后,从内核中,将tcp/ip协议中传输层里,内核缓冲区的数据进行读取,然后写入soceket封装层的读数据缓存区,然后根据自己服务器的与客户端协商的协议,对数据 进行拆分,然后交由不同的包处理逻辑 执行事件处理。
这样,在socket封装层,不应该进行过多的业务逻辑代码,否则上层业务将会和下层的封装相耦合, 在服务器逻辑 简单,或者是原型期时,缺点尚不明显,但是一旦需求开始增多 , 业务代码的复杂度会剧烈的上升, 在初期如果功能模块分得不够清晰, 那随后想要进行解耦,将会面临 巨大的技术风险。 重构从来都是件非常痛苦的事情,原有的架构至少是解决了问题,重新做一遍,需要将整个已经解决掉的问题再重新解决一遍,做这样的事情,需要知识、经验、以及义无反顾的勇气。
所以在这个时期,我会尽肯能的将以往的经验,加入到新的项目中,不能让过去出现的错误重复的出现。 而且,也需要将已经成熟的项目经验,累积到下个项目中,这样团队的技术积累才会不断提高, 说直白点,就是
对连接的控制管理,
对时间超时的控制,
对于服务器群组的管理和分发机制,
对于多线程的使用控制,线程间的并发控制,对死锁的控制,
对线程间通信的使用(为了提高性能使用缓冲区数据通信,特殊要求的话,要用到scocket通信),
对于资源池的使用,
对于精妙的设计模式的运用,
对于socket层以及io复用的封装,
对于日志记录功能的更好的使用,
对于mysql和mogodb数据库的设计和调优控制,
对于服务器的运行平台,linux对于内存和线程的 管理。(重要而不紧急,是必须要做的事情)
这些是目前最迫切的,那句话还是要不断的提醒我自己,做之前要不断的想,做之后要不断的反思。
YINGSOO拥有完善的售后服务体系,为客户提供快捷、专业、准确、热情的技术支持与服务。YINGSOO以“客户第一,服务至上”为理念,切实提供完善的售后服务体系,保障客户的使用安全与稳定。全国统一服务热线:400-630-3752
热门搜索:【Python自动生成PPT】【云服务器商】【意大利服务器】【服务器连接】【Redis7.0部署集群】【python】【Linux】【日本服务器】【ubuntu】【国内云服务器】【微信运营的误区】【公有云和私有云】【香港服务器】【服务器硬盘】【物理服务器】【美国服务器】【mysql5.7服务无法启动】【主机租用】【Python读取HTML表格】【服务器被攻击】【流媒体服务】【服务器租用】【独立服务器】【centos7安装mono】【服务器硬盘】【服务器租用和托管】【香港云服务器免费】【美国高防服务器】【香港服务器】【机房服务器】
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。