一种数据调用方法、装置、电子设备及存储介质与流程

文档序号:26279081发布日期:2021-08-13 19:35阅读:99来源:国知局
一种数据调用方法、装置、电子设备及存储介质与流程

本申请涉及数据调用技术领域,尤其涉及一种数据调用方法、装置、电子设备及存储介质。



背景技术:

一个大型或复杂的应用通常会由多个微服务组成,每个微服务仅关注和完成自身的任务,各微服务在工作时不会相互影响,使得整个应用的灵活性、可扩展性和稳定性均较高。当前在微服务架构下进行联合查询时主要有两种方案,一种是每个微服务关联一个单独的数据库,数据库中存储该微服务所需的一个业务数据,当进行联合查询时,分别调用各微服务的接口从各自的数据库中获取业务数据,再对数据处理后展示出来,另一种是先将数据库按照微服务的要求来切分成多个,每个对应一个微服务,然后实时将各微服务对应的数据库部分中的数据同步到另一个数据库中,在进行联合统计查询时从该数据库中获取所需数据并处理后进行展示。然而,第一种方案由于各数据库较为分散,而联合查询同又需要用到多个微服务,使得涉及到的操作非常繁琐,造成效率低下,第二种方案效率较高,但相应地开发成本也较高,仅适合大型高并发的企业,对中小型企业不够友好。

因此,现有微服务架构下的数据调用存在无法兼顾成本和效率的技术问题,需要改进。



技术实现要素:

本申请提供一种数据调用方法、装置、电子设备及存储介质,用以缓解现有微服务架构下的数据调用无法兼顾成本和效率的技术问题。

为解决上述技术问题,本申请提供以下技术方案:

本申请提供一种数据调用方法,包括:

获取各业务数据的业务关联度;

根据所述业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,所述业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值;

生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中;

接收查询请求,所述查询请求携带至少一个查询任务;

根据所述查询任务从所有微服务中确定目标微服务,并从所述目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

本申请还提供一种数据调用装置,包括:

获取模块,用于获取各业务数据的业务关联度;

得到模块,用于根据所述业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,所述业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值;

生成模块,用于生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中;

接收模块,用于接收查询请求,所述查询请求携带至少一个查询任务;

调用模块,用于根据所述查询任务从所有微服务中确定目标微服务,并从所述目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

本申请还提供一种电子设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行上述任一项所述的数据调用方法中的操作。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现上述任一项所述的数据调用方法。

有益效果:本申请提供一种数据调用方法、装置、电子设备及存储介质,该方法先获取各业务数据的业务关联度,并根据业务关联度和预设阈值,将各业务数据分成单独的第二业务数据和多个业务数据组,每个业务数据组中的各第一业务数据业务关联度较高,不同业务数据组中的第一业务数据的业务关联度较低,第二业务数据与其他所有业务数据的业务关联度均较低,然后生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,且生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中,再接收查询请求,根据查询请求携带的查询任务从所有微服务中确定目标微服务,并从目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。本申请将业务关联度较高的一组业务数据存储至单个微服务关联的数据库中,业务关联度较低的单个业务数据分别存储至各微服务关联的数据库中,在进行查询时,当同一查询请求中携带多个查询任务,各查询任务所需的各业务数据的业务关联度通常较高,则此种设置可以尽可能使得查询请求所需的业务数据都在同一个数据库中,避免了从多个数据库中调用数据导致操作繁琐和效率低下的问题,当同一查询请求中仅携带一个查询任务,则可以直接从各微服务关联的数据库中取出所需的业务数据,两种场景下均不需要将所有微服务的业务数据都同步到其他数据库后再调用,因此成本较低,即本申请实现了成本和效率的兼顾。

附图说明

下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。

图1为本申请的数据调用方法适用的场景示意图。

图2为本申请的数据调用方法的流程示意图。

图3为本申请的数据调用方法中查询请求与业务数据的调用关系示意图。

图4为本申请的数据调用方法中业务数据的分类示意图。

图5为合同微服务关联的数据库中业务数据的存储示意图。

图6为监控微服务关联的数据库中业务数据的存储示意图。

