一种信息获取方法和装置与流程

文档序号:11843159阅读:186来源:国知局
一种信息获取方法和装置与流程

本发明涉及网络技术,特别涉及一种信息获取方法和装置。



背景技术:

分布式系统架构的数据平台,可以接收到多个数据请求,数据平台可以根据该请求去外部系统获取需要的数据。在实际的业务执行中,有可能平台接收到的多个请求都是要获取相同的数据,则平台要执行多次调用,即执行多次向外部系部获取数据的过程。这种方式对于平台和外部系统来说,都比较消耗处理资源,网络传输次数多,也降低了对数据请求的响应速度。



技术实现要素:

有鉴于此,本发明提供一种信息获取方法和装置,以提高信息获取效率且节省处理资源。

具体地,本发明是通过如下技术方案实现的:

第一方面,提供一种信息获取方法,包括:

接收对目标方法的远程调用请求,所述请求包括:所述目标方法的方法信息、以及注解标识,所述注解标识用于表示调用目标方法的结果数据需要存储;

在确定本地存储有所述方法信息时,由本地获取与所述方法信息对应的结果数据,所述结果数据是目标方法先前调用时获取并存储。

第二方面,提供一种信息获取装置,包括:

请求接收模块,用于接收对目标方法的远程调用请求,所述请求包括:所述目标方法的方法信息、以及注解标识,所述注解标识用于表示调用目标方法 的结果数据需要存储;

调用处理模块,用于在确定本地存储有所述方法信息时,由本地获取与所述方法信息对应的结果数据,所述结果数据是目标方法先前调用时获取并存储。

本发明提供的信息获取方法和装置,通过在方法调用请求中携带注解标识,并据此确定本地存储方法信息时,由本地获取结果数据,从而提高了信息获取效率且节省处理资源。

附图说明

图1是一个例子中数据计算平台所在的系统架构图;

图2是一个例子中数据计算平台的处理原理图;

图3是一个例子中信息获取方法的流程图;

图4是一个例子中信息获取方法的流程图;

图5是一个例子中信息获取方法的应用效果图。

具体实施方式

一个用于获取数据的平台,可以接收很多的数据请求,平台要根据该请求从平台外部的系统获取数据。图1示例了一个数据计算平台11,该平台可能会接收到分别由业务系统12、业务系统13等多个系统发送的数据请求,图1中仅示例了两个业务系统,实际应用中可以有更多,或者平台接收的多个数据请求也可以是同一个业务系统在不同的业务处理阶段发送的,本实施例并不限制该多个数据请求的发送设备或者发送时间。

本实施例中,假设数据计算平台11接收到多个数据请求,均是请求相同的数据。例如,业务系统12是用于处理支付业务的,需要使用涉及到目标群体的客户名称、所属地区等客户信息;而业务系统13是用于处理结算业务的,也同样需要使用上述目标群体的客户信息。如果该客户信息由数据系统14提供,那么在传统方式中,平台需要分别根据各个数据请求向数据系统14请求获取客户信息,比如在接收到业务系统12的请求时从数据系统14获取客户信息,在接 收到业务系统13的请求时,再执行一次从数据系统14获取客户信息的过程,且获得的都是目标群体的客户信息,即获得的数据相同。很显然,上述的多次数据获取过程是重复性的处理,尤其是在平台要通过网络15进行远程获取数据时,多次的网络传输降低了响应数据请求的效率,也重复消耗了平台和数据系统双方的处理资源和性能。基于此,本实施例的信息获取方法,目的是减少重复性的数据获取,以提高信息获取效率且节省处理资源。

为了实现上述目的,本实施例的数据计算平台11中设置了请求接收模块21和调用处理模块22,并且通过设置这些模块平台可以执行图3所示的流程:

301、接收对目标方法的远程调用请求,请求包括:目标方法的方法信息、以及注解标识,所述注解标识用于表示调用目标方法的结果数据需要存储;

302、在确定本地存储有所述方法信息时,由本地获取与所述方法信息对应的结果数据,所述结果数据是目标方法先前调用时获取并存储。

在步骤301中,请求接收模块21可以接收上述业务系统的数据请求,具体实施中,平台向数据系统获取数据,可以采用远程方法调用的方式实现。

举例如下:仍以上述的客户信息的获取为例,假设要获取客户id=001、002、005的这几个客户的客户信息(例如,客户名称、所在地区等),数据计算平台11要向数据系统14发送对于方法x()的调用请求,即要调用方法x()。方法x()可以是一个函数,为该函数提供方法参数(如,上述客户id),该函数就可以返回结果数据(即,对应客户id的客户名称、所在地区等客户信息)。因此,只要数据计算平台将方法名称x,方法参数携带在调用请求中发送至数据系统14,该系统就可以使用方法x()和方法参数,得到结果数据返回给平台。

本实施例中,平台接收到数据请求,也可以称为接收到对目标方法的远程调用请求,目标方法例如是上述的方法x(),并且业务系统在发送该请求时会携带方法参数,以根据该方法参数告知数据系统返回何种数据;并且,上述的远程调用请求中包括的方法名称和方法参数可以称为方法信息。需要说明的是,本实施例的远程调用请求中还携带注解标识,该注解标识的作用是用于表示调用目标方法的结果数据是否需要存储在本地;本实施例并不限制注解标识的具 体形式,只要能起到上述作用即可。

