CN101217449B - 远程调用管理方法 - Google Patents
远程调用管理方法 Download PDFInfo
- Publication number
- CN101217449B CN101217449B CN2008100027051A CN200810002705A CN101217449B CN 101217449 B CN101217449 B CN 101217449B CN 2008100027051 A CN2008100027051 A CN 2008100027051A CN 200810002705 A CN200810002705 A CN 200810002705A CN 101217449 B CN101217449 B CN 101217449B
- Authority
- CN
- China
- Prior art keywords
- client
- cache
- counterfoil
- service end
- call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种远程调用管理方法,客户端通过客户端存根向服务端对象发出远程调用,客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;客户端存根代理分析远程调用的步骤;对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤;对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作,获取读方法返回结果的步骤。本发明减少了网络通讯的次数和数据量,进而减少了用户操作的等待时间;降低了服务端负载及数据库负载,从而使服务端和数据库可以为更多客户端服务,增加了伸缩性。本发明的客户端缓存机制,对具体的客户端业务逻辑是透明的。
Description
技术领域
本发明涉及电数字处理领域,特别涉及远程调用管理方法。
背景技术
广域网上,客户端与服务端的多次远程方法调用即多次网络通讯。多次网络通讯存在延时和丢包的问题,导致客户端用户操作的响应时间长而且不稳定。
部署在广域网上的大型分布式软件系统,一般分为客户端、服务端、数据库三层,业务数据一般存储在数据库中。客户端为了读取业务数据,需要与服务端进行远程方法调用,服务端再与数据库通讯,从中获取业务数据后,再进行若干处理,返回给客户端。客户端与服务端的多次远程方法调用,都是多次广域网上的网络通讯,会受到网络延时及数据丢包问题的影响。客户端任意用户操作的响应时间,除了少量客户端逻辑运行时间外,主要是由多次远程方法调用的网络通讯时间构成的,通讯次数越多,数据量越大,受延时和丢包问题的影响就越大,总的响应时间就越不稳定。
发明内容
本发明目的在于提供一种远程调用管理方法。
本发明提供一种远程调用管理方法,客户端通过客户端存根向服务端对象发出远程调用,客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;客户端存根代理分析远程调用的步骤;对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤;如果对业务数据进行缓存的客户端缓存中的业务数据和服务端的业务数据不一致,则更新客户端缓存中的业务数据;对于远程调用是读方法的,客户端存根代理向对业务数据进行缓存的客户端缓存进行读操作,获取读方法返回结果的步骤;如果从客户端缓存获取读方法返回结果不成功,则客户端存根代理通过客户端存根向服务端远程调用读方法,返回读方法返回结果。
优选地,上述客户端存根代理对客户端存根进行代理,远程方法调用时,使用客户端存根通过客户端存根代理自动拦截远程方法调用,找到服务端对象,调用远程方法。
优选地,上述客户端缓存存储服务端不常变化的业务数据,供客户端存根代理读取。
优选地,上述客户端存根代理分析远程调用包括:
判断远程调用方法为与客户端缓存相关的方法或与客户端缓存不相关的方法的步骤。
优选地,对于与客户端缓存相关的方法,判断方法是读方法或写方法;对于与客户端缓存不相关的方法,对服务端远程调用方法,返回结果。
优选地,对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤,还包括客户端缓存清空对应类型的缓存区的步骤。
优选地,上述远程调用管理方法还包括对客户端缓存中保存的业务数据更新的步骤。
上述对客户端缓存中保存的业务数据更新的步骤包括:
对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作后,客户端存根代理把读方法返回的结果放入客户端缓存的步骤。
优选地,上述远程调用管理方法还包括:根据服务端对象,将客户端缓存划分为至少一缓存区,分别缓存至少一类型的服务端对象。
优选地,上述远程调用管理方法还包括:预设客户端缓存的内存上限的步骤;判断客户端缓存是否达到预设的内存上限,若达到预设的内存上限则删除部分或全部已缓存业务数据的步骤。
本发明提供的远程调用管理方法通过客户端缓存机制,减少了网络通讯的次数和数据量,进而减少了用户操作的等待时间;降低了服务端负载及数据库负载,从而使服务端和数据库可以为更多客户端服务,增加了伸缩性。本发明的客户端缓存机制,对具体的客户端业务逻辑是透明的。也就是说,远程方法调用发起者,不需要建立缓存机制和管理缓存。通过对缓存区的分区管理和方法读写意图的管理,确保客户端缓存与服务端的数据一致性。
附图说明
图1是本发明第一实施例的逻辑结构图;
图2是本发明第一实施例的工作流程示意图;
图3是本发明第二实施例的工作流程示意图;
图4是本发明第二实施例的动态代理远程调用拦截算法图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
参照图1,示出本发明第一实施例的逻辑结构图。现有实现远程调用的结构包括客户端存根、服务端框架和服务端对象,客户端存根通过服务端框架调用服务端对象。本实施例提出客户端存根代理和客户端缓存,对客户端存根再次代理,实现了对远程方法调用的本地缓存。
本实施例对于业务数据按变化频率分为如下两大类:
经常变化:这类业务数据不适合做客户端缓存,例如单据;
不常变化:这类业务数据适合做客户端缓存,例如系统参数和基础资料。
上述业务数据类型是经常变化还是不常变化的,可以通过缓存配置文件进行区别。上述缓存配置文件是一个xml文件,包含所有需要被缓存的业务实体。例如缓存配置文件中<entity name=″Person″bostype=″80EF7DED″isCache=″true″description=″人员″/>,说明“人员”是一种不常变化的业务数据,可以用于客户端缓存。
本实施例上述对不常变化的数据进行客户端缓存,以减少客户端与服务端的网络通讯。
本实施例的客户端缓存具有可由用户配置的内存上限值,可根据远程对象的类型,划分为多个缓存区(Cache Region),例如期间、公司、客户、供应商等等多个缓存区。某个类型的远程对象是否参与客户端缓存,可以在运行期由配置文件指定。各个模块也可分别维护自己的客户端缓存,但这样开发工作量较大而且算法可能不一致,不便于统一管理、控制缓存的总上限。
而客户端存根代理是基于存根,对存根进行代理。其中存根(Stub)是客户端对象,是服务端对象的远程代理,在远程方法调用中,可以把远程对象像本地对象一样使用。远程方法调用时,系统使用存根通过远程代理自动拦截方法调用,找到服务端远程对象并调用它的方法。
本实施例将所有的远程调用方法,分为与客户端缓存相关的方法和不相关的方法。对于相关的方法,本实施例又划分为读方法和写方法,读方法是从服务端读取数据并缓存的方法,写方法是向服务端修改数据的方法。上述方法是否与缓存相关及其具体的读写意图可以通过缓存配置文件进行区别。例如,缓存配置文件中<method name=″getPrimaryPosition″type=″read″isCache=″false″region=″″scene=″″description=″暂无描述信息″/>,其中“getPrimaryPosition”方法的参数type取值为″read″,说明该方法是读方法,参数isCache取值为″false″,说明该方法是缓存不相关的,即不需要通过客户端缓存,应直接远程调用方法的。
本实施例的工作流程如图2所示:
步骤S101,客户端存根代理拦截远程方法调用;
步骤S10,客户端存根代理判断远程方法调用是否为缓存相关,如果是缓存相关则进行步骤S103,否则进行步骤S106;
步骤S103,客户端存根代理判断远程方法调用是读方法还是写方法,如果远程方法调用是写方法,则进行步骤S104,如果远程方法调用是读方法,则进行步骤S105;
步骤S104,客户端存根代理远程调用一次写方法,然后进行步骤S106;
步骤S105,客户端存根代理尝试从客户端缓存获取方法返回结果,然后进行步骤S106;
步骤S106,远程调用方法返回。
上述流程只进行客户端缓存,但不更新缓存,这样只能通过客户端的重新登录来保证客户端缓存和服务端的数据一致性,对于用户的操作非常不方便。为了防止业务数据变化后造成的不一致问题,本实施例可增加适当的缓存更新机制,以方便用户,保证业务数据的一致性。
在上一实施例基础上,本发明提出对于不常变化的业务数据还可频率分为如下两类:
不常变化,但每隔一段时间会变化:这类业务数据适合做客户端缓存,但是需要有缓存的更新机制,例如基础资料;
基本不变:这类业务数据适合做客户端缓存,例如系统参数。
业务数据是基本不变还是不常变化但每隔一段时间会变化的,可以通过继承体系及配置文件进行区别。对于这两类业务数据,本实施例提出改进的远程调用管理方法,通过建立适当的缓存更新机制,防止业务数据变化后造成的不一致问题。同时采用最近最少使用算法(LRU,Least Recently Used)管理客户端缓存上限,避免客户端缓存占用过多内存。
本实施例的客户端缓存,具有缓存更新机制,客户端缓存的内存上限可由用户配置或预设,并采用最近最少使用算法管理总内存。根据远程对象的类型,划分为多个缓存区(Cache Region),例如期间、公司、客户、供应商等等多个缓存区。某个类型的远程对象是否参与客户端缓存,可以在运行期由配置文件指定。
本实施例将所有远程调用方法分为与客户端缓存相关的方法和不相关的方法。相关的方法又划分为读方法和写方法,划分规则与上一实施例类似。
结合如图4所示的动态代理的远程调用拦截算法,和如图3所示的工作流程示意图,本实施例的工作流程包括:
步骤S201,客户端存根代理拦截远程方法调用;
步骤S202,客户端存根代理判断远程方法调用是否为缓存相关,如果是缓存相关则进行步骤S203,否则进行步骤S214;
步骤S203,客户端存根代理判断远程方法调用是读方法还是写方法,如果远程方法调用是写方法,则进行步骤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)堆内存中,非第一次访问时直接从本地缓存读取,从而减少网络通讯次数及数据量,本实施例对具体的业务逻辑而言是透明的。同时,对本地的客户端缓存也根据远程对象类型进行分区管理,并通过最近最少使用算法保证客户端缓存总大小不超过用户预设的内存上限。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种远程调用管理方法,所述客户端通过客户端存根向服务端对象发出远程调用,其特征在于:
客户端存根代理拦截客户端发给客户端存根的远程调用的步骤;
客户端存根代理分析远程调用的步骤;
对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤;
如果对业务数据进行缓存的客户端缓存中的业务数据和服务端的业务数据不一致,则更新客户端缓存中的业务数据;
对于远程调用是读方法的,客户端存根代理向对业务数据进行缓存的客户端缓存进行读操作,获取读方法返回结果的步骤;
如果从客户端缓存获取读方法返回结果不成功,则客户端存根代理通过客户端存根向服务端远程调用读方法,返回读方法返回结果。
2.根据权利要求1所述的远程调用管理方法,其特征在于,所述客户端存根代理对客户端存根进行代理,远程方法调用时,使用客户端存根通过客户端存根代理自动拦截远程方法调用,找到服务端对象,调用远程方法。
3.根据权利要求1所述的远程调用管理方法,其特征在于,所述客户端缓存存储服务端不常变化的业务数据,供所述客户端存根代理读取。
4.根据权利要求3所述的远程调用管理方法,其特征在于,所述客户端存根代理分析远程调用包括:
判断远程调用方法为与客户端缓存相关的方法或与客户端缓存不相关的方法的步骤。
5.根据权利要求4所述的远程调用管理方法,其特征在于,对于所述与客户端缓存相关的方法,判断所述方法是读方法或写方法;对于所述与客户端缓存不相关的方法,对服务端远程调用所述方法,返回结果。
6.根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于,所述对于远程调用是写方法的,客户端存根代理远程调用写方法,对服务端进行写操作的步骤,还包括客户端缓存清空对应类型的缓存区的步骤。
7.根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于,还包括对客户端缓存中保存的业务数据更新的步骤。
8.根据权利要求7所述的远程调用管理方法,其特征在于,所述对客户端缓存中保存的业务数据更新的步骤包括:
对于远程调用是读方法的,客户端存根代理向客户端缓存进行读操作后,客户端存根代理把读方法返回的结果放入客户端缓存的步骤。
9.根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于,还包括:
根据所述服务端对象,将所述客户端缓存划分为至少一缓存区,分别缓存至少一类型的服务端对象。
10.根据权利要求1至5任意一项所述的远程调用管理方法,其特征在于,还包括:
预设客户端缓存的内存上限的步骤;
判断客户端缓存是否达到预设的内存上限,若达到预设的内存上限则删除部分或全部已缓存业务数据的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100027051A CN101217449B (zh) | 2008-01-09 | 2008-01-09 | 远程调用管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100027051A CN101217449B (zh) | 2008-01-09 | 2008-01-09 | 远程调用管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101217449A CN101217449A (zh) | 2008-07-09 |
CN101217449B true CN101217449B (zh) | 2011-01-12 |
Family
ID=39623812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100027051A Active CN101217449B (zh) | 2008-01-09 | 2008-01-09 | 远程调用管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101217449B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103001995B (zh) * | 2011-09-15 | 2016-04-13 | 伊姆西公司 | 在集群文件系统中改进高速缓存一致性的方法和装置 |
CN103473116B (zh) * | 2013-09-11 | 2016-09-14 | 北京思特奇信息技术股份有限公司 | 一种大数据量数据远程调用方法及装置 |
CN104077139B (zh) * | 2014-07-04 | 2017-11-24 | 用友网络科技股份有限公司 | 脚本驱动环境下的远程调用方法和远程调用装置 |
CN105550300B (zh) * | 2015-12-11 | 2020-02-04 | 北京奇虎科技有限公司 | 下发消息的方法及装置 |
CN105763619B (zh) * | 2016-03-31 | 2019-07-05 | 广州欢聚时代信息科技有限公司 | 客户端与服务端进行通讯的方法及装置 |
CN106354851A (zh) * | 2016-08-31 | 2017-01-25 | 广州市乐商软件科技有限公司 | 数据缓存方法及装置 |
CN110609753B (zh) * | 2018-06-15 | 2023-07-28 | 伊姆西Ip控股有限责任公司 | 用于优化远程调用的方法、设备和计算机程序产品 |
CN113672403B (zh) * | 2021-07-30 | 2024-03-29 | 北京数码大方科技股份有限公司 | 信息系统中的接口调用方法及接口调用装置、管理信息系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452447A (en) * | 1992-12-21 | 1995-09-19 | Sun Microsystems, Inc. | Method and apparatus for a caching file server |
WO1998027506A3 (en) * | 1996-12-17 | 1998-10-15 | Inca Technology Inc | Ndc consistency reconnect mechanism |
WO2004025429A3 (en) * | 2002-09-16 | 2004-07-01 | Network Appliance Inc | Apparatus and method for proxy cache |
CN1838601A (zh) * | 2005-03-25 | 2006-09-27 | 微软公司 | 用于分布式信息管理的方法和装置 |
CN101079763A (zh) * | 2006-06-12 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种服务器远程配置与管理系统和方法 |
-
2008
- 2008-01-09 CN CN2008100027051A patent/CN101217449B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452447A (en) * | 1992-12-21 | 1995-09-19 | Sun Microsystems, Inc. | Method and apparatus for a caching file server |
WO1998027506A3 (en) * | 1996-12-17 | 1998-10-15 | Inca Technology Inc | Ndc consistency reconnect mechanism |
WO2004025429A3 (en) * | 2002-09-16 | 2004-07-01 | Network Appliance Inc | Apparatus and method for proxy cache |
CN1838601A (zh) * | 2005-03-25 | 2006-09-27 | 微软公司 | 用于分布式信息管理的方法和装置 |
CN101079763A (zh) * | 2006-06-12 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种服务器远程配置与管理系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101217449A (zh) | 2008-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101217449B (zh) | 远程调用管理方法 | |
CN101493826B (zh) | 基于web应用的数据库系统及其数据管理方法 | |
US7685367B2 (en) | Multi-cache cooperation for response output caching | |
CN103020257B (zh) | 数据操作的实现方法和装置 | |
CN103312624B (zh) | 一种消息队列服务系统和方法 | |
CN102047231A (zh) | 数据存储和访问 | |
CN106802955B (zh) | 一种图片数据缓存方法 | |
CN107483631B (zh) | 一种控制缓存实现移动互联网络服务访问的方法 | |
CN104778270A (zh) | 一种用于多文件的存储方法 | |
CN103282889A (zh) | 用于数据储存系统的端点高速缓存 | |
CN107911799B (zh) | 一种利用智能路由的方法 | |
CN102624881A (zh) | 一种面向移动设备的服务缓存系统架构及开发方法 | |
CN106599152A (zh) | 一种数据缓存方法及系统 | |
CN108415962A (zh) | 一种云存储系统 | |
CN110109958A (zh) | 缓存处理方法、装置、设备及计算机可读存储介质 | |
CN102999319B (zh) | 一种基于aop技术缓存函数执行结果的方法及系统 | |
CN109376125A (zh) | 一种元数据存储方法、装置、设备及计算机可读存储介质 | |
CN106372266A (zh) | 一种基于切面和配置文件的云操作系统缓存及访问方法 | |
CN113031864B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及系统 | |
CN108614847A (zh) | 一种数据的缓存方法及系统 | |
CN110245129A (zh) | 一种分布式全局数据去重方法和装置 | |
CN111723115A (zh) | 基于多级缓存的数据统计方法、装置、终端及存储介质 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
US20220342888A1 (en) | Object tagging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |