精华内容
下载资源
问答
  • 游戏服务器架构简介

    2019-08-27 22:55:15
    这些会为我们的开发省下不少时间,对于游戏服务器的架构设计,我们首先要了解游戏的服务器架构有什么组成?一款游戏到上线,需要具备哪些功能?游戏架构本身代表是一个体系,它包括: 1.系统初始化 系统初始化是...

      游戏的架构设计非常重要,好的架构代码清晰,责任明确,扩展性强,易于调试。这些会为我们的开发省下不少时间,对于游戏服务器的架构设计,我们首先要了解游戏的服务器架构都有什么组成?一款游戏到上线,需要具备哪些功能?游戏架构本身代表是一个体系,它包括:

    1.系统初始化

    系统初始化是在没有客户端链接的时候,服务器启动时所需要做的工作。基本上就是配置文件的读取,初始化系统参数

    但是需要注意一些问题:
    系统初始化需要的参数配置在哪儿,是配置在本地服务器还是配置在数据库。

    服务器启动的时候去数据库取;

    配置的修改需不需要重启服务器等;

    2.游戏逻辑

    代码必须分层,不然后期要修改需求,比较麻烦,Netty是目前比较流行的NIO框架。

    协议层,也叫后台交互层,它主要负责前台交互协议的解析和返回数据。在这一层基本上没有什么业务逻辑实现。与前台交互的数据都在这一层开始,也在这一层终止。比如用Netty框架,那么Netty的Ctx只能出现在这一层,他不能出现到游戏业务逻辑代码的实现中,接收到客户端的请求,在这一层把需要的参数解析出来,再把参数传到业务逻辑方法中,业务逻辑方法处理完后,把要返回给客户端的数据再返回到这一层,在这一层组织数据,返回给客户端,这样就可以把业务逻辑和网络层分离,业务逻辑只关心业务实现,而且也方便对业务逻辑进行单元测试。

    业务逻辑层,这里处理真正的游戏逻辑,该计算价格计算价格,该通关的通关,该计时的计时。该保存数据的保存数据。但是这一层不直接操作缓存或者数据库,只是处理游戏逻辑计算。因为业务逻辑层是整个游戏时间的处理核心,所以他的处理是否正确直接决定游戏的正确性。所以这一层的代码要尽量使用面向对象的方法去实现。不要出现重复代码或相似的功能进行复制粘贴

    这样修改起来十分不便,可能是修改了某一处,而忘记修改另外同样的代码。还要考虑每个方法都是可测试的,一个方法的行数最好不要超过一百行。另外可以多爱看设计模式的书,它可以帮助我们设计出灵活,整洁的代码。

    3.数据库系统

    数据库是存储数据的核心,但是游戏数据在存储到数据库的时候会经过网络和磁盘的IO,它·的访问速度相对于内存来说是很慢的。一般来说每次访问数据库都要和数据库建立链接,访问完成之后,为了节省数据库的链接资源,再把链接断开。

    但是这种链接无形中又为服务器增加额开销,在大量的数据访问时,可能会更慢,而游戏又是要求低时延的,这时该怎么办?

    有一个数据库连接池,即把访问数据库的链接放到一个地方管理,用完不断开,用的时候去拿,用完再放回去。这样不用每次都建立新的链接了。

    但是如果要我们自己去实现一套连接池管理组建的话,需要时间不说,对技术的把控又是一个考验,还要经过测试等等,幸好互联网开源的今天,有一些先成的可以使用,这里推荐Mybatis,即实现了代码与SQL的分离,又有足够的SQL编写的灵活性,是一个不错的选择。

    4.缓存系统

    游戏中,客户端与服务器的交互就是要求低时延的,延迟越低,用户体验越好。像之前说过的一样,低时延就是要求服务器处理业务尽量的快,客户端一个请求过来,要在最短的时间内相应结果,最低不得超过500ms,因为加上来回的网络传输消耗,基本上就是600ms-700ms,再长就会觉得卡。

    如果直接从数据库中取数据,处理完之后再·存回数据库的话,这个性能是跟不上的。在服务器,数据在内存中处理是最快的,所以我们要把一部分常用的数据提前加载到内存中。比如说游戏数据配置表,经常登录的玩家数据等。这样在处理业务时,就不用走数据库了,直接从内存中取就可以了,速度更快。

    游戏中常见的缓存:

    1.直接把数据存储在JVM或服务器内存中

    2.使用第三方缓存工具,推荐Redis.

    5.游戏日志

    日志一定要记录详细。它是玩家在整个游戏中的行为记录,有了这个记录,我们就可以分析玩家的行为,查找游戏的不足,在处理玩家在游戏中的问题时·,日志也是一个良好的凭证和快速处理方式。

    在游戏中,日志分为:

    1.系统日志,主要记录服务器的系统情况。比如:数据库能否正常链接,服务器是否正常启动,数据是否正常加载;

    2.玩家行为日志,比如玩家发送了什么请求,得到了什么物品,消费了多少货币等等。

    3.统计日志,这种日志是对游戏中所有玩家某种行为的一种统计,根据这个统计来分析大部分玩家的行为,得出一些共性或不同之处,以方法运营做不同的活动吸引用户消费。

    在架构设计中,日志记录一定要作为一种强制行为,因为如果不强制的话,可能由于某种原因某个功能忘记加日志了,那么当这个功能出问题了,或者运营跟我们要这个功能的一些数据库,就GG了,又得加需求,改代码了。日志一定要设计一种良好的格式。日志记录的数据要容易读取,分解。日志行为可以用枚举描述,在功能最后的处理方法里面加上这个枚举作为参数,这样不管谁在调用这个方法时,都要去加参数描述。

    6.游戏管理工具

    俗话说,工欲善其事,必先利其器。游戏管理工具是对游戏运行种的一系列问题处理的一种工具。它不仅是给开发人员用,大多是给运营是哟个。游戏上线后,我们需要针对线上的问题进行不同的处理。不可能把所有问题都让程序员去处理,于是程序员们想到了一个办法,做个工具,爱谁谁。

    这个管理工具是一个不断增涨的系统,因为它很多时候是伴随着游戏种遇到的问题而实现的。

    但是根据经验,有些是必须有的,比如:

    服务器管理,主要负责服务器的开启,关闭,服务器配置信息,玩家信息查询;

    玩家管理,比如踢人,封号;

    统计查询,玩家行为日志查询,统计查询,次留率查询,邮件服务,修改玩家数据等。

    根据游戏的不同需求,凡是可以通过工具实现的,都做到游戏管理工具里面。它是针对所有服务器的管理。

    一个好的,全的游戏管理工具,可以提高游戏运营中遇到问题处理的效率,为玩家提供更好的服务。

    7.公共服务组件

    公共服务组件是为游戏运行中提供公共的服务。例如:

    充值服务器,我们没必要一个服用一个充值,而且也不能对外提供多个充值服务器地址,和第三方公司对接,他们绝对不干。

    还有运营搞活动时的礼包码;

    还有注册用户的管理,玩家一个注册账号可以进不同的区等。

    这些都是对所有区服提供的服务,所以要单独做,与游戏逻辑分开,这样方便管理,部署和负载均衡。

    还有SDK登录验证,现在手游比较多,与渠道对接里要进行验证,这往往是很多http请求,速度慢,所以这个也要拿出来单独做,不要在游戏逻辑中去验证,因为网络IO的访问时间是不可控制的,http是阻塞的请求。

    所以,综上来看,一个游戏服务器起码有几个大的功能模块:

    游戏逻辑工程;

    日志处理工程;

    充值工程;

    游戏管理工具工程;

    用户登录工程;

    公共活动工程;

    根据游戏的不同需要,可能还有其他的。所在架构的设计中,一定要考虑到系统的分布式部署,,尽量把公共的功能拆出来做,这样可以增强系统的可扩展性。

    展开全文
  • 《.NET高级调试》内容主要包括调试工具简介、CLR基础、基本调试任务、程序集加载器、托管堆与垃圾收集、同步、互用性以及一些高级主题,如事后调试、一些功能强大的调试工具和.NET 4.0中的新功能等。这是一本介绍...
  • linux 跟踪工具

    2018-11-01 18:05:00
    strace工具,进程诊断、排错、跟踪系统调用和信号量每行输出是一个系统调用,包括函数和返回值。 strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息。 可谓是...

    strace工具,进程诊断、排错、跟踪系统调用和信号量 每行输出都是一个系统调用,包括函数和返回值。 

    strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息。

    可谓是 linux 下的调试利器,不仅可以用来找程序错误,系统为什么挂死了,命令为什么报错,还可以用来查找哪些程序占用系统资源。

    命令实例

    比如,但网站服务器负载过大,网站数量又多,不知是那个网站占用太多资源,这时strace派上用场了。

    第一步,查看 php-cgi 进程号:

    ps aux | grep php-cgi

    第二步,查看系统调用

    strace -p 进程号

    或者,将记录结果存在output.txt文件中

    strace -o output.txt -T -tt -e trace=all -p 进程号

    mac下的命令为dtruss

    pstack 看活动的进程内的堆栈

    pstack 进程号

    用top查看某个进程的信息,top -p 进程号

    转载于:https://www.cnblogs.com/stanljj/p/9890860.html

    展开全文
  • 简单的接口,以REST云服务,包括TMS XData数据库。 容易部署 应用程序由HTML和Javascript文件组成,可以轻松地部署在任何轻或重量级的web服务器上。 使用任何现有的负载平衡软件和/或技术以达到最高的性能 快速RAD...
  • 50、下面,哪些是Process Service的要求:/可以方便的修改和定义 /对于业务人员来说易于掌握 /方便的工具来开发和调试 /健壮的异常处理(交易补偿) /大的Process可以包含对于一系列小的Process的调用 51、MSF 构思...
  • RIA系统最大的特点是将大部分处理任务从用户界面端移植到客户端,仅保留一些必要数据与服务器端进行信息交互。 •RIA凭借自己不需要安装,只要有浏览器支持就可以运行的特点,吸引着无数人的眼球,其中代表是Flex ...
  • 这一章的目的主要是让大家了解开源系统集成商哪些权益和责任。这一章突出介绍了MySQL的快速成长及其在开源和数据库系统市场中的重要性。此外,这一章还清晰地勾勒出了开源运动发展的脉络。  第2章对什么是...
  •  本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,分区和并行,以及...
  • JavaScript高级程序设计电子书

    热门讨论 2008-11-25 13:55:07
    其中包括用Javascript进行排序的深度讨论,以及如何用事件、DOM操作和比较运算符开发各种Web浏览器能使用的通用表排序协议。 拖放 这一章解释了拖放的概念以及它们在Javascript和Web浏览器中的应用。其中讨论了...
  •  本书是一本关于Oracle 9i & 10g数据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的...
  • NAS设备主要用来实现在不同操作系统平台下的文件共享应用,与传统的服务器或DAS存储设备相比,NAS设备的安装、调试、使用和管理非常简单,采用NAS可以节省一定的设备管理与维护费用。NAS设备提供RJ-45接口和单独的...
  • 调试很重要 说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。 基于上述4点,我录制的全新视频将有这些特点: 1. 快速入门, 2. 实战项目, 3. 驱动大全, 4. 专题, 5. 授人以渔, 6. 要...
  • We b服务器中应能够在任何时刻有大量的 S Y N请求。我们保留拦截模式的缺省值, 因为有足够的资源来管理每个 T C P连接。 至此已介绍完了T C P拦截。下一节将讨论网络地址转换( N AT)。 8.4 网络地址转换...
  • ASP.net入门教程

    2009-01-15 11:15:52
    这些事件显示诊断和监视特征的组合,并在记录哪些事件以及如何记录事件等方面提供了高度的灵活性。有关更多信息,请参见 ASP.NET 运行状况监视概述。 ASP.NET 支持两组可供应用程序访问的性能计数器: ASP.NET ...
  • IIS6.0 IIS,互联网信息服务

    热门讨论 2010-08-23 21:20:55
    如果你已在DNS服务器中将所有你需要的域名已经映射到了此惟一的IP地址,则用设不同“主机头名”的方法,可以让你直接用域名来完成对不同Web站点的访问。 比如你本机只有一个IP地址为192.168.0.1,你已经建立(或...
  • 在添加信息里新增了批量导入功能,可以导入指定格式的Excel表格,这个功能调试了很久,因为PHPExcel包的位置一直没有放对,我还写了导入数据时的动态更新进度功能,可以看哪些信息出错导入失败,导入功能还是很好玩...
  • 企业商户向线上聚合支付系统开发公司提出开发系统意向,并就自己对线上聚合支付系统的各项功能、界面风格、线上聚合哪些第三方支付方式提出自己的需求,双方达成意向,签订合作合同。 2.线上聚合支付系统开发...
  • 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
  • java 面试题 总结

    2009-09-16 08:45:34
    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
  • 2.接口调试运行,一个不能少,可以对参数进行加密,从md5到aes一应俱全,返回参数与模型实时分析对比,给出不一致的地方,找出接口可能出现的问题。如果你不想手写文档,那么试试接口的数据生成功能,可以对接口...
  • Win XP 安装参数大揭密

    2009-04-13 10:43:06
    每个级别在其下包括一些子级别。 /dudisable 禁用“动态更新”。没有“动态更新”,安装程序仅能在初始安装文件下运行。即使使用应答文件并在该文件中指定“动态更新”选项,该选项仍会禁用“动态更新”。 /...
  • log4Net详解(共2讲)

    2011-08-16 22:03:25
    它如何保证无论服务器端使用何种平台,客户端无需进行修改? 3、数据与UI分离的优势已经被广大开发者所认可,Ext是如何做到这一点的? 4、你还在为自己没有美术功底而苦恼?你领略过Ext UI的迷人魅力吗?他在Ext 3...
  • 服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何...
  • 服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何...
  • 服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何...
  • 服务器软件到Office办公应用,从联网游戏到即时消息,不管这些应用的复杂程度如何,他们是一个个在操作系统控制和管理之下的可执行程序。本次课程邀请微软全球技术中心专家级工程师,为各位讲解一个程序是如何...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

服务器调试都包括哪些