关于上述的注解标识的作用进一步解释如下:注解标识可以作为目标方法的一部分,例如可以是设置在目标方法的方法头部信息中;当平台接收到对某个方法的调用请求时,将查看该方法中是否包括注解标识,如果包括注解标识则表示调用该方法后数据系统返回的结果数据需要平台存储在平台本地;如果方法中不包括注解标识,则表示结果数据不需要平台存储在本地。是否存储在本地,取决于该方法调用是否会重复性的多次进行,如果平台会多次接收到对于某个相同方法(包括方法名称和方法参数的相同,对应的结果数据也相同)的调用,则可以为该方法增加注解标识,相当于通知平台将结果数据存储在本地,以避免后续的重复调用。因此,通过注解标识,用户也可以灵活的配置需要本地存储结果数据的方法。

对于数据计算平台11来说,也只有当被请求调用的方法包含该注解标识时,平台才需要执行步骤302,即才可能本地存储结果数据;否则,如果被请求调用的方法不包含注解标识,本地通常并未存储其结果数据,也就不需要本地查找了。其中,本地存储的结果数据是先前该方法调用时获取的,这里的先前调用的时间是在本次调用之前,例如是在首次接收到对于该方法的调用时就将结果数据存储在本地,能够最大程度地避免后续的重复调用。

在步骤302中,平台将判断本地是否存储有请求调用的方法对应的结果数据,例如,平台在本地可以是以如下表1的形式来存储结果数据:

表1方法对应的结果数据

如上的表1所示,结果数据例如可以存储在平台的结果数据库中,并且,以键值对key-value的形式存储调用方法与结果数据之间的对应关系,其中的key可以包括方法名称、方法参数,结果数据可以是与方法参数对应的返回信息, 即只要调用的是同一方法且方法参数相同,返回的结果数据就是相同的。

如果步骤301中接收到的远程调用请求携带注解标识,则有可能该方法的结果数据在之前已经存储在本地了,因此平台要判断下本地是否已经存储上述结果数据。比如,平台可以查找结果数据库,看key中是否有与调用请求携带的方法信息相同的信息,如果有则表示已经存储,平台获取对应的结果数据;否则表示平台未存储,可能是该方法的首次调用,则平台进行常规的方法调用流程,即开始通过网络15远程调用方法,并接收结果数据,然后将方法信息与对应的结果数据存储在本地,以备后续该方法再次调用时本地获取。

在一个实施例中,结合图2所示,平台在接收到对于目标方法的远程调用请求后,对该方法进行判断是否本地存储有结果数据,可以是按照如下方法执行:平台中设置的调用处理模块22可以是一个方法拦截器(Method Interceptor),该拦截器可以将平台向外部的数据系统发送的远程方法调用请求拦截下来,参见图4所示。如果请求中的方法不携带注解标识,拦截器可以继续执行常规流程,进行远程调用即可。如果携带注解标识,拦截器可以判断本地是否存储有该方法对应的结果数据,例如,拦截器获取key,即获取请求中携带的方法名称、方法参数等信息,并查看本地结果数据库是否有与该key匹配的信息。

如果本地存储有方法信息,方法拦截器Method Interceptor将从本地获取结果数据返回给请求接收模块,这是步骤401-405的流程。而如果拦截器在403中发现本地未存储方法信息,则可能本次是该方法的首次调用,则拦截器将向外部数据系统进行远程方法调用,获取结果数据,并将结果数据存储在本地,以供下次该方法调用时直接从本地获取结果即可,即步骤406-409的流程。结合图2来看,相当于调用处理模块在方法执行前,就将对方法的远程调用拦截下来,并转到本地的存储获取该方法对应的结果数据,从而相对于多次重复的远程调用来说,减少了网络传输的次数,简化了数据获取的步骤,节省了处理资源的消耗,也提高了业务数据获取的效率。

本实施例中,结果数据在本地存储的结果数据库,可以是本地的事件上下文23,并且存储形式也不限制于表1的形式;事件上下文即线程上下文(Thread Context),可以理解为用于存储与该线程执行的相关信息的容器,线程即平台中的上述方法调用和数据获取的实际执行者。通过存储在事件上下文中,节省本地数据库的空间,并且数据获取的速度较快。

在另一个实施例中,平台的调用处理模块,还用于在接收对目标方法的远程调用请求之后,由本地获取与方法信息对应的结果数据之前,查看该请求对应的请求时间,并判断该请求时间距离目标方法先前调用时的时间是否在预设时间范围内,如果在预设时间范围,才继续获取结果数据。

举例如下:要请求的数据系统的数据,有些数据是比较稳定的,即长时间不会变化,平台将这些稳定数据一直存储在本地是可以的;但是有些数据是不稳定的,是动态变化的,比如在当前时间客户所在地区是北京,也可能30个小时以后客户所在地区变更为上海;对于这种动态数据,如果平台一直存储,也一直从本地获取,将导致数据获取错误。基于此,平台的调用处理模块可以记录某些数据的有效时长(即预设时间范围),比如30小时,并且记录首次获取到该数据的时间,与本次调用时间进行比较,如果超出30小时,可能数据已经无效了,则平台将重新进行远程调用获取最新的数据,而本地存储的数据,平台可以删除,包括删除结果数据及其对应的方法信息。

上述的记录时间,例如可以是接收到调用请求的时间、或者获取到数据系统返回数据的时间、或者将返回的结果数据记录在本地的时间等,只要是大致的时间范围,基本符合上述的检测目的即可。此外,本实施例还以某一项业务为例,将该业务应用了本实施例的信息获取方法,该业务的执行过程中涉及到多次重复的方法调用,采用本实施例的信息获取方法后,经过统计,参见图5,业务执行中的远程调用次数有了明显的减少,采用该方法后的调用次数相对于优化前大大减少,节省了处理资源,提高了数据平台的性能。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1