[发明专利]一种细粒度远程调用在线重构方法有效
申请号: | 201010286336.0 | 申请日: | 2010-09-17 |
公开(公告)号: | CN101958928A | 公开(公告)日: | 2011-01-26 |
发明(设计)人: | 黄罡;梅宏;刘儇哲;王玮琥 | 申请(专利权)人: | 北京大学 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 冯艺东 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 细粒度 远程 调用 在线 方法 | ||
技术领域
本发明是一种针对分布式系统中运行时刻对细粒度远程调用进行重构的方法,属于软件技术领域,适用于软件维护。
背景技术
在分布式系统中,通过网络进行的远程调用会带来很大的性能开销:通过网络传输数据会花费大量的时间;因为数据只能以字节流的格式在网络上进行传输,因此方法调用的参数、返回值等在传输前后都需要分别进行序列化与反序列化的操作,这些操作将会花费一定的时间与系统资源。因此,远程调用的频率是影响系统性能的关键因素之一。为减少进行远程调用的频率,应该严格控制远程调用的粒度,尽量通过一次远程调用就完成所有操作或获得所有数据,避免细粒度的远程调用。开发人员可以在系统设计或开发过程中应用某些设计模式去除细粒度远程调用,如会话外观(Session)、数据传输对象(Data Transfer Object)等。然而,对于已经开发完成且正在运行的应用系统,去除其中的细粒度远程调用则会存在一些问题。首先,重构现有的应用系统,目前的方法只能通过修改源代码进行。而目前的许多应用系统都采用了基于构件的开发技术并通过组装不同厂商提供的商用构件(COTS,Commercial off-the-shelf)进行开发,因此获得应用的源代码会非常困难;其次,对于目前具有高可用性的应用系统而言,能够提供7(天)*24(小时)的不中断服务已经成为很普遍的需求。而对于现有的离线修改方式,应用系统需要经过“停止-更新-重启”的步骤才能使得修改生效,这将不得不中断应用系统的正常运行,因此无法满足应用系统的高可用需求。综上所述,如何实现在不修改应用系统、不中断其正常运行的前提下在线地进行细粒度远程调用的重构是一个急待解决的技术问题。
发明内容
本发明的目的是提供一种分布式系统中细粒度远程调用的在线重构方法。其核心思想是在运行时刻修改并替换分布式方法调用中负责网络通信的代理对象,将需要多次细粒度远程调用完成的工作通过一次远程调用完成,达到提高系统性能的目的。
本发明包含三个步骤:第一步、可在线重构细粒度远程调用检测:在该步骤中,服务器端会识别出可在线重构的一组细粒度远程调用;第二步、智能代理对象自动生成:在该步骤中,服务器端对于上一步中检测出来的可重构的细粒度远程调用的客户端和服务器端代理对象生成智能代理对象;3、运行时刻进行代理对象替换:对于检测出来的可重构的细粒度远程调用的客户端和服务器端,在运行时刻服务器端将普通的客户端和服务器端代理对象替换成上一步生成的智能代理对象。
上述步骤的具体技术方案如下:
一种细粒度远程调用在线重构方法,其步骤为:
1)服务器端根据应用运行时刻信息检测当前应用中某一个类的可在线重构细粒度远程调用;所述可在线重构细粒度远程调用包括:数据型细粒度远程调用、操作型细粒度远程调用;
2)服务器端将该类的所有属性添加到可在线重构细粒度远程调用的客户端代理对象中,生成该类的客户端智能代理对象;所述客户端智能代理对象使得:
对于数据型细粒度远程调用,当客户端向客户端智能代理对象发起获取数据请求时,客户端智能代理对象直接将该请求对应的属性值返回给客户端;
对于操作型细粒度远程调用,客户端智能代理对象将一组细粒度调用请求与相应的参数记录到客户端智能代理对象的属性中,在该组细粒度远程调用结束后,通过一个远程调用将客户端智能代理对象中的属性值转发到服务器端;
3)服务器端根据客户端发出的该类的每一次请求,返回该类的客户端智能代理对象实例给客户端。
进一步的,检测数据型可在线重构细粒度远程调用的方法为:如果同一客户端与服务器端对象之间存在一组连续的远程调用,且该组连续的远程调用参数的值为空且返回值不为空,则这组远程调用为一数据型可在线重构细粒度远程调用。
进一步的,检测操作型可在线重构细粒度远程调用的方法为:如果在同一客户端与服务器端对象之间存在一组连续的远程调用,且该组调用返回值为空,则这组远程调用为一可在线重构的操作型细粒度远程调用。
进一步的,所述一组连续的远程调用为:一段时间内同一客户端的一组请求看做一组连续的远程调用。
进一步的,根据设定的时间长度确定一组细粒度远程调用是否结束。
进一步的,服务器端生成所述客户端智能代理对象过程中,缓存新接收到的客户端请求,待生成所述客户端智能代理对象后,依次执行缓存的客户端请求后撤销缓存。
本发明的主要内容包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010286336.0/2.html,转载请声明来源钻瓜专利网。