掌桥专利:专业的专利平台
掌桥专利
首页

一种基于微服务的数据访问方法和系统

文献发布时间:2023-06-19 12:19:35


一种基于微服务的数据访问方法和系统

技术领域

本发明属于人机交互技术领域,尤其涉及一种基于微服务的数据访问方法和系统。

背景技术

如何使得人机交互更便捷、更高效,一直是学术界和产业界关注的焦点。一方面,随着移动互联技术的发展,人机终端从传统的人机工作站,逐渐拓展到平板、手机等移动终端设备,实现资源占用低、支持多终端统一展示的交互界面,为用户提供数据访问是当前人机研究的重要方向。另一方面看,用户体验要求越来越高,现有系统的人机界面无论是交互方式、智能化水平还是展示效果都只能紧随用户要求,满足日益增长的用户体验需求。随着终端能力的不断提高,为了减轻服务器压力、充分利用客户端资源,有些人机体系架构在设计时通常在客户端进行了大量的画面显示处理及复杂的服务调用,缓存集中在前台客户端,造成较大的资源损耗;另一些则是在服务器端进行完全的控制,服务器并非请求的发起方,也不是一个用户所独有的,因此直接让服务器,甚至多个服务器控制整个请求的完成,尤其是复杂数据请求的完成,会带来更多的问题。在这种情况下,如何在不降低用户体验的情况下降低客户端资源需求,是急需解决的问题。本发明能有效的减小内存和CPU使用率,大大提高了数据访问效率;本发明在微服务框架的基础上,通过微服务请求的分配,使得微服务框架常驻在这些请求服务器的内存之中,保障服务器不会出现大量的空闲和微服务框架的初始化和销毁的反复,保持服务器的热状态;通过神经网络模型使得利用大数据样本找到微服务类型数量和请求特征之间的关系以定位最优服务器;通过微服务图及其拆分和节点的标记,支持了微服务请求在服务器之间的合理流转,最大化了微服务的多服务器利用。

发明内容

为了解决现有技术中的上述问题,本发明提出了一种基于微服务的数据访问方法和系统,所述方法包含:

步骤S1:获取和数据访问请求相对应的第一请求服务器,将客户端数据访问请求发送给所述第一请求服务器;第一请求服务器为能够提供数据访问请求的请求服务器中的一个;基于请求服务器的状态选择一个第一请求服务器,并将所述数据访问请求定向到第一请求服务器;

步骤S2:判断所述第一请求服务器是否满足本地化执行条件,如果是,则第一请求服务器本地执行所述数据访问请求,并将请求结果发送给客户端;否则,将数据访问请求被拆分成微服务集合;基于微服务集合控制数据访问请求在第一请求服务器本地或者其他服务器上执行。

进一步的,所述服务器的状态为服务器的繁忙程度和/或请求服务器现场中微服务类型的数量向量MT=[mti]。

进一步的,所述基于请求服务器的状态选择一个第一请求服务器,具体为:从请求服务器中选择最空闲的请求服务器作为第一请求服务器。

进一步的,所述判断所述第一请求服务器满足本地化执行条件,具体为:当第一请求服务器的繁忙程度指示该第一请求服务器空闲时,确定该第一请求服务器满足本地化执行条件。

进一步的,所述本地执行所述数据访问请求,具体为:将数据访问请求的执行拆分成微服务请求,并基于本地微服务框架完成相应的微服务请求。

一种基于微服务的数据访问系统,所述系统包括:客户端,服务器。

进一步的,所述客户端为一个或多个。

进一步的,客户端用于发起数据访问请求,并从服务器接收服务器访问请求的请求结果;所述客户端还用于基于微服务图控制数据访问请求的进行,并最终获得请求结果。

进一步的,服务器为一个或多个。

进一步的,服务器用于接收数据访问请求,并将数据访问请求结果返回给客户端;数据访问请求被拆分成微服务来执行,从而使得更多的请求能够进行微服务框架的共用,位于服务器上的微服务框架本身不会随着一个微服务的完成而被销毁,而是继续进行下一微服务的执行。

