书籍详情
《Java游戏服务器架构实战王广帅计算机与互联网》[23M]百度网盘|亲测有效|pdf下载
  • Java游戏服务器架构实战王广帅计算机与互联网

  • 出版社:人天书店图书专营店
  • 热度:12166
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

  商品基本信息,请以下列介绍为准
商品名称:Java游戏服务器架构实战
作者:王广帅
定价:79.0
出版社:邮电出版社
出版日期:
ISBN:9787115540478
印次:
版次:null
装帧:
开本:16开

  内容简介

为了帮助服务器开发人员更好地理解服务器框架的设计与开发,本书从零开始,详细阐述游戏服务器设计与开发的流程和技术点,包括网络通信、分布式架构设计、内部RPC通信、数据管理、多线程管理,并从实践的角度出发,配合详细的源码,帮助广大游戏服务器开发人员,或正在考虑从事游戏服务器开发的人员,更加系统地学器架构的设计与开发。

本书实用性强,既可以帮助想从事服务器开发的人员快速学知识,又可以帮助服务器开发人员向架构阶。


  目录

第 1章 游戏服务器架构总体设计01

1.1 游戏服务器架构设计的意义 01

1.1.1 良好的架构设计有助于团队协作开发 01

1.1.2 良好的架构设计有助于避免bug 的产生 02

1.1.3 良好的架构设计有助于制定合理的项目开发周期计划 02

1.1.4 良好的架构设计有利于测试 03

1.2 游戏服务器架构分类 03

1.2.1 单体游戏服务器架构 03

1.2.2 分布式游戏服务器架构 05

1.3 游戏服务器架构基本模块 06

1.3.1 网络通信长连接与短连接 06

1.3.2 网关 07

1.3.3 服务消息交互——消息中间件 08

1.3.4 业务处理框架 09

1.3.5 测试模块 11

1.4 本章总结11

第 2章 服务器项目管理——Maven 12

2.1 Eclipse 中配置Maven 工具 12

2.1.1 Maven 与配置 12

2.1.2 Maven 环境变量配置 13

2.1.3 Maven 常用命令示例 15

2.2 搭建Maven 仓库中心 16

2.2.1 安装Nexus 16

2.2.2 在Maven 中配置 19

2.2.3 添加非开源依赖Jar 包 21

2.3 创建Maven 项目21

2.3.1 创建父项目 22

2.3.2 创建子项目 23

2.4 本章总结23

第3章 数据库选择与安装24

3.1 数据持久化——MongoDB 24

3.1.1 为什么使用MongoDB 24

3.1.2 安装MongoDB 25

3.2 内存型数据库——Redis 28

3.2.1 为什么使用Redis 28

3.2.2 安装Redis 29

3.2.3 使用Redis 缓存需要注意的事项 30

3.3 本章总结32

第4章 游戏服务中心开发33

4.1 游戏服务中心的作用 33

4.1.1 游戏服务游戏外围服务 33

4.1.2 游戏服务中心方便动态扩展 34

4.2 游戏服务中心开发准备 34

4.2.1 根据需求设计架构 34

4.2.2 Spring Cloud 简介 36

4.2.3 安装Spring Tool 插件 37

4.2.4 添加公共pom 依赖 38

4.3 用户登录能开发 40

4.3.1 创建游戏服务中心项目 41

4.3.2 网络通信数据格式定义 43

4.3.3 添加数据库作 45

4.3.4 实现登录注册 50

4.3.5 全局异常捕获处理 55

4.3.6 登录注册测试 56

4.3.7 实现角色创建 57

4.3.8 角色创建测试 59

4.4 本章总结60

第5章 Web 服务器网关开发 61

5.1 Consul 服务注册中心 61

5.1.1 Consul 简介 61

5.1.2 安装Consul 62

5.2 Web 服务器能开发 63

5.2.1 Spring Cloud Gateway 简介 63

5.2.2 创建Web 服务器网关项目 64

5.2.3 网关路由信息配置 66

5.2.4 测试Web 服务器网关请求转发 68

5.3 统一验证请求权限 69

5.3.1 在Web 服务器网行权限验证的必要性 69

5.3.2 网关全局过滤组件——GlobalFilter 71

5.3.3 GlobalFilter 实现权限验证 72

5.3.4 测试网关权限验证 74

5.4 请求负载均衡 76

5.4.1 负载均衡组件——Spring Cloud Ribbon 76

5.4.2 自定义负载均衡策略 77

5.4.3 负载均衡策略配置 80

5.5 网关流量限制 81

5.5.1 常见的限流算法 81

5.5.2 添加Web 服务器网关限流策略 83

5.5.3 Web 服务限流测试 86

5.6 HTTPS 请求配置 86

5.6.1 HTTPS 简介 86

5.6.2 HTTPS 证书申请 87