图7为本申请的数据调用装置的结构示意图。

图8为本申请的电子设备的结构示意图。

具体实施方式

下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请提供一种数据调用方法、装置、电子设备及存储介质,用以缓解现有的数据调用方法中无法兼顾成本和准确性的技术问题。

请参阅图1,图1为本申请的数据调用方法适用的场景示意图,该系统可以包括终端以及服务器,终端之间、服务器之间、以及终端与服务器之间通过各种网关组成的互联网等方式连接通信,其中,该应用场景中包括客户端11和服务器12;其中:

客户端11包括但不限于具有显示功能的电脑、手机等移动终端和固定终端,客户端11用于展示查询界面;

服务器12包括本地服务器和/或远程服务器等。

客户端11和服务器12位于无线网络或有线网络中,以实现两者之间的数据交互,其中:

服务器12先获取各业务数据的业务关联度,并根据业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值,然后生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中,用户在客户端11的查询界面上选择查询条件并发出查询请求,服务器12接收到查询请求,查询请求携带至少一个查询任务,根据查询任务从所有微服务中确定目标微服务,并从目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

需要说明的是,图1所示的系统场景示意图仅仅是一个示例,本申请描述的服务器以及场景是为了更加清楚地说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

请参阅图2,图2是本申请的数据调用方法的流程示意图,该方法包括:

s201:获取各业务数据的业务关联度。

在本申请中,微服务架构指通过开发一系列小型服务的方式来实现一个应用的软件架构模式,每个这样的小型服务为一个微服务,各微服务单独完成自己的业务,可以单独开发和部署,各微服务之间可以相互调用。每个微服务关联有一个单独的数据库,微服务相关功能的实现需要调用其关联数据库中的业务数据。

在本申请中,业务数据指完成一个业务所需的各项数据的集合,具体为需要存储在数据库中的表,根据业务复杂程度的不同,每个业务数据所包含的表的数量可以是一个,也可以是多个。以应用场景为工程管理为例,业务可以是合同交底业务、合同文件业务、合同管理业务、考勤设备管理业务、考勤记录业务、监控设备信息业务、图纸业务等,则业务数据可以是合同交底表、合同文件表、合同管理表、考勤设备管理表、考勤记录表、监控设备信息表、图纸表等,每个类型的表可以包括一个或多个。

各业务数据之间具有业务关联度,业务关联度指两个业务数据同时被调用的概率,当两个业务数据同时被调用的概率较高时,表示两者的业务关联度高,当两个业务数据同时被调用的概率较低或不会被同时调用时,表示两者的业务关联度低。

在一种实施例中,s201具体包括:获取第一历史调用信息,所述第一历史调用信息包括第一预设历史时间段内历史查询请求的总数量、以及各历史查询请求与业务数据的调用关系;根据所述调用关系,确定任意两个业务数据同时被调用的次数;根据所述总数量和任意两个业务数据同时被调用的次数,确定各业务数据的业务关联度。

在获取各业务数据的业务关联度时,可以通过对第一历史调用信息进行分析得到。第一历史调用信息包括第一预设历史时间段内历史查询请求的总数量、以及各历史查询请求与业务数据的调用关系,第一预设历史时间段可以是历史时期内的某几个月、某一年或者某几年,具体时长可根据需要选择,当选择的时长越长时,第一预设历史时间段内的信息样本越多,分析的结果也越准确。在第一预设时间段内系统会接收到多个历史查询请求,各历史查询请求与业务数据之间具有调用关系,调用关系指每个历史查询请求需要调用哪一个或哪几个业务数据,同一历史查询请求需要调用的多个业务数据视为同时调用。根据各历史查询请求与业务数据的调用关系,可以确定任意两个业务数据同时被调用的次数,然后根据历史查询请求的总数量和任意两个业务数据同时被调用的次数,得到第一预设历史时间段内任意两个业务数据同时被调用的概率,根据概率的高度确定各业务数据的业务关联度的高低。

