服务的调用方法及装置与流程

文档序号:15752021发布日期:2018-10-26 17:57阅读:200来源:国知局
服务的调用方法及装置与流程

本公开涉及大数据技术领域,尤其涉及一种服务的调用方法及装置。



背景技术:

现有技术中,web服务器接收浏览器所发送的web服务调用请求,web服务器处理该请求、连接相应的数据源、执行相应的sql语句,从而得到针对该请求的响应数据。

然而,在数据源中的数据量较大并且sql语句较复杂时,用户获得响应数据的时间超过5秒,甚至可能超过10秒,这影响了用户的体验。



技术实现要素:

有鉴于此,本公开提出了一种服务的调用方法及装置。

根据本公开的一方面,提供了一种服务的调用方法,应用于数据服务服务器dss,所述调用方法包括:

获取服务的调用信息,所述调用信息包括服务标识和所述服务标识所标识的服务的调用频度;

根据服务标识所标识的服务的调用频度,确定服务标识所标识的服务所属的类别;

若服务标识所标识的服务所属的类别为第一类,则开启服务标识所标识的服务的响应缓存功能。

根据本公开的另一方面,提供了一种服务的调用装置,应用于数据服务服务器dss,所述调用装置包括:

获取模块,用于获取服务的调用信息,所述调用信息包括服务标识和所述服务标识所标识的服务的调用频度;

确定模块,用于根据服务标识所标识的服务的调用频度,确定服务标识所标识的服务所属的类别;

开启模块,用于若服务标识所标识的服务所属的类别为第一类,则开启服务标识所标识的服务的响应缓存功能。

本公开的实施例提供的技术方案可以包括以下有益效果:根据服务的调用频度对服务进行分类,自动开启第一类服务的响应缓存功能,在第一次接收到针对第一类服务的调用请求时,从数据源获取响应数据并将响应数据存储在缓存中,对于第一次之后接收到的针对第一类服务的调用请求,直接从缓存中获取响应数据,由此,在第一次接收到针对第一类服务的调用请求之后,每次接收到针对第一类服务的调用请求仅需要从缓存中获取响应数据,相比于每次接收到针对第一类服务的调用请求都需要从数据源获取响应数据,减少了针对调用请求的响应时间,提高了服务的调用速度,从而提高了用户的体验。

并且,由于根据服务的调用频度对服务进行分类,自动开启第一类服务的响应缓存功能,因此,相比于手动开启服务的响应缓存功能,减少了维护人员的工作量和误操作,提高了工作效率,简化了工作流程。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1是根据一示例性实施例示出的一种webservice系统的示意图。

图2是根据一示例性实施例示出的一种服务的调用方法的流程图。

图3是根据一示例性实施例示出的一种服务的调用装置的结构框图。

图4是根据一示例性实施例示出的一种用于服务的调用装置900的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

为便于说明,以下首先对本公开涉及的部分概念进行解释说明。

ws(webservice,web服务)是指线上运行的服务,在线服务在线时每秒有多个用户向该在线服务发起请求。在线服务可为用户提供多种数据,在线服务是不同机构暴露数据给用户的一种便利安全的方式。

图1是根据一示例性实施例示出的一种webservice系统的示意图。如图1所示,该webservice系统包括数据源、dss(dataservicesserver,数据服务服务器)和应用。

数据源包括:rdbms(relationaldatabasemanagementsystem,关系数据库管理系统)、excel、jndi(javanaminganddirectoryinterface,java命名和目录服务接口)datasources和其他数据源。其他数据源例如为csv(comma-separatedvalues,逗号分隔值)文件、cassandra、googlespreadsheets(在线电子表格工具)、rdf(resourcedescriptionframework,资源描述框架)、以及customdatasources等。

dss(例如,wso2dss)根据数据源所提供的数据,将sql语句封装为soap/rest(simpleobjectaccessprotocol/representationalstatetransfer,简单对象访问协议/表述性状态转移)web服务,并且发布所生成的web服务。应用例如为浏览器,在用户访问应用时,应用调用dss所发布的web服务。

在接收到调用请求时,dss通过连接数据源并执行sql语句来从数据源获取针对调用请求的响应数据,并且发送该响应数据。这样,在数据源中的数据量较大并且sql语句较复杂时,针对调用请求的响应时间超过了5秒,甚至超过了10秒,影响了用户的体验。

当然,dss还提供了响应缓存(responsecatching)功能,维护人员可以手动开启服务的响应缓存功能。若开启了服务的响应缓存功能,则在第一次接收到针对该服务的调用请求时,从数据源获取响应数据并将响应数据存储至缓存中,这样,在第一次之后接收到针对该服务的调用请求时,直接从缓存中获取响应数据,从而可以减少针对该服务的响应时间。