5.6.3 网关服务配置HTTPS 证书 89

5.6.4 测试HTTPS 访问 90

5.7 服务错误异常全局捕获 92

5.7.1 默认全局Web 异常捕获 92

5.7.2 自定义全局Web 异常捕获 93

5.7.3 异常捕获测试 95

5.8 本章总结96

第6章 游戏服务器网关开发97

6.1 游戏服务器网关管理 97

6.1.1 游戏服务器网关必须支持动态伸缩 97

6.1.2 游戏服务器网关项目搭建与配置 99

6.1.3 游戏服务器网关信息缓存管理 101

6.1.4 游戏服务器网关负载均衡策略 105

6.1.5 测试游戏服务器网关信息 107

6.2 客户端与游戏服务器网关通信开发 109

6.2.1 客户端项目创建 109

6.2.2 网络通信数据粘包与断包 117

6.2.3 网络通信协议制定 119

6.2.4 客户端消息编码与解码开发 121

6.2.5 游戏服务器网关消息编码与解码开发 124

6.2.6 使用Netty 实现游戏服务器网关长连接服务 127

6.3 请求消息参数与响应消息参数对象化 130

6.3.1 请求与响应消息封装 130

6.3.2 客户端与游戏服务器网关通信测试 137

6.4 消息体对象序列化与反序列化 139

6.4.1 消息体使用JSON 序列化与反序列化 140

6.4.2 消息体使用Protocol Buffers 序列化与反序列化 142

6.5 消息自动分发处理 146

6.5.1 消息自动分发设计 147

6.5.2 消息自动分发开发 148

6.6 网络通信 152

6.6.1 连接认证 152

6.6.2 通信协议加密和解密 154

6.6.3 游戏服务器网关流量限制 158

6.7 网络连接管理 159

6.7.1 连接管理 159

6.7.2 连接心跳检测 163

6.7.3 消息幂等处理 167

6.8 本章总结168

第7章 游戏服务器网关与游戏业务服务数据通信169

7.1 游戏服务器网关与游戏业务服务通信定义 169

7.1.1 游戏服务器网关消息转发 169

7.1.2 定义消息通信模型 170

7.1.3 Spring Cloud Bus 消息总线 173

7.1.4 消息总线通信层——Kafka 174

7.1.5 消息总线消息发布订阅测试 178

7.2 游戏服务器网关与游戏业务服务通信实现 178

7.2.1 消息序列化与反序列化实现 179

7.2.2 游戏服务器网关消息负载均衡 181

7.2.3 游戏服务器网关消息转发实现 185

7.2.4 游戏服务器听接收响应消息 189

7.2.5 添加游戏业务服务项目 190

7.2.6 游戏服务接收并响应网关消息 193

7.3 游戏服务器网关与游戏服务通信测试 195

7.4 本章总结197

第8章 游戏业务处理框架开发198

8.1 游戏服务器中的多线程管理 198

8.1.1 线程数量的管理 198

8.1.2 游戏服务线程池分配 200

8.2 Netty 线程池模型 200

8.2.1 Netty 线程模型的核心类 201

8.2.2 获取线程池执行结果 202

8.3 客户端消息处理管理 205

8.3.1 借鉴Netty 的消息处理机制 205

8.3.2 客户端消息事件处理框架模型 209

8.3.3 实现自定义MultithreadEventExecutorGroup 213

8.3.4 实现GameChannel 217

8.3.5 实现GameChannelPipeline 220

8.3.6 实现AbstractGameChannelHandlerContext 222

8.3.7 实现客户端消息处理与消息返回 224

8.3.8 GameChannel 空闲超时处理 228

8.4 不同游戏用户之间的数据交互 236

8.4.1 多线程并发作数据导致的错误或异常 237

8.4.2能设计上避免用户数据之间的直接交互 239

8.4.3 在架构设计上解决用户数据之间的直接交互 239

8.4.4 GameChannel 事件自动分发处理 243

8.5 本章总结245

第9章 游戏用户数据管理246

9.1 游戏用户数据异步加载 246

9.1.1 加载游戏数据的时机 246

9.1.2 异步加载游戏数据实现 247

9.2 游戏数据持久化到数据库 250

9.2.1 游戏数据持久化方式 250

9.2.2 异步方式持久化数据的并发问题 251

9.2.3 数据定时异步持久化实现 253

9.3 Player 对象的封装与使用 256

9.3.1 直接作Player 对象的弊端 256

9.3.2 实现Player 对象数据与行为分离 258

9.4 本章总结260

第 10章 RPC 通信设计与实现 261

10.1 游戏模块服务划分 261

10.1.1 游戏服务需不需要微服务化 261

10.1.2 游戏服务模程划分规则 263

10.2 RPC 通信实现 264

10.2.1 自定义RPC 设计 264

10.2.2 负载均衡管理 268

