基于服务器端javascript的热部署方法

文档序号:6494090阅读:1033来源:国知局
基于服务器端javascript的热部署方法
【专利摘要】本发明涉及一种互联网应用程序在服务器端的动态的更新程序模块的方法。本发明的基于服务器端javascript的热部署方法,包括如下步骤:(1)启动Node.js服务器。加载正常的js文件;(2)启动卸载js文件的服务;(3)js文件生命周期维护;(4)升级js文件;(5)监控程序运行。本发明创造利用Node.js服务能力,以及Node.js提供的js加载和卸载功能,并将之创新性地应用于软件模块的热部署领域。
【专利说明】基于服务器端javascript的热部署方法
【技术领域】
[0001]本发明涉及一种互联网应用程序在服务器端的动态的更新程序模块的方法。
【背景技术】
[0002]JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。
[0003]不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说JavaScript是在用户的浏览器上运行,不需要服务器的支持而可以独立运行。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然现在的程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。
[0004]JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。解释语言的弱点是安全性较差,而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。而且由于每次重新加载都会重新解译,加载后,有些代码会延迟至运行时才解译,甚至会多次解译,所以速度较慢。
[0005]Node, js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node, js会假设是在POSIX环境下运行它Linux或Mac OS X。如果是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作了优化,所以在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。Node, js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome’s JavaScript runtime,也就是说,实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。
[0006]V8引擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
[0007]例如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了 Buffer类,方便并且高效地处理二进制数据。因此,Node不仅仅简单的使用了 V8,还对其进行了优化,使其在各环境下更加给力。
[0008]V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码与用C这类高级语言写出来的代码性能相差无几,却节省了开发成本。对性能的苛求是Node的一个关键因素。Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。[0009]Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问,直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。
[0010]虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端运行的平台,但因为上述特性,Node发展迅猛,成为事实上的
T D O
[0011]在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其中很多是连接数据库或是其他软件的驱动,但还有很多是凭他们的实力制作出来的非常有用的软件。

【发明内容】

