网络游戏并发如何保证数据正确

一直想独立开发一款网络游戏,曾经尝试了各种语言,也学习了各种框架,但都是糊里糊涂,服务器端根本搞不清楚到底咋回事,更别提开发了。自从接触了go语言,2个月来,对网络的认识在整体上有了很大提升,明白了服务器的含义,只是一个TCP长连接,来处理游戏的各种逻辑。当然分布式系统还是不懂,感觉很难控制,看了几个分布式架构,但都是有一个接口负责把消息进行转发,感觉这样的话接口的压力很大,负责的任务也太多,后端各个服务器的均衡问题他也要处理,所以我也不喜欢这样的架构,在考虑到自己游戏的特性,决定写个单服服务器,也就是可以提供一个游戏服或者多个游戏服对应后端一个服务器,通过加开新服的方式来扩展。这种方式代码上更容易实现。

   通过对go的学习,也理解了其他语言线程,资源竞争的含义。。在开发游戏的逻辑中,遇到各种问题,由于我还毫无游戏服务器开发经验,所以仅从我从这次开发中学到和总结出的一点常识吧和大家分享。。

  大家都知道go是并发性语言,现在我才理解这句话的含义。我的游戏框架是挺简单的,服务器采用纯TCP长连接,有客户端连接就开一个go程,进行不停读,由于第一步解包要保证读取数据包的顺序,所以第一步解包也在读的这个go程内,当然也可以把读取的数据全装进一个chan,再开一个单独的go程处理,我没有这么做,我认为一个go程处理一个客户端的连接再加初步解码的工作并不多,非常轻松的就能应付。这个初步解码就是分开各个数据包,因为TCP长连接传输数据是流模式,是不能分开一个一个数据包的,我们要自己分开,这也是tcp长连接和其他连接方式的不同。数据包分开后,就是处理各个数据包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值