使用Go go语言http服务器开发大型 MMORPG 游戏服务器怎么样

使用Go 语言开发大型 MMORPG 游戏服务器怎么样_百度知道使用Go 语言开发大型 MMORPG 游戏服务器怎么样_百度知道游戏服务器技术浅问
[问题点数:100分,结帖人lineage191]
游戏服务器技术浅问
[问题点数:100分,结帖人lineage191]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年7月 Web 开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。和C Socket服务器比起来有什么优劣?可行性怎么样?
下面是我在准备写一个新的游服时技术选型的比较,最后我选了C#;C#的优点:1.有强大IDE,无论编写还是调试都非常容易,可以节省大量时间。2.有大量资料可查3.不会有Runtime层的内存泄漏。4.有成功先例,说明用起来没问题。5.运行速度快。6.我非常熟悉。7.代码框架可以参考传统游戏服务器的实现方式。缺点:1. 相对go,布署比较麻烦。2. linux上得用mono,性能有下降。3. 非开源(相对GO,其实从实用角度来说,不是什么问题)。golang的优点:1.原生高并发2.布署方便golang的缺点1.没有强大的IDE,开发和调试都不方便(至少是没有用VS那么方便)2.没有大量资料。3.有runtime内存泄漏问题。4.市面上没听说过有golang开发的游戏服务器,没先例,无人研证过可不可用,有风险。5.运行速度并不比c#有优势。6.我没c#那么熟悉7.代码框架虽然也可以参考传统游戏服务器的实现方式,但这样就失去了高并发和go程的优势,所以这块势必要重新思考,增加了风险。
============日更新===================&br&Golang 1.7已经rc, 很快发布. 虽然游戏服务器使用Golang无需担心gc问题, 但1.x版本的golang的底层优化的已经很给力了&br&LiteIDE x30版本开始支持symbol和文件列表查看. 同时支持vsdark主题, 跨平台开发Golang就跟C++体验差不多, 除了调试&br&据说很快Google官方就要支持调试器了&br&&br&&br&============日更新===================&br&现在北上广深蓉很多新开项目都选择了Golang,就是看到Golang的开发效率和招人上面&br&对于Golang开发还有纠结可以看下我的博文:&a href=&///?target=http%3A///sunicdavy/archive//212611.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&服务器开发语言比较&i class=&icon-external&&&/i&&/a&&br&&br&&br&我们开发的不是MMORPG, 但是规模不小, 纯Golang开发. 从处理客户端连接, MySQL处理到跨服, 平台SDK对接都是使用Golang开发的&br&之前我的C++服务器框架也是完善的, 但和Golang比起来, 总是有一些问题, 比如说:&br&1. 总是感觉C++写出来的服务器要结实一些, 因为有强大的IDE(我们是在Windows开发Linux下运行), 强大的调试器(VS). Golang虽然没有这些, 但LiteIDE本身已经足够强大,没有之一&br&2. Golang性能调优很是方便, 性能, 内存和阻塞, 3个pdf生成节点图, 几下就能找出问题所在. C++在这点上必须用专业第三方收费工具以及自己多年的经验来分析, 很是麻烦&br&3. Golang任何错误都可以捕捉, 跨平台运行, 尤其是Linux, 比C++稳定的多. 不用担心哪天挂掉&br&4. Golang的Socket, 让你能想起当年用C语言的阻塞Socket时代. 可惜操作系统的线程不能跟goroutine同日而语&br&5. Golang语言简单, 任何语言招来, 2~3天开始生产代码, 很简单, 用的人也舒心&br&6. Golang的语言特性很好, 没有OO的冗余, 只有复合+接口的简洁. 用习惯后, 都不敢去用C#的OO, 怕继承变化需要重构&br&7. Golang 1.5比前面版本好很多, gc基本没啥大问题了. 只是自举的编译器编译速度下降了不少. 但问题不大&br&8. Golang写服务器, 因为阻塞+同步逻辑, 所以还是得考虑各种线程同步问题. 该加锁还是要加锁, 而不是一味都用channel+goroutine来实现. 毕竟channel本身是由多个锁来实现的.&br&9. Golang写tcp短连接不知道比C++简单上百倍吧, 比boost.asio这些封装库也简单个10来倍&br&http连接就更简单了, 啥都给你处理了, 只管收消息就是了&br&10. 至今为止, 坑就1个, interface{} 简直是双刃剑. 因为没泛型, 所以用interface{}等同于void*. 如果用interface{}做了map的key, 恭喜你, 迟早有一天你会调的死去活来. 还更别说interface{}与nil, 一把泪啊&br&11. 看有些写法喜欢在Golang服务器里嵌入脚本. 我们的服务器也嵌入有otto的JavaScript引擎, 但只用来做服务器配置, 方便部署. 但是没有把JavaScript拿来做逻辑. 毕竟考虑各种线程安全问题. Lua最终我们还是放弃了, 没有C++那些绑定库, 纯api编写, 都不知道是在写逻辑还是在封api.&br&12. 除了服务器以外, 我们还用Golang编写机器人, 电子表格数据导出等. &br&13. Golang开发效率很高, 一般大的游戏功能, 2*2人一周3~4个整完. 这换C++时代, 大概也就1~2个还写不完&br&14. 部署太方便了! 编译出来的可执行文件都是零依赖. 直接丢到目标机器就可以运行, 没有虚拟机之类的东西&br&&br&&br&打个广告, 各种golang开发笔记, 参考 &a href=&///?target=http%3A///sunicdavy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&战魂小筑 - C++博客&i class=&icon-external&&&/i&&/a&&br&本人的开源服务器框架, &a href=&///?target=https%3A///davyxu/cellnet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - davyxu/cellnet: 简单,方便,高效的Go语言的游戏服务器底层&i class=&icon-external&&&/i&&/a&
欢迎赏星&br&&br&用了都说好的 &a href=&///?target=https%3A///davyxu/tabtoy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - davyxu/tabtoy: 基于Protobuf的电子表格导出器&i class=&icon-external&&&/i&&/a&
============日更新=================== Golang 1.7已经rc, 很快发布. 虽然游戏服务器使用Golang无需担心gc问题, 但1.x版本的golang的底层优化的已经很给力了 LiteIDE x30版本开始支持symbol和文件列表查看. 同时支持vsdark主题, 跨平台开发Gola…
我们公司正在用Go开发页游。上线运行有一段时间了,效果还算满意。&br&&br&用Go开发大型mmorpg服务端不会有问题的,如果掉坑里肯定不会是语言的问题。&br&&br&唯一比较可能掉进去的坑就只有GC,其实很容易预防和调整的,具体细节可以看我博客分享的文章。&br&&br&但是技术选型不只是选语言,如果当时我手头有一套性能满意,开发效率OK,人员补给不会有问题的技术方案,不管是什么语言的,我肯定不会放弃它而选择冒险的。&br&&br&我去年项目立项时选择Go是有以下一些考虑的:&br&&br&1. 前一个项目用Erlang开发的,活动时间一到,密集运算CPU就受不了,这点很不满意&br&2. 项目过程中出现过补人难的情况,听过Erlang并愿意转Erlang的人少,招来了培训到加入开发又要一段时间&br&3. 因为前两点,所以新项目想找一个解决性能问题又解决人员问题的技术方案&br&4. 我自身没有C/C++项目经验,只会点皮毛语法,短时间要上手并拿出可用的框架不现实&br&5. C/C++开发人员我们这也不好招&br&6. 那会正好Go 1.0即将发布,我估摸着项目上线后Go还会更完善,有点赌一把的意思&br&7. 我给自己设想的最坏情况是Go不行的时候可以用CGO补救,当时考虑比较多的是性能,但实际上性能没问题,倒是用CGO做了GC优化,补救了自己最初设计上的不合理。&br&8. Go的语法元素非常之少,并且是类C的命令式语音,又有Google这个开发人员心中形象完美的亲爹,人员补充上应该比Erlang容易&br&&br&对了,我最近做了个Go语言的V8引擎绑定,可以用来做游戏逻辑脚步啥的。欢迎各路勇士踊跃跳坑:&a href=&///?target=http%3A///idada/go-v8& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/idada/go-v8&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&
我们公司正在用Go开发页游。上线运行有一段时间了,效果还算满意。 用Go开发大型mmorpg服务端不会有问题的,如果掉坑里肯定不会是语言的问题。 唯一比较可能掉进去的坑就只有GC,其实很容易预防和调整的,具体细节可以看我博客分享的文章。 但是技术选型不…
已有帐号?
无法登录?
社交帐号登录
主程/资深网络游戏开发者/电子及机械爱好者& & & 使用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语言,全面转移到安卓平台。Golang语言社区(Golangweb) 
 文章为作者独立观点,不代表微头条立场