本发明的有益效果包括:(1)微服务框架使得资源在轻量化结构下的同用,由于服务已经被轻量化,因此公用的可能性会被大大提高;(2)通过微服务请求的分配,使得微服务框架常驻在这些请求服务器的内存之中,保障服务器不会出现大量的空闲和微服务框架的初始化和销毁的反复,保持服务器的热状态;(3)从细粒度出发选择最有可能从本地满足请求的请求服务器作为第一请求服务器,尽量本地化请求服务;进一步,通过将输入层部分分块,使得每个维度的属性能够快速自收敛,提高了模型的训练和使用效率;通过神经网络模型使得利用大数据样本找到微服务类型数量和请求特征之间的关系以定位最优服务器;(4)通过请求和现场的匹配,节省了大量的框架重建开销;通过微服务图及其拆分和节点的标记,支持了微服务请求在服务器之间的合理流转,最大化了微服务的多服务器利用。

附图说明

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1为本发明的基于微服务的数据访问方法的示意图。

具体实施方式

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

本发明所涉及的一种基于微服务的数据访问系统,包括:客户端,服务器;其中:所述客户端为一个或多个;客户端用于发起数据访问请求,并从服务器接收服务器访问请求的请求结果;所述客户端还用于基于微服务图控制数据访问请求的进行,并最终获得请求结果;

服务器为一个或多个,服务器用于接收数据访问请求,并将数据访问请求结果返回给客户端;数据访问请求被拆分成微服务来执行,从而使得更多的请求能够进行微服务框架的共用,位于服务器上的微服务框架本身不会随着一个微服务的完成而被销毁,而是继续进行下一微服务的执行;微服务框架包含用于提供微服务的微服务程序、软硬件环境等;优选的:微服务框架常驻内存;不同种类的微服务框架服务相应类型的微服务;那么在微服务框架下,数据流也会相应的减少,数据之间的交互可以通过参数传递来进行,也可以通过数据通信的方式进行框架间的数据传递;

优选的:当微服务框架未被使用的时间超过阈值时,该微服务框架会被销毁,微服务框架对应的各种类型的资源会被释放并用于构建其他类型的微服务框架;通过这样使得资源在轻量化结构下的同用,由于服务已经被轻量化,因此公用的可能性会被大大提高,资源的复用情况也会更优;

服务器包括请求服务器和非请求服务器,请求服务器用于接收客户端的数据访问请求,并确定是否本地执行,在本地执行的情况下,请求服务器完成数据访问请求并将请求结果返回给客户端,这种情况下就能最大化访问效率,访问控制相对简单;在非本地执行的情况下由客户端通过微服务图控制请求的执行;本发明根据微服务的完成复杂度对访问请求的完成进行控制权的差异化设置,最大化减少了客户端的执行复杂度;在非本地化执行的情况下,数据访问请求可以由请求服务器或者非请求服务器来完成;针对不同类型的数据访问请求,同一个服务器可能成为请求服务器或非请求服务器;同一类型数据访问请求对应一个或多个请求服务器;通过请求服务器的对应设置,使得针对特定类型的数据访问请求能够固定或者频繁的出现在对应的请求服务器中,使得相应的微服务框架常驻在这些请求服务器的内存之中,在这些请求服务器执行情况允许的情况下,优先在对应的请求服务器本地完成,保障服务器不会出现大量的空闲和微服务框架的初始化和销毁的反复,使得服务器保持相应的微服务热状态下;同时请求服务器的设置使得第一请求服务器的选定在一个较小的范围内,不会为请求的选择带来过多的复杂度;

优选的:微服务包含特定类型数据读取、特定类型数据写入、数据渲染、数据拼接、数据块特定运算等;

本发明所请求保护的一种基于微服务的数据访问方法,具体包含如下步骤:

步骤S1:获取和数据访问请求相对应的第一请求服务器,将客户端数据访问请求发送给所述第一请求服务器;第一请求服务器为能够提供数据访问请求的请求服务器中的一个;根据数据访问请求的类型,请求服务器为一个或多个,基于请求服务器的状态选择一个第一请求服务器,并将所述数据访问请求定向到第一请求服务器;

优选的:所述服务器的状态为服务器的繁忙程度和/或请求服务器现场中微服务类型的数量向量MT=[mti],其中:mti为现场中第i种微服务类型的数量;