具体地,如图3所示,以预设历史时间段内收到了30个历史查询请求为例,各历史查询请求与业务数据的调用关系为:10个历史查询请求调用了业务数据1+业务数据2+业务数据3,5个历史查询请求调用了业务数据1+业务数据2,2个历史查询请求调用了业务数据2和业务数据3,12个历史查询请求调用了业务数据4和业务数据5,1个历史查询请求调用了业务数据6。

根据上述数据,可以得到任意两个业务数据同时被调用的次数分别为:业务数据1+业务数据2,15次;业务数据1+业务数据3,10次;业务数据2+业务数据3,12次;业务数据4+业务数据5,12次;其他任意两个业务数据,0次。根据历史查询请求的总数量30个和任意两个业务数据同时被调用的次数,得到任意两个业务数据同时被调用的概率,也即业务关联度为:业务数据1+业务数据2,50%;业务数据1+业务数据3,33.3%;业务数据2+业务数据3,40%;业务数据4+业务数据5,40%;其他任意两个业务数据,0。

需要说明的是,上述实施例中以第一预设历史时间段内收到了30个历史查询请求,业务数据有6个为例进行说明,在实际应用场景中,第一预设历史时间段内收到的历史查询请求的总数量远大于30个,系统中业务数据的数量也远大于6个,即第一预设历史时间段内的样本较为丰富和庞大,则相应地得到的各业务数据的业务关联度也更加准确。

在一种实施例中,s201具体又可以包括:获取多个关键业务数据,各关键业务数据的业务类型不同;获取第二历史调用信息,所述第二历史调用信息包括第二预设历史时间段内各关键业务数据的第一历史调用次数、以及其他业务数据与各关键业务数据同时被调用的第二历史调用次数;根据所述第一历史调用次数和所述第二历史调用次数,确定各业务数据的业务关联度。

在获取各业务数据的业务关联度时,可以先获取多个关键业务数据,各关键业务数据的业务类型不同,关键业务数据指在进行某项任务时必然会用到的业务数据,如进行考勤查询任务时,考勤表是必须的业务数据,进行监控查询任务时,监控设备表是必须的业务数据,则可以将这些业务数据作为关键业务数据,由于各关键业务数据的业务类型不同,同时调用两个不同类型关键业务数据的可能极小,因此可以设各关键业务数据的业务关联度为零。

在确定出关键业务数据后,可以通过对第二历史调用信息进行分析得到各业务数据的业务关联度。第二历史调用信息包括第二预设历史时间段内各关键业务数据的第一历史调用次数、以及其他业务数据与各关键业务数据同时被调用的第二历史调用次数,第二预设历史时间段可以是历史时期内的某几个月、某一年或者某几年,具体时长可根据需要选择,当选择的时长越长时,第二预设历史时间段内的信息样本越多,分析的结果也越准确。对于每个关键业务数据,均有其对应的第一历史调用次数,每次被调用时可以是单独被调用,也可以是与其他业务数据一起被调用,因此对于某个关键业务数据,其他业务数据均会产生与其同时被调用的第二历史调用次数,然后根据某个关键业务数据的第一历史调用次数和其他业务数据与该关键业务数据的第二历史调用次数,得到其他业务数据与该关键业务数据的业务关联度。依次计算得到其他业务数据与每个关键业务数据的业务关联度,最终可以得到整个系统中各业务数据的业务关联度。

具体地,假设有4个关键业务数据,第一关键业务数据、第二关键业务数据、第三关键业务数据和第四关键业务数据的第一历史调用次数分别为30次、50次、60次、10次,对于第一关键业务数据,在30次调用中,第一其他业务数据与第一关键业务数据同时被调用的第二历史调用次数为15次,第二其他业务数据与第一关键业务数据同时被调用的第二历史调用次数为5次,第三其他业务数据与第一关键业务数据同时被调用的第二历史调用次数为10次,第四其他业务数据与第一关键业务数据同时被调用的第二历史调用次数为0次,则可以得到第一其他业务数据、第二其他业务数据、第三其他业务数据、第四其他业务数据与第一关键业务数据的业务关联度分别为50%、16.7%、33.3%和0。同样地,依次计算得到各其他业务数据与第二关键业务数据、第三关键业务数据和第四关键业务数据的业务关联度。