然而,维护人员不知道开启哪个服务的响应缓存功能,若开启所有服务的响应缓存功能,则缓存的响应数据非常大,占用dss的内存,影响dss的运行速度,增加了针对服务的响应时间。另外,要开启响应缓存功能的服务可能是动态变化的,这使得维护人员需要频繁更改服务的响应缓存机制,需要耗费大量的人力,维护成本较大。

基于此,本公开的实施例提出一种服务的调用方法及装置。

图2是根据一示例性实施例示出的一种服务的调用方法的流程图,该调用方法可应用于webservice系统中的dss。如图2所示,该调用方法可包括如下步骤。

在步骤s201中,获取服务的调用信息,所述调用信息包括服务标识和所述服务标识所标识的服务的调用频度。

在一种实现方式中,在dss接收到调用请求后,dss根据调用请求所携带的服务标识确定调用请求所请求的服务,根据该服务的调用日志,统计该服务在单位时间内的调用次数、即调用频度。

在另一种实现方式中,dss可以获取所有服务的调用日志,根据调用日志周期性地统计单位时间内每个服务的调用次数、即调用频度。

在一种可能的实现方式中,dss以预定周期将服务的调用信息存储至数据表中,步骤s201可以包括:从数据表获取调用信息。调用信息包括服务标识和对应的调用频度。

本实施例中,响应于增加数据表ds_statistics以及修改dss的wa02statistics模块的代码,dss将服务的调用信息存储在数据表ds_statistics中,由此dss可以从数据表获取服务标识和调用频度。数据表ds_statistics包括调用频度字段和服务标识字段,每个服务标识字段具有相应的调用频度字段。不同的服务标识所对应的调用频度既可以相同也可以不同。dss周期性地更新数据表中的数据。示例性的,dss每天00:00(或每周一的00:00)统计各服务的调用频度,并根据统计出的调用频度来更新数据表中的数据。

在步骤s203中,根据服务标识所标识的服务的调用频度,确定服务标识所标识的服务所属的类别。

本实施例中,dss可以根据获取的调用频度和分类策略对服务进行分类。在一种实施方式中,服务包括热服务和冷服务,其中热服务表示调用频度超过预设频度(例如,300次/天)的服务,冷服务表示调用频度未超过预设频度的服务。相应地,分类策略可以包括:若服务的调用频度超过预设频度,则确定为该服务所属的类别为第一类;若服务的调用频度未超过预设频度,则确定为该服务所属的类别为第二类。第一类服务对应于热服务,第二类服务对应于冷服务。

在一种可能的实现方式中,步骤s203可以包括:

根据服务标识所标识的服务的调用频度是否大于或等于频度阈值,确定服务标识所标识的服务所属的类别,其中,当服务标识所标识的服务的调用频度大于或等于频度阈值时,确定为服务标识所标识的服务所属的类别为第一类。

本实施例中,将服务的调用频度与频度阈值进行比较,若服务的调用频度大于或等于频度阈值,则该服务所属的类别为第一类(即,该服务为热服务);若服务的调用频度小于频度阈值,则该服务所属的类别为第二类(即,该服务为冷服务)。

在一种可能的实现方式中,上述调用方法还可以包括:将服务标识和所述服务标识所标识的服务所属的类别存储至类别表中;

相应地,上述步骤s203可以包括:根据服务标识查询所述类别表,将与服务标识相对应的类别确定为所述服务标识所标识的服务所属的类别。

本实施例中,dss将服务标识和确定出的类别存储在类别表ds_type中,类别表ds_type包括服务标识字段和类别字段,其中类别字段的取值包括1或0。若类别字段取值为1,则服务所属的类别为第一类;若类别字段取值为0,则服务所属的类别为第二类。dss周期性地更新类别表中的数据。示例性的,dss每天01:00(或每周一的01:00)确定各服务所属的类别,根据确定出的类别来更新类别表中的数据。dss可以将类别表中的服务标识所对应的类别确定为服务标识所标识的服务所属的类别。

例如,若dss查询到类别表中的一个表项中的服务标识字段为s1并且类别字段为1,另一个表项中的服务标识字段为s2并且类别字段为0,则dss可以确定出s1所标识的服务所属的类别为第一类并且s2所标识的服务所属的类别为第二类。

在步骤s205中,若服务标识所标识的服务所属的类别为第一类,则开启服务标识所标识的服务的响应缓存功能。

本实施例中,根据服务所属的类别控制是否开启服务的响应缓存功能。具体地,若服务所属的类别为第一类,则开启该服务的响应缓存功能;若服务所属的类别不是第一类(例如,服务所属的类别为第二类),则不开启该服务的响应缓存功能。示例性的,若类别表中的类别字段的取值为1,则开启与该类别字段相对应的服务标识所标识的服务的响应缓存功能。若类别表中的类别字段的取值为0,则不开启与该类别字段相对应的服务标识所标识的服务的响应缓存功能。

在一种实现方式中,在第一次接收到针对开启了响应缓存功能的服务的调用请求时,从数据源获取开启了响应缓存功能的服务的响应数据,并且将该响应数据存储至缓存中;在所述第一次之后再接收到针对开启了响应缓存功能的服务的调用请求时,从所述缓存获取所述响应数据并发送所述响应数据。