10.2.3 创建竞技场服务项目 274

10.2.4 RPC 请求消息的发送与接收 281

10.2.5 RPC 响应消息的发送与接收 290

10.2.6 RPC 请求超时检测 292

10.3 本章总结293

第 11章 事件系统的设计与实现294

11.1 事件系统在服务器开发中的重要性 294

11.1.1 什么是事件系统 294

11.1.2 事件系统可以解耦模块依赖 295

11.1.3 事件系统使代码更容易维护 296

11.2 事件系统的实现 296

11.2.1 自定义基于监听接口的事件系统 297

11.2.2 自定义基于注解的事件系统 299

11.2.3 Spring 事件系统应用304

11.3 根据事件实现的任务系统 306

11.3.1 任务系统需求 307

11.3.2 面向过程的任务系统实现 308

11.3.3 面向对象的事件触发式任务系统实现 309

11.4 本章总结 314

第 12章 游戏服务器自动化测试315

12.1 游戏服务器自动化测试的重要性 315

12.1.1 单元测试使代码更简洁 315

12.1.2 单元测试保证方法的代码正确性 321

12.1.3 自动化测试保证代码重构的性 323

12.2 游戏服务器自动化测试的实现 323

12.2.1 TestNG 框架简介 324

12.2.2 Spring Boot 单元测试配置 325

12.2.3 方法单元测试案例实现 329

12.2.4 服务器集成测试实现 336

12.2.5 使用TestNG 配置文件区分不同的测试环境 340

12.3 本章总结342

第 13章 服务器开发实例——聊天系统 343

13.1 单服聊天系统实现 343

13.1.1 添加客户端命令 344

13.1.2 服务器实现消息转发 348

13.1.3 单服聊天测试 349

13.2 分布式聊天系统实现 352

13.2.1 分布式聊天系统设计 352

13.2.2 创建单独的聊天项目 354

13.2.3 实现聊天消息的发布与转发 356

13.2.4 分布式聊天服务测试 359

13.3 本章总结360


  编辑推荐

1.系统:项目从零搭建,帮助读者实现各个重要模能开发,系统阐述游戏服务器架构设计与开发;

2.全面:从设计到开发,全面解析架构的实现过程,涵盖Java开发的各种热门技术;

3.深入:按游戏服务器开发流程,详细讲解技术要点,让你快速成为架构师,实现职位提升;

4.提供实践项目源代码,提率;

5.提供完善的技术支持和售后服务。


  前言

  为什么要写这本书  随着互联网的发展和人们生活的提高,人们对文化娱乐的需求也越来越高,网络游戏已经成为人们娱乐生活中重要的一部分,而游戏服务器开发一直是网络游戏开发的核心。很多从事计算机编程的人都希望能快速融入游戏服务器开发的行业中。.Java是行的服务器编程语言,随着Spring的出现,已经形成了一个完善的Java开发生态系统。目前市场上大多数服务器开发的图书都是关于Web服务器开发的,而游戏服务器开发的图书相对较少,系统讲述使用.Java语言开发服务器的图书更少。

对于想要从事游戏服务器开发的人员来说,系统了解游戏服务器开发流程、架构设计是很有必要的。在一些游戏服务器开发的技术讨论群中,经常看到一些入游戏服务器行业的人员重复提出一些开发问题,也有一些从事游戏服务器开发几年的人,提出如何从业务开发人员转向游戏服务器架构师以及如何更好地设计分布式架构等问题。

因此,为了帮助更多的开发人员更好地从事游戏服务器开发,本书由浅入深,理论结合实践,系统阐述游戏服务器开发相关知识。 

本书有何 