所述基于请求服务器的状态选择一个第一请求服务器,具体为:从请求服务器中选择最空闲的请求服务器作为第一请求服务器;

在引入微服务的基础上,本发明从细粒度出发选择最有可能从本地满足请求的请求服务器作为第一请求服务器,通过微服务类型向量来刻画现场,尽量本地化请求服务;

因此,可替换的:获取当前数据访问请求的多维特征,获取请求服务器的微服务类型数量向量,选择和所述多维属性相匹配的微服务类型数量向量对应的请求服务器作为第一请求服务器;一种简单的做法是:通过查询多维度属性和微服务类型数量向量对应关系表以得到匹配的微服务类型数量向量;不同类型的数据访问请求具有其属性,可以通过属性来刻画访问请求,访问请求可以拆分对应的微服务类型数量和该类型访问请求是往往是存在一定的关联关系的,因此,可以直接通过查询关系表的方式来得到;多维度属性包含访问请求的类型、访问请求涉及的数据量等;该关系表为关于部分属性的,例如:请求的类型;

优选的:所述多维度属性包括访问请求发出的环境信息,例如:软硬件资源信息,请求发出的用户特征、访问请求类型、访问请求涉及的数据量和计算量等;这些不同维度的信息共同构成了数据访问请求的多维度属性;每个属性维度包含的一个或多个属性;

优选的:通过多层次神经网络模型选择第一请求服务器;选择匹配程度最高的请求服务器作为第一请求服务器;

所述多层神经网络模型为5层;第一层为第一输入层,第一输入层包含m个输入部分,m为多维度属性的维度数,每个输入部分对应一个属性维度;每个输入部分包含Ik个输入神经元,其中Ik的数量对应第k个属性维度中属性的个数;k=[1-m];每个输入部分的一个神经元的输入为对应维度中的一个属性;也就是每个具体的属性对应输入部分的一个神经元输入;第二层为特征层,特征层包含m个神经元,每个神经元对应一个属性维度,神经元的输入分别为第一层的相应输入部分的输出;第三层为第一全连接层,第一全连接层包含m个神经元,其中每个神经元的输入为所有第二层神经元的输出;

通过第一到三层的独立设置,使得每个维度的特征能够形成独立收敛的结构,通过全连接使得模型能够体现不同维度特征之间的交叉关联,同时,降低了训练复杂度和样本需求量;

第四层为调整层,调整层包含m个神经元,其中每个神经元的输入为第三层对应神经元的输出和调整值;也就是说,调整层中的调整值构成了神经网络模型的第二输入层;其中:调整值为微服务类型的数量向量;第五层为输出层,输出层包含一个神经元,所述神经元的输入为第四层所有神经元的输出;输出值为匹配值;所述匹配值表示所述多维属性值和微服务类型数量向量之间的匹配程度;所述匹配值为0-1之间的数值;

本发明通过将输入层部分分块、分层,使得每个维度的属性能够快速自收敛,使得复杂的属性能够和现场相融合,提高了模型的训练和使用效率;通过神经网络模型使得利用大数据样本找到微服务类型数量和请求特征之间的关系以定位最优服务器;

步骤S2:判断所述第一请求服务器是否满足本地化执行条件,如果是,则第一请求服务器本地执行所述数据访问请求,并将请求结果发送给客户端;否则,将数据访问请求被拆分成微服务集合;基于微服务集合控制数据访问请求在第一请求服务器本地或者其他服务器上执行;

所述判断所述第一请求服务器满足本地化执行条件,具体为:当第一请求服务器的繁忙程度指示该第一请求服务器空闲时,确定该第一请求服务器满足本地化执行条件;

可替换的:获取第一请求服务器的现场数据,基于现场数据填充微服务类型的数量向量,将所述微服务类型的数量向量输入多层神经网络模型以得到数据访问请求和第一请求服务器之间的匹配程度,当匹配程度大于第一匹配度阈值时,确定该第一请求服务器满足本地化执行条件;

所述本地执行所述数据访问请求,具体为:将数据访问请求的执行拆分成微服务请求,并基于本地微服务框架完成相应的微服务请求;在本地没有相应类型的微服务框架时,进行相应类型微服务框架的初始化以生成相应类型的微服务框架;