的最新文章
NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"go",但是如何处理go并发机制中不同g,这篇讲另两个文件http.go、http_server.go,这两个文件和第六讲 go语言nsq源码解读六关闭2次复制代码代码如下:ch := make(chan bool) close(ch) close(ch)Go被设计为一种后台语言,它通常也被用于后端程序中。服务端程序是GO语言最常见的软件产品。在这我要解决的问题1.Abstract
在学习web开发的过程中会遇到很多困难,因此写了一篇类似综述类的文章。作为路线图从we1 .计算机网络的体系结构计算机网络是一个非常复杂的系统,将整个网络的传输功能进行分层设计的网络结构层次模型本文根据京东商城交易平台的杨超在“第一期蝴蝶沙龙:揭秘618电商大促背后的高并发架构”会议上的演讲整理而成。微信后台回复关键词「京东」,下载InfoQ官方出品《京东618架构师特刊》电子书。简介近一两年来,微服务架构已经成为热门话题( microservices.io ),与传统的一体化应用架构相go语言中的interface是一组未实现的方法的集合,如果某个对象实现了接口中的所有方法,那么此对象就实现读取速度可以使用命令:hdparm –t 设备名(/dev/sda1)写入速度使用命令:time dd if一、通常服务器的性能会卡在三个地方:cpu网络IO磁盘IO二、在优化性能的时候,首先要判断性能的瓶颈在上述的随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redgo正则表达式大全ackage testimport ( “fmt” “regexp” )func Regi//UnKonwnJSONUnmarshal jsonfunc UnKonwnJSONUnmarshal(dpackage tcp_listentype Connection interface {
Readpackage main
"encoding/json"
"fmt"func compare(spath, dpath string) bool {
sinfo, er本文牵扯的面积可能会比较泛,或者说比较大,在这个层面很多人也有自己的见解,所以我这也仅仅是抛砖引玉,结合前面序:
对Web站点扩展一开始不宜过早,除非是基于高可用性和就近部署的考虑。但对于架构师而言,在架构设计序:
即使有较长的缓存有效期和较理想的缓存命中率,但是缓存的创建和缓存过期后的重建都是需要访问数据库的序:
这里指的服务器是指提供HTTP服务的服务器,人们通常衡量一台web服务器能力的大小为其在单位时间input.html
<form action="/output" method="POS四舍六入五成双是一种比较精确比较科学的计数保留法,是一种数字修约规则,又名银行家舍入法。它比通常用的四舍五入golang反射在某些特定的场景非常有用,比如我在web开发的时候,可以通过反射将表单映射到结构体上面,并能游戏服务器之数据存档:把逻辑服务器的角色数据存档到mysql和redis,分析的是较早前的一个游戏项目的存档Linux 内核中的同步机制:原子操作、信号量、读写信号量、自旋锁的API、大内核锁、读写锁、大读者锁、RC//本程序 主要功能是把A文件夹下的文件与B目录下文件对比,如果找到就覆盖到B相应的目录下。 // 用法: Go语言提供了完善的单元测试支持,开发人员可以方便的编写测试代码,保证自己代码的质量。在目前的例子中,一般看1.创建测试文件夹mysql,文件夹下的go文件的package必须与文件夹名一致(不然会识别不到)2.创建package mainimport "fmt"import "time"//这个是工作线程,处理具体的业务缓冲区原理简介:  go字节缓冲区底层以字节切片做存储,切片存在长度len与容量cap, 缓冲区写从长度le一 环境依赖:  golang 开发环境(version >= 1.2)
下源码,配置环境这个例子是从go源码src/pkg/net/rpc/server_test.go截取出来的func bencGo语言内存模型规定了在一个goroutine中一个变量的读取的情况下,确保能够观察到在其他另外goroutrts中的寻路系统一般需要满足有以下几个条件,1. 效率高,因为rts普遍地图大,单位多,所以处理效率很重要在塔防游戏中,有许多敌人向着同一目标前进。在很多塔防游戏当中,有一条或几条事先预定好的路径。在一些中,比如经高效网游服务器实现探讨随着多核处理器的普及,如何充分利用多核并行工作就成为高性能程序设计的一个重点。本系列文网络游戏出现至今,角色扮演游戏(MMORPG)一直是个主流游戏类型。主要原因还是因为拥有丰富的交互体验,特别Golang在京东列表页实践总结作者:张洪涛10余年软件开发和设计经验,曾就职于搜狐、搜狗、前matrixj摘要 虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/一、 总的构架结构示意图:如上图所示,目前系统总的分成六个模块,分别为网络/协议解析模块,用户帐号管理模块,四、跨域解决办法关于跨域是什么,限于篇幅所限,这里不做介绍,网上有很多详细的文章,这里只列举解决办法。解决方package main
type data s前言有关IM(InstantMessaging)聊天应用(如:微信,QQ)、消息推送技术(如:现今移动端AP一致性哈希的具体介绍,可以参考:/haippy/archive/Go语言中延迟函数defer充当着 cry...catch 的重任,使用起来也非常简便,然而在实际应用中,很作者:郭无心MMORPG不同于其它的局域网的网络游戏,它是一个面向整个Internet的连接人数过万的网络游GolangwebGo 语言社区专业的Go语言开发社区,除此之外我们还研发了Go 社区APP,让用户随时随地可以了解Go语言的行业动态。热门文章最新文章GolangwebGo 语言社区专业的Go语言开发社区,除此之外我们还研发了Go 社区APP,让用户随时随地可以了解Go语言的行业动态。

我要回帖

更多关于 go语言长连接服务器 的文章

 

随机推荐