需要说明的是,上述实施例中以关键业务数据为4个,其他业务数据也为4个为例进行说明,在实际应用场景中,关键业务数据和其他业务数据的总数量远大于4个,即第二预设历史时间段内的样本较为丰富和庞大,则相应地得到的各业务数据的业务关联度也更加准确。

s202:根据业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值。

在得到各业务数据的业务关联度后,根据业务关联度和预设阈值的大小关系,对各业务数据进行分类,当任意两个业务数据之间的业务关联度大于预设阈值时,表示两个业务数据之间的业务关联度较高;当任意两个业务数据之间的业务关联度大于预设阈值时,表示两个业务数据之间的业务关联度较低。

在分类时,将整个系统的业务数据分为两类,第一类为多个第一业务数据的组合,第二类为各个单独的第二业务数据,其中第一类里面又包括一个或多个业务数据组,每个业务数据组中包括两个或多个第一业务数据,在同一个业务数据组中,各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,即同一业务数据组中任意取一个第一业务数据,都能找到另一个第一业务数据,两者之间的业务关联度较高,因此同一个业务数据组中两个或两个以上的业务数据同时被调用的需求较高。对于两个不同的业务数据组,分别从每组中取出一个第一业务数据,则两者之间的业务关联度较低,也即从不同的业务数据组中同时各调用一个业务数据的需求较低。每个第二业务数据不管与其他第一业务数据还是其他第二业务数据的业务关联度均较低,即第二业务数据通常情况下只会被单独调用。

具体地,如图4所示,根据上述实施例中获取到的各业务数据的业务关联段数据,以预设阈值为35%为例,由于业务数据6与其他业务数据的业务关联段均为0,则业务数据6为第二业务数据。业务数据1和业务数据2的业务关联度、业务数据2和业务数据3的业务关联度、以及业务数据4和业务数据5的业务关联度均大于35%,且业务数据1、业务数据2和业务数据3中的任意一个,与业务数据4的业务关联度均小于35%,与业务数据5的业务关联度也均小于35%,则可以将业务数据1、业务数据2和业务数据3均作为第一业务数据,组合得到一个业务数据组,将业务数据4和业务数据5均作为第一业务数据,组合得到另一个业务数据组,并将业务数据6单独作为第二业务数据。

s203:生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中。

在分类后,每个业务数据组包括多个第一业务数据,各第一业务数据对应一个小业务,将这些第一业务数据组合后,生成该业务数据组对应的第一微服务,则第一微服务可以完成一个更大的业务。每个第一微服务均有其关联的数据库,生成第一微服务时,将该业务数据组中的所有第一业务数据均存储至第一微服务关联的数据库中,第一微服务完成业务时,相应各项功能的实现需要调用其关联的数据库中的各第一业务数据。对于每个第二业务数据,分别生成其对应的第二微服务,则每个第二微服务仅需完成一个小业务,每个第二微服务也均有其关联的数据库,生成第二微服务时,将该第二业务数据存储至第二微服务关联的数据库中,第二微服务完成业务时,相应各项功能的实现也需要调用其关联的数据库中的第二业务数据。

具体地,如图4所示,在得到两个业务数据组和一个单独的第二业务数据后,为第一个业务数据组生成微服务1,并将业务数据1、业务数据2和业务数据3存储至微服务1关联的数据库1中,为第二个业务数据组生成微服务2,并将业务数据4和业务数据5存储至微服务2关联的数据库2中,为业务数据6生成微服务3,并将业务数据6存储至微服务3关联的数据库3中。

以工程管理场景为例,如图5所示,将与合同高度相关的合同交底表、合同文件表、合同管理表等多个第一业务数据存储至合同数据库中,对应的微服务为合同微服务。如图6所示,将与监控高度相关的监控设备信息表、巡检人员表等多个第一业务数据存储至监控数据库中,对应的微服务为监控微服务。此外,对于图纸表这类第二业务数据,单独存储至图纸数据库中,对应的微服务为图纸服务。

s204:接收查询请求,查询请求携带至少一个查询任务。

