远程调用管理方法

文档序号:7682604阅读:224来源:国知局
专利名称:远程调用管理方法
技术领域
本发明涉及电数字处理领域,特别涉及远程调用管理方法。
技术背景广域网上,客户端与服务端的多次远程方法调用即多次网络通讯。多次 网络通讯存在延时和丢包的问题,导致客户端用户操作的响应时间长而且不稳定。部署在广域网上的大型分布式软件系统, 一般分为客户端、服务端、数 据库三层,业务数据一般存储在数据库中。客户端为了读取业务数据,需要 与服务端进行远程方法调用,服务端再与数据库通讯,从中获取业务数据后, 再进行若干处理,返回给客户端。客户端与服务端的多次远程方法调用,都 是多次广域网上的网络通讯,会受到网络延时及数据丟包问题的影响。客户 端任意用户操作的响应时间,除了少量客户端逻辑运行时间外,主要是由多 次远程方法调用的网络通讯时间构成的,通讯次数越多,数据量越大,受延 时和丟包问题的影响就越大,总的响应时间就越不稳定。发明内容本发明目的在于提供一种远程调用管理方法。本发明提供一种远程调用管理方法,客户端通过客户端存根向服务端对 象发出远程调用,客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;客户端存根代理分析远程调用的步骤;对于远程调用是写方法的,客 户端存根代理远程调用写方法,对服务端进行写操作的步骤;对于远程调用 是读方法的,客户端存根代理向客户端缓存进行读操作,获取读方法返回结 果的步骤。优选地,上述客户端存根代理对客户端存根进行代理,远程方法调用时, 使用客户端存根通过远程代理自动拦截方法调用,找到服务端对象,调用其 方法。优选地,上述客户端緩存存储服务端不常变化的业务数据,供客户端存 才艮4戈理读取。优选地,上述客户端存根代理分析远程调用包括判断远程调用方法为与客户端緩存相关的方法或与客户端緩存不相关的方法的步骤。优选地,对于与客户端緩存相关的方法,判断方法是读方法或写方法; 对于与客户端緩存不相关的方法,对服务端远程调用方法,返回结果。优选地,对于远程调用是写方法的,客户端存根代理远程调用写方法, 对服务端进行写操作的步骤,还包括客户端緩存清空緩存的业务数据的步骤。 优选地,上述远程调用管理方法还包括对客户端緩存中保存的业务数据 更新的步骤。上述对客户端緩存中保存的业务数据更新的步骤包括对于远程调用是读方法的,客户端存根代理向客户端緩存进行读操作后, 客户端存根代理把读方法返回的结果放入客户端緩存的步骤。优选地,上述远程调用管理方法还包括根据服务端对象,将客户端緩 存划分为至少 一緩存区,分别緩存至少 一类型的服务端对象。优选地,上述远程调用管理方法还包括预设客户端緩存的内存上限的 步骤;判断客户端缓存是否达到预设的内存上限,若达到预设的内存上限则 删除部分或全部已緩存业务凄t据的步骤。本发明提供的远程调用管理方法通过客户端緩存机制,减少了网络通讯 的次数和数据量,进而减少了用户操作的等待时间;降低了服务端负载及数 据库负载,从而使服务端和数据库可以为更多客户端服务,增加了伸缩性。本发明的客户端緩存机制,对具体的客户端业务逻辑是透明的。也就是说, 远程方法调用发起者,不需要建立緩存机制和管理緩存。通过对緩存区的分 区管理和方法读写意图的管理,确保客户端緩存与服务端的数据一致性。