所述将数据访问请求被拆分成微服务请求,具体为:将数据访问请求的执行流程按照微服务模板进行拆分,得到有序微服务集合;有序微服务集合中存在相同或者不同的一个或多个微服务请求;

基于微服务集合控制数据访问请求执行;具体包含如下步骤:

步骤SE1:将微服务用有序微服务图表示,微服务图中的每个节点为一个微服务,有向边指示微服务执行的先后顺序关系;

步骤SE2:从开始节点开始遍历所述微服务图,在当前节点能够被本地第一请求服务器执行时,标记所述当前节点为本地执行;在当前节点不能被本地第一请求服务器执行时,计算当前节点对应微服务被其他服务器执行的最小通信开销,如果所述最小通信开销小于本地初始化开销,则将当前节点放入待处理集合;否则,基于当前节点的微服务类型创建微服务框架,标记当前节点为本地执行;继续下一节点的遍历,直到所有节点均被遍历为止;

优选的:所述遍历为先序遍历;

所述计算当前节点被其他服务器执行的最小通信开销,具体为:在非第一请求服务器中查找能直接执行当前节点的微服务类型的其他服务器,将满足当前节点对应微服务的非第一请求服务器中通信开销最小者,作为最小通信开销;

优选的:本地初始化开销为在本地重新搭建用于执行微服务的微服务框架所需的初始化开销;

步骤SE3:将待处理集合中的所有节点按照微服务图中的序关系组成一个或者多个子微服务图;也就是将微服务图中和待处理集合中节点相关且仅和待处理集合中的节点相关的边,和待处理集合中的所有节点重新组织成一个或多个子图;

步骤SE4:对每个微服务子图,先选择能够满足微服务子图中所有节点的微服务类型的一个其他服务器,并进行所有节点的标注;如果没有这样的其他服务器,采用步骤SE2中的方法,从开始节点重新遍历微服务子图,进行微服务子图中节点的标记以及微服务子图的拆分,直到所有节点均被标记完毕为止;在处理完所有微服务子图后,进入下一步骤;

一种可替代的做法是:使得所有微服务被分散的层数不超过2层,这样,当选择能够满足微服务子图中所有节点的微服务类型的一个其他服务器,且没有这样的其他服务器时,选择能够满足最多微服务子图中所有节点的微服务类型的一个其他服务器,并直接将这个微服务子图中的所有节点均分配给所述一个其他服务器来完成,对于不能满足的微服务类型,进行相应类型的初始化;并进行所述微服务子图中所有节点的标记;同样的,可以将分散的层数进一步扩散,可设置为分散的层数和请求涉及的图的大小相关,当微服务图较大或者微服务子图较大时,分散的层数较多,反之亦然;

步骤SE5:将微服务图以及节点的标记结果发送给客户端,客户端基于根据所述微服务图和节点的标记结果控制数据访问请求的执行;具体的:客户端根据微服务图中的微服务先后关系,在前序节点微服务完成后,将微服务结果数据保留在本地或者发送给后续节点,并等待后续节点的微服务完成;在微服务图完成后,客户端将微服务结果数据拼接形成数据访问请求的请求结果数据;

优选的:客户端通过发送通知的方式和被标记节点对应的服务器之间形成握手关系,当相应节点的微服务完成后,发出触发响应以控制数据交互请求的继续;

优选的:客户端基于petri网控制数据访问请求的执行;

当数据访问请求被拆分后,过多的控制节点和控制权转移会导致服务器执行效率降低,此时将控制权直接给客户端能够进行控制权的统一,降低服务器开销;

现有技术中在进行微服务提供时,并不考虑服务器现场之间的差异,服务器现场存在差异和当前外部环境自己服务器自身的执行能力均相关,本发明通过请求和现场的匹配,节省了大量的框架重建开销;通过微服务图及其拆分和节点的标记,支持了微服务请求在服务器之间的合理流转,最大化了微服务的多服务器利用;

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

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

相关技术
  • 一种基于微服务的数据访问方法和系统
  • 一种数据访问和存储方法、数据访问和存储装置、数据访问和存储系统
技术分类

06120113251889