客户端具有查询界面,用户在查询界面上选择需要查询的选项,每个选项会对应一个查询任务,在选择后进行查询,会生成并向服务器发出查询请求。当仅有一个查询选项时,查询请求为单独查询,仅携带一个查询任务,当有多个查询选项时,查询请求为联合查询,携带多个查询任务。

s205:根据查询任务从所有微服务中确定目标微服务,并从目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

服务器在接收到查询请求时,需要根据查询请求中各查询任务的具体情况,调用对应的业务数据并显示在客户端的查询界面上。在此过程中,需要先确定出目标微服务来响应和处理查询请求,以确定该请求具体需要哪些业务数据,再通过目标微服务从关联的数据库中调用这些业务数据。

具体地,如果用户需要查看姓名是张三的考勤情况,用户在前端设备的查询界面上点击查询按钮,会发出一个查询请求,该查询请求携带与考勤相关的多个查询任务,根据查询任务确定需要调用考勤微服务,则前端通过http或https协议调用考勤微服务的网关,由该网关经过路由来调用考勤微服务,然后从考勤微服务关联的考勤数据库中查询相关的表格,找到张三的考勤记录等信息,将考勤结果再经过网关经过路由器反映到前端。

在一种实施例中,s205具体包括:根据所述查询任务从所有微服务中确定处理所述查询请求的第一目标微服务;判断各查询任务对应的目标业务数据是否都在第一目标微服务关联的第一目标数据库中;若是,从所述第一目标数据库中调用各查询任务对应的目标业务数据,若否,从所有微服务中确定需要调用的第二目标微服务,从所述第一目标数据库中调用第一目标业务数据,通过所述第一目标微服务调用所述第二目标微服务,以从所述第二目标微服务关联的第二目标数据库中调用第二目标业务数据。

用户在查询时,服务器根据查询任务确定应该由哪个微服务来处理查询请求,将该微服务确定为第一目标微服务,然后判断各查询任务对应的目标业务数据是否都在第一目标微服务关联的第一目标数据库中,如果是,直接从第一目标数据库中调用该查询请求所需的所有目标业务数据,此种情况表示上述步骤对业务数据的分类较为准确,可以从同一数据库中获取一个查询请求所需的所以业务数据。如果不是,则还需要从其他数据库中调用一部分业务数据,在调用时,由于第一目标微服务不能直接调用其他数据库中的业务数据,而只能通过微服务之间的相互调用来实现,因此先从第一目标微服务关联的第一目标数据库中调用部分业务数据,也即第一目标业务数据,然后从所有微服务中确定需要调用的第二目标微服务,通过第一目标微服务来调用第二目标微服务,最终从第二目标微服务关联的第二目标数据库中调用剩余部分的第二目标业务数据,此种情况表示前述步骤中对业务数据的分类不够准确,仍然需要从不同的数据库中取出业务数据,则还需要对整个系统进行进一步修正,以使后续同一查询请求所需的业务数据都存储在同一个数据库中。

在一种实施例中,在s205之后还包括:获取第一预设时间段内的第一调用信息,所述第一调用信息包括第一标的微服务处理的多个查询请求、以及各查询请求与业务数据的调用关系;根据所述第一调用信息,判断是否存在标的查询请求,所述标的查询请求调用了至少一个第一标的业务数据,所述第一标的业务数据存储在与所述第一标的微服务不关联的第一数据库中;若是,将所述第一标的业务数据存储至与所述第一标的微服务关联的第二数据库中。

