java游戏服务器怎么实现热更新

java游戏服务器怎么实现热更新,第1张

在Java中,要实现热部署,首先,你得明白,Java中类的加载方式。每一个应用程序的类都会被ClassLoader加载,所以,要实现一个支持热部署的应用,我们可以对每一个用户自定义的应用程序使用一个单独的ClassLoader进行加载。然后,当某个用户自定义的应用程序发生变化的时候,我们首先销毁原来的应用,然后使用一个新的ClassLoader来加载改变之后的应用。而所有其他的应用程序不会受到一点干扰。

热更新的思路:

定义一个用户自定义应用程序的接口,这是因为,我们需要在容器应用中去加载用户自定义的应用程序。

我们还需要一个配置文件,让用户去配置他们的应用程序。

应用启动的时候,加载所有已有的用户自定义应用程序。

为了支持热部署,我们需要一个监听器,来监听应用发布目录中每个文件的变动。这样,当某个应用重新部署之后,我们就可以得到通知,进而进行热部署处理。

景安河南最大的多线服务器托管商,提供专业的双机热备、负载均衡等高可用/高并发服务!

不停机更新:不用用户下线,依旧可以进行正常游戏。

停机更新:用户无法登陆服务器,利用服务器关闭的时间进行网游更新。

不停机更新一般都都是进行比较小规模的更新·,大规模的(比如版本的更迭)都是要停机更新。

扩展资料:

1、停机更新:

停机维护的根本意义在于让服务器休息一下处理一下数据或者更新系统新文件和内容。服务器就像一起玩局域网游戏一样,也是一台电脑,但能力很大,配置很高,开久了会影响运行程序速度。

在停机维护之前,服务商一般会发布公告、提示停机维护的时间段,以提醒用户做好相应准备。停机维护期间用户无法使用服务商所提供的服务,停机维护经常会在公告的时间段之前进行完毕。

不仅仅是网游需要进行停机维护,一些大型的系统有时也要进行停机维护,以维持系统的正常运行。

2、不停机更新:

不停机更新不会影响玩家正常游戏,待下次启动游戏时,会进行更新。

3、不停机更新技术:

事实上,大多游戏服务器分为逻辑程序服务器和数据库服务器,如果是线上运营的服务器,基本上是在至少两台主机上。

在发现几个逻辑服务器中的bug,或者加了某些功能,比如少加了三个金币,多算了一点经验等,只需要在测试服测试完毕,上传覆盖执行文件(jar或php),但是依然要重启逻辑服务器进程。

而Erlang的热升级技术,就带了更好的体验。Erlang原本脱胎于电信行业,Jow Armstrong 在描述Erlang的设计要求时期中就提到了“软件维护应该能在不停止系统的情况下进行”。

在实践中,因为这种不停服务的热更新获益良多,终于不用再等到半夜没人的时候再做更新了,对于一些紧急的bug修复,热更新实在是一把利器。

Erlang热更新的秘密其实都集中在code模块、code模块是Erlang Code Server暴露出来的对外接口,其职责就是把已经编译好的模块加载到Erlang的运行时环境。

代码版本有两个概念,当前版本代码“current”和老版本代码“old”,一旦模块被加载就变成“current”,再有一个版本过来被加载,之前的版本就变成“old”,新加载的变成“current”。

这时候,两个版本还是同时存在,新的请求执行的时候会使用新的版本,而老版本的代码还会被使用因为还有其他模块的调用“old”版本中。

再进行一次热更新,这时就有第三个实例被加载,code server就会终止掉还在驻留在“old”版本代码依赖的进程。然后第三个实例成为“current”,之前版本的“current”被标记成“old”。

这种方法有效降低了因版本升级而导致的用户流失。

参考资料:百度百科—停机维护

最简单的解释就是在操作系统不关软件直接更新,更新期间软件直接用,现在大部分软件是冷更新,要退出才能更新,网络游戏软件热更新的时候不需要关闭服务器,直接重新部署项目就行。冷的自然就是关闭服务器后再操作。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/287104.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存