博客
关于我
游戏服务端框架之代码热部署(一)
阅读量:297 次
发布时间:2019-03-03

本文共 591 字,大约阅读时间需要 1 分钟。

对于一个部署在生产环境的游戏项目来说,我们希望当代码出现bug的时候,可以不用重启游戏进程而达到动态修改代码的目的——

这就是代码热部署!

我们先来看一下,不同编程语言是如何实现代码热部署的。

使用Javascript写过网页的童鞋们都清楚,修复代码后直接刷新一下浏览器,就可以执行最新的脚本;游戏客户端脚本Lua也是如此,在游戏运行过程中可以动态卸载已加载的文件再重新加载,神不知鬼不觉就把bug修复了;Erlang在游戏服务端应用也相当广泛,函数式语言尽可能不使用全局性变量,状态都是用函数参数保存,天然无状态的特性使得代码热部署变得相当简单……

了解过jvm的朋友们都知道,jvm使用类加载器和类的全路径名称结合起来标识一个类,以此来保证同一个类只能被一个类加载器所加载。因此,我们无法要求jvm主动卸载一个类而修改类代码,除非使用新的自定义类加载器。

利用JDK5的Instrumentation提供的接口,我们可以动态改变JVM已加载的类的方法体。

在JDK5 中,Instrumentation 要求在运行前利用或者系统参数来设置代理类。而 Java SE 6 的新特性改变了这种情况,通过 Java Tool API 中的 attach 方式,我们可以很方便地在运行过程中动态地设置加载代理类,以达到 instrumentation 的目的。

下边演示热部署的操作过程

转载地址:http://dsam.baihongyu.com/

你可能感兴趣的文章
最小生成树 (kruskal)
查看>>
数据结构与算法总结(3)
查看>>
Java基础语法
查看>>
404服务器错误的讲解
查看>>
原创-开发问题指南
查看>>
python学习--Django学习4、数据库的增删改查、django后台管理系统
查看>>
Django开发车辆违章系统、模糊查询、分页查询
查看>>
centos7.5 装Python3.7报错(解决办法)
查看>>
Java常用设计模式之单例模式
查看>>
线性扫描--求数组中三个数最大乘积
查看>>
爬虫之 xpath的节点关系
查看>>
爬虫之 lxml模块的安装与使用示例
查看>>
Python创建目录文件夹
查看>>
正则表达式的概述
查看>>
Mongodb数据库介绍
查看>>
深度学习简介
查看>>
回文排列
查看>>
Linux之文件权限命令
查看>>
Linux之远程登录、远程拷贝命令 ssh scp
查看>>
python多线程的使用
查看>>