本实施例中,对于第一次之后接收到的针对第一类服务的调用请求,不是从数据源获取响应数据,而是直接从缓存中获取响应数据。

因此,根据服务的调用频度对服务进行分类,自动开启第一类服务的响应缓存功能,在第一次接收到针对第一类服务的调用请求时,从数据源获取响应数据并将响应数据存储在缓存中,对于第一次之后接收到的针对第一类服务的调用请求,直接从缓存中获取响应数据,由此,在第一次接收到针对第一类服务的调用请求之后,每次接收到针对第一类服务的调用请求仅需要从缓存中获取响应数据,相比于每次接收到针对第一类服务的调用请求都需要从数据源获取响应数据,减少了针对调用请求的响应时间,提高了服务的调用速度,从而提高了用户的体验。

并且,由于根据服务的调用频度对服务进行分类,自动开启第一类服务的响应缓存功能,因此,相比于手动开启服务的响应缓存功能,减少了维护人员的工作量和误操作,提高了工作效率,简化了工作流程。

本公开的实施例仅开启第一类服务的响应缓存功能而不开启除第一类服务以外的其他类服务的响应缓存功能,这样,相比于现有技术中的开启所有服务的响应缓存功能,本公开的实施例仅开启小部分服务的响应缓存功能,由此,不仅可以减少针对开启了响应缓存功能的服务的响应时间,而且还能够减少缓存的响应数据的数据量,从而不会降低dss的运行速度。

在一种可能的实现方式中,上述调用方法还可以包括:

在开启服务标识所标识的服务的响应缓存功能时,启动定时器;

在所述定时器到时且接收到针对开启了响应缓存功能的服务的调用请求时,更新缓存中的开启了响应缓存功能的服务的响应数据。

本实施例中,在定时器到时时,若首次接收到针对开启了响应缓存功能的服务的调用请求,则从数据源获取开启了响应缓存功能的服务的响应数据,并使用该响应数据替换缓存中所存储的针对该服务的响应数据,从而更新缓存中的响应数据。换言之,周期性地自动更新缓存中的响应数据(该周期为定时器的定时)。示例性的,定时器的定时为1分钟。

由于dss周期性地自动更新缓存中的响应数据,因此,dss在缓存中存储的响应数据随服务的响应数据的变化而变化,这样,即使服务的响应数据发生改变,dss也能够从缓存中获取更新后的响应数据,提高了服务的调用准确性。

图3是根据一示例性实施例示出的一种服务的调用装置的结构框图,如图3所示,该调用装置300可应用于webservice系统中的dss。该调用装置300可包括获取模块310、确定模块330和开启模块350。

获取模块310用于获取服务的调用信息,所述调用信息包括服务标识和所述服务标识所标识的服务的调用频度。确定模块330与获取模块310连接,用于根据服务标识所标识的服务的调用频度,确定服务标识所标识的服务所属的类别。开启模块350与确定模块330连接,用于若服务标识所标识的服务所属的类别为第一类,则开启服务标识所标识的服务的响应缓存功能。

在一种可能的实现方式中,在第一次接收到针对开启了响应缓存功能的服务的调用请求时,从数据源获取开启了响应缓存功能的服务的响应数据,并且将所述响应数据存储至缓存中;

在所述第一次之后再接收到针对开启了响应缓存功能的服务的调用请求时,从所述缓存获取所述响应数据并发送所述响应数据。

在一种可能的实现方式中,调用装置300还可以包括:启动模块(未示出),用于在开启服务标识所标识的服务的响应缓存功能时,启动定时器;

更新模块(未示出),用于在所述定时器到时且接收到针对开启了响应缓存功能的服务的调用请求时,更新缓存中的开启了响应缓存功能的服务的响应数据。

在一种可能的实现方式中,调用装置300还可以包括:存储模块(未示出),用于以预定周期将服务的调用信息存储至数据表中,

相应地,所述获取模块310被配置为从所述数据表获取所述调用信息。

在一种可能的实现方式中,确定模块330被配置为:

根据服务标识所标识的服务的调用频度是否大于或等于频度阈值,确定服务标识所标识的服务所属的类别,其中,当服务标识所标识的服务的调用频度大于或等于频度阈值时,确定为服务标识所标识的服务所属的类别为第一类。

在一种可能的实现方式中,调用装置300还可以包括:存储模块(未示出),用于将服务标识和所述服务标识所标识的服务所属的类别存储至类别表中,

相应地,所述确定模块330被配置为:根据服务标识查询所述类别表,将与服务标识相对应的类别确定为所述服务标识所标识的服务所属的类别。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图4是根据一示例性实施例示出的一种用于服务的调用装置900的框图。参照图4,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与服务的调用逻辑对应的机器可执行指令以执行上文所述的服务的调用方法。

本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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