使用Golang语言已经进一年的时间,从C++转到Go语言开发我纠结了很久;先是怀疑,认为开发市场份额的小众语言怎么可以做出成熟而且高效的游戏服务器哪?带着怀疑我花了几天时间从基础语法到并发下的编程都统统的研究了下,所有的Go语言的资料全部来自网络;没有记错的话我花了一周的时间把游戏的的基础通信架构,通信规则、redis和mysql的函数的基础封装结构全部搞定。

当时的通信方式是websocket方式传输,也就是游戏端和服务器双工通信;因为当时前端是JS+H5写的,websocket对于H5是再简单不过的通信方式了,因为cocos-js已经封装了很好,简单易用,大家可以了解下。

选择Go语言最主要以下几点:

(一),通信底层的linux系统的epoll高效的网络传输模型,epoll模型直接就接触过,之前玩吧攻略APP的服务器的基础架构的底层通信方式就是使用的epoll模型,当时自己封装的叫JBL;想必大家在做linux下的网络传输的时候epoll肯定是首选。

epoll简单的如下:

过多也不在这里给大家讲解了,可以去网上找相关的资料。

(二),Go并发模型的超级傻瓜,并不像C++那样繁琐负载;而且垃圾回会让你开发专注在业务逻辑层的开发;部署简单,编译了二进制文件就可以直接拷贝过去运行。

(三),Go语言的开发效率绝对的高效,首先语法简单,类似C语言;库的支持暂时还不是很全面,但是对于现在的业务逻辑功能开发已经足够了。

(四),考虑到后去运营的GM系统的通信统一,因为GM系统多数是网页,虽然websocket链接服务器游戏浪费,不过我们开发服务器确实很奢侈。

(五),对于游戏服务器开发完全足够;而且据说 C++1万人的用户资源,如果用GO开发,C++1万人的资源数据,GO语言可以达到百万,这个数据还有待考量。

最后,我离开C++选择GO,从未后悔;我很期待谷歌Go2.0版本的到来;希望2.0版本可以完胜XXX语言,全面转移到安卓平台。