[0012]本发明的技术效果能够克服上述缺陷,提供一种基于服务器端javascript的热部署方法,其软件系统的热部署,不停服务即能升级软件系统。
[0013]为实现上述目的,本发明采用如下技术方案:其包括如下步骤:
[0014](I)启动Node, js服务器。加载正常的js文件;
[0015](2)启动卸载js文件的服务;
[0016](3) js文件生命周期维护;
[0017](4)升级js文件;
[0018](5)监控程序运行。
[0019]本发明涉及互联网应用程序在服务器端的动态的更新程序模块的方法,俗称热部署。在不停掉原先服务程序的情况下,更新新的模块。完成程序的升级。
[0020]通过服务器javascript技术,实现所有模块的脚本化。除了提升代码执行的速度以外。软件模块的升级,真正的实现随需而升,且不需要运行“备份”。
[0021]步骤(5)中的监控程序运行包括如下步骤:。
[0022](I)启动程序,改程序独立于Node运行或使用node提供的服务;
[0023](2)照设定目录,管理所有的文件的文件名、生成日期、修改日期、MD5值;
[0024](3)定期扫描目录下的所有文件。扫描过程中,记录文件的文件名、生成日期、修改日期、MD5值,如果MD5值发生了变化,则认定js文件有新版,将有新版本的js文件放入升级列表;
[0025](4)定期的读取升级列表,发现升级列表有内容,则取得js文件名,调用Node的卸载js文件服务,并立即执行加载文件服务。
[0026]本发明创造利用Node, js服务能力,以及Node, js提供的js加载和卸载功能,并将之创新性地应用于软件模块的热部署领域。
【具体实施方式】[0027]热部署系统组成:Node.js服务器、众多js文件、js监控系统。
[0028]各个组成的功能:Node.js:提供js的运行环境,全部是服务器的运行。同时还有两个功能分别是,卸载js文件,此脚本需要专门的编写,利用node, js提供的api即可实现;每个js文件zainode中的生命周期的维护。对每个js文件,该模块都会进行计数操作。此操作在热部署升级js文件时,非常重要。
[0029]本发明的基于服务器端javascript的热部署方法包括如下步骤:
[0030]A启动Node, js服务器。加载正常的js文件,也就是应用对外提供的服务。此时的js文件既可以提供有界面的服务,也可以提供无界面的服务。
[0031]B启动卸载js文件的服务。此js文件跟其他的js文件,在执行上并无区别。只是借用了 node提供的api,将卸载的功能进行封装,方便监控系统使用。
[0032]C js文件生命周期维护。每个js文件在客户端请求使用时,计数+1,请求完毕后,计数-1。无论一个js文件计数是否是零,都可以执行卸载和加载js文件的操作。下面分别介绍一下js文件计数器是零和大于零两种状态下js文件卸载和加载过程。
[0033]Js文件计数器=0:
[0034]这种情况下,很容易理解。直接从内存中卸载js文件。然后立刻加载js文件。客户端下次请求的时候,就会使用新版本的js文件。从而实现了软件系统的升级。
[0035]Js文件计数器>0:
[0036]这种情况下,运行卸载js文件代码,js文件内容并不会立刻从内存卸载。运行加载新的js文件,也不会立刻加载进内存,而是等待。系统会记录自卸载开始后,新入的请求,这些请求会计入另外一给等待计数器。这些请求会等待,并不会立刻得到服务器的响应。在卸载开始之前已经开始请求,也就是计数器>0所代表的客户端请求,会继续按照旧有逻辑完成业务的执行,每执行完一个,计数器就-1。直至全部执行完毕。此时计数器=0。当计数器等于零以后,会js文件会从内存中真正的卸载,然后再加载js文件。当新版本的js文件加载完毕后,哪些等待的请求,从等待计数器,逐步移出,每移出一个则等待计数器-1,直至=0。当等待计数器=0以后,标志着升级彻底结束。业务进入正常。
[0037]D众多js文件。Js就是源程序,提供了对外的服务。必须有Node加载才能使用。升级软件程序,就是升级js文件。替换js文件。就是对系统的升级。
[0038]E监控程序。监控程序的目的就是在于监控指定目录下的js文件,是否发生了变化,采用md5和文件修改日期,进行判断。
[0039]监控程序的业务步骤如下:
[0040]1.启动程序,改程序独立于Node运行,但可以使用node提供的服务。
[0041]2.按照设定目录,管理所有的文件的文件名、生成日期、修改日期、MD5值。
[0042]3.定期扫描目录下的所有文件。扫描过程中,记录文件的文件名、生成日期、修改日期、MD5值,如果MD5值发生了变化。则认定js文件有新版。将有新版本的js文件放入升级列表。
[0043]4.定期的读取升级列表。发现升级列表有内容。则取得js文件名。调用Node的卸载js文件服务,并立即执行加载文件服务。
【权利要求】
1.一种基于服务器端javascript的热部署方法,其特征在于,包括如下步骤: (1)启动Node,js服务器。加载正常的js文件; (2)启动卸载js文件的服务; (3)js文件生命周期维护; (4)升级js文件; (5)监控程序运行。
2.根据权利要求1所述的基于服务器端javascript的热部署方法,其特征在于,步骤(5)中的监控程序运行包括如下步骤:。 (1)启动程序,改程序独立于Node运行或使用node提供的服务; (2)照设定目录,管理所有的文件的文件名、生成日期、修改日期、MD5值; (3)定期扫描目录下的所有文件。扫描过程中,记录文件的文件名、生成日期、修改日期、MD5值,如果MD5值发生了变化,则认定js文件有新版,将有新版本的js文件放入升级列表; (4)定期的读取升级列表,发现升级列表有内容,则取得js文件名,调用Node的卸载js文件服务,并立即执行加载文件服务。
【文档编号】G06F9/445GK103902319SQ201210583991
【公开日】2014年7月2日 申请日期:2012年12月30日 优先权日:2012年12月30日
【发明者】邵峰晶, 王兵, 王恒刚, 翟伟伟, 崔九梅, 王爱玲, 赵红雷 申请人:青岛海尔软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1