老师留了一个游戏服务器作业,我想用Go来写,节省代码量,顺便用用新技术~
但是老师在讲服务器要求的结构的时候用了多进程来分配客户端连接数量。我查了资料,貌似Go没有提供很明显的多进程接口,倒是有rpc包,感觉不太靠谱……我自己还是倾向于用GoRoutine搭建,便于线程间通信。我想问下,这样做靠谱么?
用Go写游戏服务器是一个非常棒的选择,当然主要一个原因就是Go语言特有的Goroutine和Channel。
看了这个问题后我不是很清楚你们是在学习多线程编程还是分布式架构。如果是多线程编程,对应Go的实现当然是Goroutine和Channel。如果是分布式架构,用HTTP编程应该最适合你,模型足够简单。HTTP编程我就不介绍了,我们之前写的《Go语言编程》中也有介绍。如果要多个HTTP服务器分摊客户端请求,前面加个Nginx作LB应该就可以了。
Go语言中控制Goroutine数量有挺多灵活的办法的,一般最简单的就是预先直接创建这么多个Goroutine,然后每个Goroutine自身是一个死循环,持续从作为参数传入的Channel中读取需要处理的数据包。
这里就先不展开了,看你具体的需求再论。我以前参与的游戏项目都是用C++然后是IOCP和epoll之类的处理高并发。可惜当时还没有Go可以用,否则应该会更有乐趣。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。