图l是本发明第一实施例的逻辑结构图; 图2是本发明第一实施例的工作流程示意图; 图3是本发明第二实施例的工作流程示意图; 图4是本发明第二实施例的动态代理远程调用拦截算法图。 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。
具体实施方式
参照图l,示出本发明第一实施例的逻辑结构图。现有实现远程调用的结 构包括客户端存根、服务端框架和服务端对象,客户端存根通过服务端框架 调用服务端对象。本实施例提出客户端存根代理和客户端緩存,对客户端存根再次代理,实现了对远程方法调用的本地緩存。本实施例对于业务数据按变化频率分为如下两大类 经常变化这类业务数据不适合做客户端緩存,例如单据; 不常变化这类业务数据适合做客户端緩存,例如系统参数和基础资料。 上述业务数据类型是经常变化还是不常变化的,可以通过緩存配置文件进行 区别。上述緩存配置文件是一个xml文件,包含所有需要被緩存的业务实体。 例如緩存配置文件中〈entity name="Person" bostype="80EF7DED" isCache="true" descriptioi^"人员"/〉,说明"人员,,是一种不常变化的业 务数据,可以用于客户端緩存。本实施例上述对不常变化的数据进行客户端緩存,以减少客户端与服务 端的网络通讯。本实施例的客户端缓存具有可由用户配置的内存上限值,可4艮据远程对 象的类型,划分为多个緩存区(Cache Region),例如期间、公司、客户、供 应商等等多个緩存区。某个类型的远程对象是否参与客户端缓存,可以在运 行期由配置文件指定。各个模块也可分别维护自己的客户端緩存,但这样开 发工作量较大而且算法可能不一致,不便于统一管理、控制緩存的总上限。而客户端存根代理是基于存根,对存根进行代理。其中存根(Stub)是 客户端对象,是服务端对象的远程代理,在远程方法调用中,可以把远程对 象像本地对象一样使用。远程方法调用时,系统使用存根通过远程代理自动 拦截方法调用,找到服务端远程对象并调用它的方法。本实施例将所有的远程调用方法,分为与客户端緩存相关的方法和不相 关的方法。,于于相关的方法,本实施例又划分为读方法和写方法,读方法是 从服务端读取数据并緩存的方法,写方法是向服务端修改数据的方法。上述 方法是否与緩存相关及其具体的读写意图可以通过緩存配置文件进行区别。 侈'H口, 緩存酉己置文4牛中〈method name="getPrimaryPosition" type="read" isCache="false" region-"" scene="" description-"暂无描述信息"/>, 其中"getPrimaryPosition"方法的参凄t type取值为"read", "i兌明该方法是 读方法,参数isCache取值为"false",说明该方法是緩存不相关的,即不需 要通过客户端緩存,应直接远程调用方法的。本实施例的工作流程如图2所示步骤SI 01,客户端存根代理拦截远程方法调用;步骤SIO,客户端存根代理判断远程方法调用是否为緩存相关,如果是緩 存相关则进行步骤S 103,否则进行步骤S 106;步骤S103,客户端存根代理判断远程方法调用是读方法还是写方法,如果远程方法调用是写方法,则进行步骤S104,如果远程方法调用是读方法, 则进行步骤S105;步骤S104,客户端存根代理远程调用一次写方法,然后进行步骤S106; 步骤S105,客户端存根代理尝试从客户端緩存获取方法返回结果,然后 进行步骤S106;步骤S106,远程调用方法返回。上述流程只进行客户端緩存,但不更新緩存,这样只能通过客户端的重 新登录来保证客户端缓存和服务端的数据一致性,对于用户的操作非常不方 便。为了防止业务数据变化后造成的不一致问题,本实施例可增加适当的緩 存更新机制,以方便用户,保证业务数据的一致性。在上一实施例基础上,本发明提出对于不常变化的业务数据还可频率分 为^口下两类不常变化,但每隔一段时间会变化这类业务数据适合做客户端緩存,但是需要有緩存的更新机制,例如基础资料;基本不变这类业务数据适合做客户端緩存,例如系统参数。业务数据是基本不变还是不常变化但每隔一段时间会变化的,可以通过 继承体系及配置文件进行区别。对于这两类业务数据,本实施例提出改进的 远程调用管理方法,通过建立适当的緩存更新机制,防止业务数据变化后造 成的不一致问题。同时采用最近最少使用算法(LRU, Least Recently Used) 管理客户端緩存上限,避免客户端缓存占用过多内存。本实施例的客户端緩存,具有緩存更新机制,客户端缓存的内存上限可 由用户配置或预设,并采用最近最少4吏用算法管理总内存。根据远程对象的 类型,划分为多个緩存区(Cache Region),例如期间、公司、客户、供应商 等等多个緩存区。某个类型的远程对象是否参与客户端緩存,可以在运行期 由配置文件指定。本实施例将所有远程调用方法分为与客户端緩存相关的方法和不相关的 方法。相关的方法又划分为读方法和写方法,划分规则与上一实施例类似。结合如图4所示的动态代理的远程调用拦截算法,和如图3所示的工作 流程示意图,本实施例的工作流程包括步骤S201 ,客户端存根代理拦截远程方法调用;步骤S202,客户端存根代理判断远程方法调用是否为緩存相关,如果是 緩存相关则进行步骤S2 03,否则进行步骤S214;果远程方法调用是写方法,则进行步骤S204,如果远程方法调用是读方法, 则进行步骤S206;步骤S204,客户端存#^代理远程调用一次写方法,然后进行步骤S205; 步骤S205,客户端緩存清空对应类型的緩存区,然后进行步骤S214; 步骤S206,客户端存根代理尝试从客户端緩存获取方法返回结果,然后 进行步骤S207;步骤S207,如果从客户端緩存获取方法返回结果成功,即緩存命中,则 进行步骤S208,否则进行步骤S209;步骤S208,客户端存根代理将客户端緩存中的方法返回结果复制一份, 然后进行步骤S214;步骤S209,客户端存根代理远程调用一次读方法,进行步骤S210;步骤S210,客户端存根代理把方法返回结果放入客户端缓存;步骤S211,根据最近最少使用算法管理客户端緩存;步骤S212,判断客户端緩存是否达到预设的内存上限,如果达到则进行 步骤S213,否则进行步骤S214;步骤S213,选#^部分或全部已緩存数据,将其删除。步骤S214,远程调用方法返回。需要说明一点,本实施例在执行写方法后,清除同类型的整个緩存区,而 不是清空緩存区中具体方法的缓存。这是由于本实施例的客户端緩存存储的 不是对象数据库,而是存储方法返回结果。客户端緩存存储的对象不仅包含 对象或对象集合,也可能包含相关方法返回的Boolean, Integer等类型数据。 任意一个写方法执行后,无法精确地判断某类型緩存区中某个方法的返回值 是否与服务端一致与否。所以,只能清除整个类型緩存区了。本实施例通过对远程方法调用的存根进行动态代理,将不经常变化的业 务数据缓存在本地Java虚拟机(JVM)堆内存中,非第一次访问时直接从本 地緩存读取,从而减少网络通讯次数及数据量,本实施例对具体的业务逻辑 而言是透明的。同时,对本地的客户端緩存也根据远程对象类型进行分区管 理,并通过最近最少使用算法保证客户端緩存总大小不超过用户预设的内存 上限。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围, 凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接 或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种远程调用管理方法,所述客户端通过客户端存根向服务端对象发出远程调用,其特征在于客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;客户端存根代理分析远程调用的步骤;对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤;对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作,获取读方法返回结果的步骤。
2. 根据权利要求1所述的远程调用管理方法,其特征在于,所述客户端 存根代理对客户端存根进行代理,远程方法调用时,使用客户端存根通过远 程代理自动拦截方法调用,找到服务端对象,调用其方法。
3. 根据权利要求1所述的远程调用管理方法,其特征在于,所述客户端 緩存存储服务端不常变化的业务数据,供所述客户端存根代理读取。
4. 根据权利要求3所述的远程调用管理方法,其特征在于,所述客户端 存根代理分析远程调用包括判断远程调用方法为与客户端緩存相关的方法或与客户端緩存不相关的 方法的步骤。
5. 根据权利要求4所述的远程调用管理方法,其特征在于,对于所述与 客户端缓存相关的方法,判断所述方法是读方法或写方法;对于所述与客户 端緩存不相关的方法,对服务端远程调用所述方法,返回结果。
6. 根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于, 所述对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端 进行写操作的步骤,还包括客户端緩存清空緩存的业务数据的步骤。
7. 根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于, 还包括对客户端緩存中保存的业务数据更新的步骤。
8. 根据权利要求7所述的远程调用管理方法,其特征在于,所述对客户端緩存中保存的业务数据更新的步骤包括对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作后, 客户端存根代理把读方法返回的结果放入客户端缓存的步骤。
9. 根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于, 还包括根据所述服务端对象,将所述客户端緩存划分为至少一緩存区,分别緩 存至少一类型的服务端对象。
10. 根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于, 还包括预设客户端緩存的内存上限的步骤;判断客户端緩存是否达到预设的内存上限,若达到预设的内存上限则删 除部分或全部已緩存业务数据的步骤。
全文摘要
本发明提供一种远程调用管理方法,客户端通过客户端存根向服务端对象发出远程调用,客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;客户端存根代理分析远程调用的步骤;对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤;对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作,获取读方法返回结果的步骤。本发明减少了网络通讯的次数和数据量,进而减少了用户操作的等待时间;降低了服务端负载及数据库负载,从而使服务端和数据库可以为更多客户端服务,增加了伸缩性。本发明的客户端缓存机制,对具体的客户端业务逻辑是透明的。
文档编号H04L12/54GK101217449SQ20081000270
公开日2008年7月9日 申请日期2008年1月9日 优先权日2008年1月9日
发明者璐 彭, 慷 殷 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1