go游戏开发
丁玲隆咚呛
这个作者很懒,什么都没留下…
展开
-
三分钟读懂ZeroMQ
为什么需要ZeroMQZeroMQ可以分开来看Zero MQ,MQ就是Message Queue消息队列。Zero是零,它代表零中间件(None-Broker)、零延迟,同时,它又有了新的含义:零管理、零成本、零浪费。总的来说,零表示最小、最简,这是贯穿于该项目的哲理。致力于减少复杂程度,提高易用性。消息队列有四个典型应用场景:异步处理:任务并行,减少响应时间应用解耦:无上下文,无状态,...原创 2020-03-23 19:34:56 · 2362 阅读 · 0 评论 -
游戏微服务架构设计:挂机类游戏
挂机类游戏如何做分布式?游戏分五类节点设计:Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、加权重等。Connector连接服:每一个用户一个连接,连接绑定用户的ID。主要由它发起其它服务的RPC,代客户端向后台请求服务。Login登入服:做登入验证,账号相关的一切服务。Use...原创 2020-02-29 18:42:30 · 538 阅读 · 0 评论 -
游戏微服务架构设计:io游戏
什么是io游戏,就是一类的开房间小游戏。如《野蛮人大作战》。这种游戏怎么做分布式?Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、加权重等。Connector连接服:每一个用户一个连接,连接绑定用户的ID。主要由它发起其它服务的RPC,代客户端向后台请求服务。Lobby大厅:登入...原创 2020-02-29 18:43:16 · 491 阅读 · 0 评论 -
游戏微服务架构设计:MMORPG
有同学想做MMORPG,不知道怎么做分布式,下面是我的思考,抛砖引玉。首先,微服务下不是服务分的越细越好,只要独立可共享的业务适合做成微服务,比如支付。不光项目内用,还可以和其它项目共用。避免重复开发。如上设计分成五个节点服务。分别介绍:Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、...原创 2020-02-29 18:40:19 · 1166 阅读 · 1 评论 -
游戏微服务架构设计:异步回调
在处理客户端请求时,需要立即返回,把一些工作交给后台线程执行时,就会需要用到异步回调。在node.js中使用async很美,例如:async.waterfall([ function(callback) { callback(null, 'one', 'two'); }, function(arg1, arg2, callback) { //...原创 2020-02-29 14:58:33 · 472 阅读 · 0 评论 -
游戏微服务架构设计:etcd
为什么是etcd服务发现解决方案有很多,为什么不是zookeeper,consul等。马蜂窝技术做了个压测:可以发现,etcd性能稳定,资源占用最少。此外,etcd相比其它还使用简单,部署方便。而且也是go开发的,同源。服务发现etcd不是一个高可用的分布式键值(key-value)数据库吗?它是怎么实现服务发现的?实现机制是这样的:服务节点可以在etcd中注册服务名和节点地址,并且...原创 2020-02-23 21:23:32 · 488 阅读 · 0 评论 -
分布式游戏开发:js的Number与go的int64转换
开发分布式游戏在许多地方会用到唯一ID。使用int64类型相比字符串的优点是方便索引,这样比较高效。比如在kudos框架开发的游戏中,玩家ID和session的ID,游戏中的实例ID都使用的int64类型。但是在与js的通信时,int64转成Number时就会丢失精度。这是一个坑,推荐的解决办法是转成字符串传输。因为Javascript的Number存储使用了IEEE 754中规定的双精度浮...原创 2020-02-22 17:32:08 · 787 阅读 · 0 评论 -
游戏微服务架构设计:连接的负载均衡
游戏设计时,如果只有一个登入服,当连接数上来的话,登入服务器肯定难以重负,直接崩溃宕机。所以设计多个登入服务器来分担负载是很有必要的。传统模式创建一个网关服务器,里面存储所有连接服的地址信息。通过轮询或其它算法返回连接服的地址。这样,游戏先访问网关,拿到连接服的地址后,再连接该服务器,登入游戏。如下图:缺点:如果连接服挂了一个,或是添加了一个连接服connector,都需要重启一下gate...原创 2020-02-22 17:28:47 · 793 阅读 · 0 评论 -
kudos性能是pomelo的5倍
本测试与pomelo进行了横项对比。kudos: https://github.com/kudoochui/kudos测试硬件macbook pro:cpu: 2.7 GHz Intel Core i5内存: 8 GB 1867 MHz DDR3测试场景起一个连接同时发10000个包。包的内容是{Words:“kudoo”},服务端响应{Words:“hello kudoo”...原创 2020-02-15 16:59:49 · 940 阅读 · 0 评论 -
开源一个服务端游戏开发框架
本人也是因为go的魅力从原来的node.js转go开发的,但并没有放弃node.js开发。node.js开发起来极为舒服,谁用谁知道。go的性能,并发,静态编译速度还是更令人着迷,在云计算,区块链等未来领域的发展也是极为看好。之前游戏开发所使用的是网易的pomelo框架,它应该是游戏开发中node.js领域的主流框架。pomelo使用过程中遇到几个痛点:性能提升:pomelo适合做IO密集型...原创 2020-02-14 11:55:37 · 1068 阅读 · 0 评论