自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 游戏微服务架构设计:io游戏

什么是io游戏,就是一类的开房间小游戏。如《野蛮人大作战》。这种游戏怎么做分布式?Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、加权重等。Connector连接服:每一个用户一个连接,连接绑定用户的ID。主要由它发起其它服务的RPC,代客户端向后台请求服务。Lobby大厅:登入...

2020-02-29 18:43:16 469

原创 游戏微服务架构设计:挂机类游戏

挂机类游戏如何做分布式?游戏分五类节点设计:Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、加权重等。Connector连接服:每一个用户一个连接,连接绑定用户的ID。主要由它发起其它服务的RPC,代客户端向后台请求服务。Login登入服:做登入验证,账号相关的一切服务。Use...

2020-02-29 18:42:30 515

原创 游戏微服务架构设计:棋牌游戏

棋牌游戏怎么做分布式?Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、加权重等。Connector连接服:每一个用户一个连接,连接绑定用户的ID。主要由它发起其它服务的RPC,代客户端向后台请求服务。Lobby大厅:登入直接在这里做了,单独起个Login节点做登入验证也可以,但是觉...

2020-02-29 18:41:31 867

原创 游戏微服务架构设计:MMORPG

有同学想做MMORPG,不知道怎么做分布式,下面是我的思考,抛砖引玉。首先,微服务下不是服务分的越细越好,只要独立可共享的业务适合做成微服务,比如支付。不光项目内用,还可以和其它项目共用。避免重复开发。如上设计分成五个节点服务。分别介绍:Gate这个连接用来做负载均衡,只是为了获取连接服的连接地址用,客户端连接后,拿到连接服的IP和端口就断开。其中,如何选择连接服的策略可以是随机、轮询、...

2020-02-29 18:40:19 1131 1

原创 游戏微服务架构设计:异步回调

在处理客户端请求时,需要立即返回,把一些工作交给后台线程执行时,就会需要用到异步回调。在node.js中使用async很美,例如:async.waterfall([ function(callback) { callback(null, 'one', 'two'); }, function(arg1, arg2, callback) { //...

2020-02-29 14:58:33 463

原创 游戏微服务架构设计:etcd

为什么是etcd服务发现解决方案有很多,为什么不是zookeeper,consul等。马蜂窝技术做了个压测:可以发现,etcd性能稳定,资源占用最少。此外,etcd相比其它还使用简单,部署方便。而且也是go开发的,同源。服务发现etcd不是一个高可用的分布式键值(key-value)数据库吗?它是怎么实现服务发现的?实现机制是这样的:服务节点可以在etcd中注册服务名和节点地址,并且...

2020-02-23 21:23:32 460

原创 分布式游戏开发: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 769

原创 游戏微服务架构设计:连接的负载均衡

游戏设计时,如果只有一个登入服,当连接数上来的话,登入服务器肯定难以重负,直接崩溃宕机。所以设计多个登入服务器来分担负载是很有必要的。传统模式创建一个网关服务器,里面存储所有连接服的地址信息。通过轮询或其它算法返回连接服的地址。这样,游戏先访问网关,拿到连接服的地址后,再连接该服务器,登入游戏。如下图:缺点:如果连接服挂了一个,或是添加了一个连接服connector,都需要重启一下gate...

2020-02-22 17:28:47 771

原创 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 933

原创 开源一个服务端游戏开发框架

本人也是因为go的魅力从原来的node.js转go开发的,但并没有放弃node.js开发。node.js开发起来极为舒服,谁用谁知道。go的性能,并发,静态编译速度还是更令人着迷,在云计算,区块链等未来领域的发展也是极为看好。之前游戏开发所使用的是网易的pomelo框架,它应该是游戏开发中node.js领域的主流框架。pomelo使用过程中遇到几个痛点:性能提升:pomelo适合做IO密集型...

2020-02-14 11:55:37 1041

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除