在前述对业务数据分类时,不一定一次性就能得到准确性较高的分类结果,还需要在后续对分类结果进行不断修正。具体地,每次从系统的多个微服务中任意选择一个作为第一标的微服务,获取第一预设时间段内的第一调用信息,第一预设时间段可是一个月或者其他时长,第一调用信息包括第一标的微服务在该段时间内处理的多个查询请求、以及各查询请求与业务数据的调用关系,根据第一调用信息,可以判断各查询请求调用的业务数据是否都在第一标的微服务关联的第二数据库中。如果全都在,表示前述步骤中的分类较为准确,可以使得每次查询请求都只用从一个数据库中调用数据。如果存在某个查询请求,其调用的某个或某些业务数据存储在与第一标的微服务不关联的第一数据库中,表示该业务数据与第二数据库中的业务数据具有较高的业务关联度,需要被同时调用,则将该查询请求作为标的查询请求,该业务数据作为第一标的业务数据,将第一标的业务数据存储至与第一标的微服务关联的第二数据库中。通过上述方法,可以对前述步骤中的分类进行修正,以尽可能保证后续各查询请求所需的业务数据均从同一数据库汇总调用,避免从各数据库中分别调用数据造成的操作繁琐和效率低下。

在一种实施例中,将所述第一标的业务数据存储至与所述第一标的微服务关联的第二数据库中的步骤,包括:判断所述第一预设时间段内,所述第一数据库中是否存在与所述第一标的业务数据同时被调用的其他业务数据;若否,将所述第一标的业务数据存储至与所述第一标的微服务关联的第二数据库中。

当经过判断发现存在第一标的业务数据时,第一标的业务数据与第二数据库中的其他业务数据之间具有一定的业务关联度,因此将第一标的业务数据存储至第二数据库中,当下次遇到同样的查询请求时,可以直接从同一数据库中调用业务数据。为了进一步确定第一标的业务数据是否真的需要从第一数据库中移动至第二数据库中,还可以判断第一预设时间段内,第一数据库中是否存在与第一标的业务数据同时被调用的其他业务数据,如果没有,则表示第一数据库中的其他业务数据与第一标的业务数据的业务关联度不高,第一标的业务数据存储在第一数据库中并不合适,需要将第一标的业务数据存储至第二数据库中;如果有,则可以获取更多时间段内的数据调用信息,进一步确定第一标的业务数据与第一数据库中业务数据的第一业务关联度、以及第一标的业务数据与第二数据库中业务数据的第二业务关联度,根据两者之间的大小关系,决定是否需要合并两个数据库即对应的微服务、或者在两个数据库中均设置第一标的业务数据。

在一种实施例中,在s205之后还包括:获取第二预设时间段内的第二调用信息,所述第二调用信息包括标的数据库对应的多个查询请求、以及各查询请求与标的数据库中业务数据的调用关系;根据所述第二调用信息,判断所述标的数据库中是否存在第二标的业务数据,所述第二标的业务数据在所述第二预设时间段内未被调用;若是,为所述第二标的业务数据生成对应的第二标的微服务,并将所述第二标的业务数据存储至所述第二标的微服务关联的第三数据库中。

在前述步骤进行业务数据的分类后,前端设备中查询界面会随用户的需求产生变化,则会存在一些业务数据,原本的业务关联度较高,在系统使用一段时间后,用户对同时调用这些业务数据的需求降低,则可以将其移出原数据库,将其作为第二业务数据,生成其对应的微服务并存储至单独的数据库中。具体地,每次从系统的多个数据库中任意选择一个作为标的数据库,获取第二预设时间段内的第二调用信息,第二预设时间段可以是一个月或者其他时长,第二调用信息包括标的数据库对应的多个查询请求、以及各查询请求与标的数据库中业务数据的调用关系,根据第二调用信息,可以确定各业务数据的被调用情况,以此来判断是否存在该段时间内未被调用的第二标的业务数据。如果存在,表示用户对这个第二标的业务数据与其他业务数据同时调用的需求较低,可以对第二标的业务数据单独生成微服务和存储单独的数据库,以实现功能和业务的独立,提升整个系统的灵活性、可扩展性和稳定性,同时标的数据库中剩余业务数据仍然可以满足同时被调用的需求。

