摘要: 这个问题是在一个群友做压力测试的时候发现的。使用客户端和netty创建一条连接,然后写了一个for循环不停的给服务器发送1500条信息,发现返回只有几百条。另外几百条不知道哪去了。查看代码,发现在服务器发送前做了一个判断: 通过查看源码,问题就在isWriteable()里面,下面看一下源码,在Ab 阅读全文
posted @ 2018-10-19 13:16 王广帅 阅读(5875) 评论(0) 推荐(0) 编辑
摘要: 一,配置eclipse的spring boot环境 见:https://www.cnblogs.com/wgslucky/p/9794529.html 二,添加pom引用 三,添加application.yml 四,源码下载:https://gitee.com/wgslucky/springboot 阅读全文
posted @ 2018-10-16 00:19 王广帅 阅读(1954) 评论(0) 推荐(0) 编辑
摘要: 1,在 eclipse中选择 Help->eclipse marketplace 2, 搜索安装 阅读全文
posted @ 2018-10-15 21:05 王广帅 阅读(1960) 评论(0) 推荐(0) 编辑
摘要: 在使用eclipse开发时,一般需要添加spring boot的管理插件,这样更方便我们开发,在写application.yml或properties配置的时候,也有相关的提示,而且还可以从配置文件中直接跳转到相应的配置类里面。 1,选择 Help->eclipse marketplace 2,搜索 阅读全文
posted @ 2018-10-15 20:44 王广帅 阅读(1038) 评论(0) 推荐(0) 编辑
摘要: 在游戏服务器中,线程的管理是重中之重,在上一篇文章中,已经简单说明了,在游戏服务器开多少线程合适的问题,点击这里查看 ,因为线程数量不能太多,所以为了提高游戏服务器并发性,就需要在线程处理业务的速度要快,不能长时间卡住线程,比如,不能有网络io,磁盘IO等耗时的操作。所以我们会把有限的线程数进配按需 阅读全文
posted @ 2018-10-11 00:18 王广帅 阅读(2114) 评论(0) 推荐(0) 编辑
摘要: 线程是服务器的一种希有资源,它的创建,销毁,切换都需要很多服务器的其它资源。而在游戏服务器中,只要没有在多线程之间有共享数据的操作,都是可以并发的,即可以是多线程操作的。比如不同用户各自的操作处理,或同一个用户的数据更新到数据库的操作等等。那为了提高并发性,是不是线程越多越好呢?多少才合适呢?先不说 阅读全文
posted @ 2018-10-07 13:45 王广帅 阅读(2511) 评论(0) 推荐(0) 编辑
摘要: 游戏服务器就是对游戏数据的处理及逻辑验证,一般的步骤就是: 1,接收客户端请求的数据 2,根据请求的数据找出是哪个业务的请求 3,处理业务的请求 4,更新被修改的数据。 5,返回数据给客户端。 所以按照以上的步骤,我们现在只关心业务逻辑的处理流程,这里设置一个前题,就是服务器的数据都是在内存中的。内 阅读全文
posted @ 2018-10-02 17:48 王广帅 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 在游戏服务器开发时,考虑到数据更新的性能问题,好多数据都不使用外键约束,每张表采用异步更新的方式,追求最级的一致性,但是这样做会导致数据的完整性受到影响,比如在游戏中,花了500钻石买了一个装备,钻石扣了,这时系统挂了,导致装备没有给我,这就让人受不了,只能通过客服手动找回。 还有种自动的解决方法, 阅读全文
posted @ 2018-09-08 20:36 王广帅 阅读(1735) 评论(0) 推荐(0) 编辑
摘要: 1. 游戏网关的实现:https://www.cnblogs.com/wgslucky/p/9130993.html 阅读全文
posted @ 2018-08-07 22:49 王广帅 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 1,从git上面克隆好源码之后,进入rocketmq目录,执行: mvn -Prelease-all -DskipTests clean install 2,打包完成之后,进入distribution/target目录,可以看到生成的包 第一个是未压缩的包,第二个是linux上面的压缩包; 第三个是 阅读全文
posted @ 2018-08-01 14:37 王广帅 阅读(1892) 评论(0) 推荐(0) 编辑
摘要: 1,Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom (execution: generate-effective 阅读全文
posted @ 2018-08-01 12:31 王广帅 阅读(681) 评论(0) 推荐(0) 编辑
摘要: apache rocketmq document : http://rocketmq.apache.org/community/ rocketmq 工具下载地址:https://github.com/apache/rocketmq-externals 下载rocketmq-4.2版本源码导入ecli 阅读全文
posted @ 2018-06-19 21:25 王广帅 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: 在游戏服务器中,一般相同用户的操作都会在一个指定的线程中操作,而一个线程中又会有多个用户的使用。如果对用户数据的操作进入直接入库操作,那么就会产生io操作,主要有网络io和磁盘io。所以一般我们都是采用内存缓存的方式。内存缓存数据库的方式有很多种,网上也有很多,这里只是介绍一下我的思路和实现。 首先 阅读全文
posted @ 2018-06-09 23:32 王广帅 阅读(3252) 评论(0) 推荐(0) 编辑
摘要: 上一篇(游戏服务器之网关)说了一些网关大致功能,这次说说具体的实现. 网关需要与客户端保证连接。这里网关使用Netty4来做为网络通信框架。它也是目前在Java游戏服务器开发中,长连接使用最多的框架。 1,管理与客户端的连接 客户端连接到网关之后,并且验证过之后,我们需要把连接的channel和用户 阅读全文
posted @ 2018-06-03 23:38 王广帅 阅读(8814) 评论(0) 推荐(0) 编辑
摘要: 对于运行良好的游戏来说,停服一分就会损失很多收益。因为有些小bug就停服就划不来了。在使用Java开游戏服务器时,JVM给我们提供了一些接口,可以简单做一些热更新。修复一些小Bug而不用重启服务。 JVM可以给运行中的服务器绑定一个代理,在这个代理中可以拿到Instrumentation 这个类的实 阅读全文
posted @ 2018-06-03 00:50 王广帅 阅读(9563) 评论(4) 推荐(0) 编辑
摘要: 当用户在大厅登陆成功之后,大厅会分配一个网关的地址给客户端。客户端与这个网关建立长连接,负责与服务器的通信。网关的主要功能有: 消息解析 与客户端保持连接 消息合法性验证 转发消息到业务服务 流量限制 版本验证等。 可扩展性 请求信息转发 一般的功能都可以随便添加。这里主要说一下消息转发。对于客户端 阅读全文
posted @ 2018-05-26 16:01 王广帅 阅读(8836) 评论(4) 推荐(2) 编辑
摘要: 大厅就是一个房间的入口。对于游戏服务器来说就是一个用户进入游戏的入口。他的主要功能一般有 登陆,注册, 网关选择, 用户身份验证, 版本管理, 区列表管理。 公告显示等。 从架构上来说,大约如下图: 大厅是为了游戏后面的内容服务器的。所以有些通用的功能会在这里实现。为了增加效率,登陆之后的用户信息可 阅读全文
posted @ 2018-05-26 13:29 王广帅 阅读(993) 评论(0) 推荐(0) 编辑
摘要: 不管是游戏服务器开发,还是其它服务开发,越来越多的平台都要求服务端必须支持https的访问。以增加安全性。比如目前火热的小程序,要求服务端必须支持https,苹果商店也有说http请求要修改为https。所以https将会是游戏服务器的普遍需求。 一,证书生成 证书可以自己使用jdk生成进行测试。但 阅读全文
posted @ 2018-05-26 10:49 王广帅 阅读(8086) 评论(0) 推荐(1) 编辑
摘要: 一台服务器的承载量是有限的,对于一个区来说,平时可能只需要支持500到1500人左右,这样一台服务器可能就可以搞定,但是如果有运营搞活动,打广告拉流量,可能一个区的承载量需要支持300到6000的量,甚至更多。为了适应这样的不同情况,在游戏服务器设计的时候,最好能做到服务器可以动态扩展和收缩,可以根 阅读全文
posted @ 2017-07-23 21:36 王广帅 阅读(1389) 评论(0) 推荐(0) 编辑
摘要: 一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的。所以棋牌类服务器要满足随着用户量的增加而扩展的需要。 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个 阅读全文
posted @ 2017-02-21 22:00 王广帅 阅读(22432) 评论(3) 推荐(0) 编辑