1.项H附带完善的源码,提率  为了便于读者理解本书内容,提率,本书从零开始,循序地阐述游戏服务器开发流程,并在附赠资源里提供实践项目源码。      2.涌盖Java开发的各种热门技术  本书涵盖MavenSpring BootSpling(loudNetty1"estNGSpring Shell等热门技术及Kafka消息中间件、Mong01)B数据库等核心内容。       3.注童实际应用和解决问题的方案  由于游戏服务器开发是一个综合技术的应用,本书以项目的实际应用为目标,着重讲解解决问题的思路和解决方案,这样可以让读者更快速地理解各个模块的内容。

4.项目完整。稍加修改即可使用

本书提供了完整的实践项目,开发人员根据自己的需求,稍加修改即可使用。

5.提供完善的技术支持和售后服务

本书提供了专门的技术支持邮箱(291123097@qqcom),以及交流群(398808948)。读者可通过这两种方式获取配套源码,在阅读本书过程中有任何疑问也可通过这两种方式获得帮助。 

适合阅读本书的读者 

·想从事游戏服务器开发工作的Web开发人员。 

·想从事游戏服务器开发工作的JaVa开发人员。 

·目前从事游戏服务器开发的人员。 

·想成为游戏服务器架构师的游戏开发人员。 

·游戏服务器架构师。 

阅读本书的建议 

没有游戏服务器开发经验的读者,建议从第l章顺次阅读并演练每一个实例。 

有一定服务器开发经验的读者,可以根据实际情况有地选择阅读各个模块和项目案例。

编者


  摘要

1  游戏服务器架构总体设计

在设计开发软件系统的时候,我们首先想到的就是系统架构设计。游戏服务器也是一个庞大的软件系统,需要花费适当的时行架构设计和开发,这样做的目的是实现系统的易维护性、稳定性、可扩展性及实用性。本章涉及的知识点如下。

·了解游戏服务器架构设计的意义。

·了解基本的游戏服务器的架构分类。

·  了解基本架构每个模块的能。

11游戏服务器架构设计的意义

架构即规则,架构的设计其实也是规则的设计。俗话说:  “无规矩不成方圆”。游戏服务器架构设计就是为整个游戏服务器开发制定规则,让开发团队在这个规则下,快速、正确地完成任务。因此,我们需要知道架构设计的意义,明其理,方能行其事。

11良好的架构设计有助于团队协作开发

众所周知,在一个游戏服务器开发团队中,不同成员的专业能力、思考能力、学、沟通能力各不相同。那么团队成员如何在短时间内提升能力,如何尽快融入项目开发呢?相互协作是最重要的一种方式。

游戏服务器架构设计的目的就是统一规则、划分模块、定义职责,使团队中的人能各司其职、有条不紊地完成工作,使团队协作更加紧密、协调。游戏服务器架构是团队协作的基础,譬如高楼之基。如果没有这个基础,人员再多,也是无处下手,无所适从。即使勉强堆砌,后期亦可能推倒重建,就像一个没有规划的城市一样,随意搭建的结果一定是混乱不堪。因此失败的案例数不胜数。其根本原因就是没有设计好前期架构,导致后面越开发代码越乱,整个项目变得臃肿,而在时间上又不允许重建架构。

一个良好的游戏服务器架构设计,应该有其明确的脉络,反映出一种设计思想。架构设计包含如网络如何通信,数据如何缓存、如何持久化到数据库,如何添加新的能而不影能,以及如何保证线程等问题。架构设计让整个系统有一个明确的层次、统一的风格、清晰的接口定义和调用规则,而没有重复的代码。架构设计的目的就是制定一些规则。让所有团队成员都遵守这些规则。在这个基础上团队成员就可以迅速地实现并行开发能,并能的正确性,减少返工现象,缩短项目开发周期。

11良好的架构设计有助于避免bug的产生

架构设计也是经验的总结。一般来说,一的商业化游戏服务器项目,它的架构都是由从事游戏服务器开发多年、经验丰富的人设计开发的。通过经验的总结,把容易出错的公共部分使用架构来规避,并且通过严密的测试,最终实现消除隐患。

比如涉及网络通信的问题,有的开发人员在设计的时候,只考虑接收客户端的消息,并且实现正常返回消息即可,而没有考虑到多线程处理消息,导致数据不一致,出现一些莫名其妙的问题。是以Web服务作为服务器的时候,因为Web服务底层接收的消息会被放到一个固定大小的线程池中,所以每个HTTP请求在controllel’中处理的时候,都可能在不同的线程里面。如果出现并发请求,就有可能导致数据错误。

在架构设计中可以提交预知并解决这个问题。比如给同一个用户请求的消息加锁或者把请求消息分配到固定的消息队列中,由另外的线程按顺序取出消息并处理。这样在处理业务的时候,就不需要担心请求并发问题了,防止开发业务时考虑不周而产生bug

11良好的架构设计有助于制定合理的项目开发周期计划

在项目开发的过程中,时间是的。游戏产品开发是一个长期的过程,但是也有严格的周期限制。在整个开发过程能开发和测很大一部分时间,而架构设计是能快速开发的基础。

架构设计必须从项目的全局来考虑和衡量。架构设计的完成不是一蹴而就的,在项目开发过程中,由于新需求的出现,需要不断地修改或扩展架构,慢慢使其完善。良好的架构设计,需要预知项目能是公共的、是可以在架构中实现的,这样可以减少重复代码,提前为不同的业务开发提供服务……

  作者简介

王广帅

2011入游戏行业,一直致力于Java游戏服务器开发。2014年开始负责创业游戏公司的服务器架构设计工作,带领团队参与网页游戏、手机游戏、2D游戏、3D游戏、卡牌类游戏、多人在线(MMO)类游戏的服务器开发,积累了丰富的游戏服务器架构设计与开发经验。业余时间,经常在群(66728073)、个人微信公众号(youxijishu)、技术博客分享游戏服务器开发的技术经验,并且独立维护一个专业的游戏开发——游戏技术网。