对于大型系统,采用每个业务一个微服务的方式可以最大程度保证灵活性、可扩展性和稳定性,且开发成本较低,但在联合查询时会需要从多个数据库中都调用数据再综合起来,在每个数据库中都需要一定的反应时间,后续如果数据库格式不同还需要做格式转换等,使得相关操作较为繁琐,效率低下。而在本申请中,对于与其他业务数据的业务关联度较低的业务数据,仍然采用每个业务数据一个单独微服务的模式,可以尽可能保证系统的灵活性、可扩展性和稳定性。而对于业务关联度较高的每组业务数据,将其放在一个数据库中并生成一个微服务,可以使得联合查询时各业务数据均从一个数据库中取出,因此会减少很多繁琐的操作,提高了查询效率。在改进后,整个系统的架构仍然为微服务架构,查询时也不需要将所有业务数据都同步到其他数据库中再调用,因此开发成本也较低。

通过上述实施例可知,本申请的数据调用方法,将业务关联度较高的一组业务数据存储至单个微服务关联的数据库中,业务关联度较低的单个业务数据分别存储至各微服务关联的数据库中,在进行查询时,当同一查询请求中携带多个查询任务,各查询任务所需的各业务数据的业务关联度通常较高,则此种设置可以尽可能使得查询请求所需的业务数据都在同一个数据库中,避免了从多个数据库中调用数据导致操作繁琐和效率低下的问题,当同一查询请求中仅携带一个查询任务,则可以直接从各微服务关联的数据库中取出所需的业务数据,两种场景下均不需要将所有微服务的业务数据都同步到其他数据库后再调用,因此成本较低,即本申请实现了成本和效率的兼顾。

相应的,图7为本申请的数据调用装置的结构示意图,请参阅图7,该数据调用装置包括:

获取模块110,用于获取各业务数据的业务关联度;

得到模块120,用于根据所述业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,所述业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值;

生成模块130,用于生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中;

接收模块140,用于接收查询请求,所述查询请求携带至少一个查询任务;

调用模块150,用于根据所述查询任务从所有微服务中确定目标微服务,并从所述目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

在一种实施例中,获取模块110包括:

第一获取子模块,用于获取第一历史调用信息,所述第一历史调用信息包括第一预设历史时间段内历史查询请求的总数量、以及各历史查询请求与业务数据的调用关系;

第一确定子模块,用于根据所述调用关系,确定任意两个业务数据同时被调用的次数;

第二确定子模块,用于根据所述总数量和任意两个业务数据同时被调用的次数,确定各业务数据的业务关联度。

在一种实施例中,获取模块110包括:

第二获取子模块,用于获取多个关键业务数据,各关键业务数据的业务类型不同;

第三获取子模块,用于获取第二历史调用信息,所述第二历史调用信息包括第二预设历史时间段内各关键业务数据的第一历史调用次数、以及其他业务数据与各关键业务数据同时被调用的第二历史调用次数;

第三确定子模块,用于根据所述第一历史调用次数和所述第二历史调用次数,确定各业务数据的业务关联度。

在一种实施例中,调用模块150包括:

第四确定子模块,用于根据所述查询任务从所有微服务中确定处理所述查询请求的第一目标微服务;

判断子模块,用于判断各查询任务对应的目标业务数据是否都在第一目标微服务关联的第一目标数据库中;

调用子模块,用于若是,从所述第一目标数据库中调用各查询任务对应的目标业务数据,若否,从所有微服务中确定需要调用的第二目标微服务,从所述第一目标数据库中调用第一目标业务数据,通过所述第一目标微服务调用所述第二目标微服务,以从所述第二目标微服务关联的第二目标数据库中调用第二目标业务数据。

在一种实施例中,数据调用装置还包括在调用模块150之后工作的多个模块,所述多个模块包括:

第一获取模块,用于获取第一预设时间段内的第一调用信息,所述第一调用信息包括第一标的微服务处理的多个查询请求、以及各查询请求与业务数据的调用关系;

第一判断模块,用于根据所述第一调用信息,判断是否存在标的查询请求,所述标的查询请求调用了至少一个第一标的业务数据,所述第一标的业务数据存储在与所述第一标的微服务不关联的第一数据库中;

第一存储模块,用于若是,将所述第一标的业务数据存储至与所述第一标的微服务关联的第二数据库中。

在一种实施例中,第一存储模块用于:判断所述第一预设时间段内,所述第一数据库中是否存在与所述第一标的业务数据同时被调用的其他业务数据;若否,将所述第一标的业务数据存储至与所述第一标的微服务关联的第二数据库中。

在一种实施例中,数据调用装置还包括在调用模块150之后工作的多个模块,所述多个模块包括:

第二获取模块,用于获取第二预设时间段内的第二调用信息,所述第二调用信息包括标的数据库对应的多个查询请求、以及各查询请求与标的数据库中业务数据的调用关系;

第二判断模块,用于根据所述第二调用信息,判断所述标的数据库中是否存在第二标的业务数据,所述第二标的业务数据在所述第二预设时间段内未被调用;

第二存储模块,用于若是,为所述第二标的业务数据生成对应的第二标的微服务,并将所述第二标的业务数据存储至所述第二标的微服务关联的第三数据库中。

区别于现有技术,本申请提供的数据调用装置,将业务关联度较高的一组业务数据存储至单个微服务关联的数据库中,业务关联度较低的单个业务数据分别存储至各微服务关联的数据库中,在进行查询时,当同一查询请求中携带多个查询任务,各查询任务所需的各业务数据的业务关联度通常较高,则此种设置可以尽可能使得查询请求所需的业务数据都在同一个数据库中,避免了从多个数据库中调用数据导致操作繁琐和效率低下的问题,当同一查询请求中仅携带一个查询任务,则可以直接从各微服务关联的数据库中取出所需的业务数据,两种场景下均不需要将所有微服务的业务数据都同步到其他数据库后再调用,因此成本较低,即本申请实现了成本和效率的兼顾。

相应地,本申请还提供一种电子设备,如图8所示,该电子设备可以包括射频电路801、包括有一个或一个以上计算机可读存储介质的存储器802、输入单元803、显示单元804、传感器805、音频电路806、wifi模块807、包括有一个或者一个以上处理核心的处理器808以及电源809等部件。本领域技术人员可以理解,图8中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

射频电路801可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器808处理;另外,将涉及上行的数据发送给基站。存储器802可用于存储软件程序以及模块,处理器808通过运行存储在存储器802的软件程序以及模块,从而执行各种功能应用以及数据处理。输入单元803可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

显示单元804可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。

电子设备还可包括至少一种传感器805,比如光传感器、运动传感器以及其他传感器。音频电路806包括扬声器,扬声器可提供用户与电子设备之间的音频接口。

wifi属于短距离无线传输技术,电子设备通过wifi模块807可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了wifi模块807,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。

处理器808是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。

电子设备还包括给各个部件供电的电源809(比如电池),优选的,电源可以通过电源管理系统与处理器808逻辑相连,从而通过电源管理系统实现管理充电、放电以及功耗管理等功能。

尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器808会按照如下指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中并由处理器808来运行存储在存储器802中的应用程序,从而实现以下功能:

获取各业务数据的业务关联度;根据所述业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,所述业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值;生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中;接收查询请求,所述查询请求携带至少一个查询任务;根据所述查询任务从所有微服务中确定目标微服务,并从所述目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以实现以下功能:

获取各业务数据的业务关联度;根据所述业务关联度和预设阈值,得到至少一个业务数据组和至少一个第二业务数据,所述业务数据组包括多个第一业务数据,同一业务数据组中各第一业务数据均与至少一个其他第一业务数据的业务关联度大于预设阈值,不同业务数据组的任意两个第一业务数据的业务关联度均不大于预设阈值,各第二业务数据与其他业务数据的业务关联度均不大于预设阈值;生成各业务数据组对应的第一微服务,并将各业务数据组分别存储至各第一微服务关联的数据库中,生成各第二业务数据对应的第二微服务,并将各第二业务数据分别存储至各第二微服务关联的数据库中;接收查询请求,所述查询请求携带至少一个查询任务;根据所述查询任务从所有微服务中确定目标微服务,并从所述目标微服务关联的目标数据库中调用各查询任务对应的目标业务数据。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该计算机可读存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该计算机可读存储介质中所存储的指令,可以执行本申请所提供的任一种方法中的步骤,因此,可以实现本申请所提供的任一种方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请所提供的一种数据调用方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。

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