一种基于微服务架构的REST结果集动态处理方法及系统与流程

文档序号:32009159发布日期:2022-11-02 15:39阅读:110来源:国知局
一种基于微服务架构的REST结果集动态处理方法及系统与流程
一种基于微服务架构的rest结果集动态处理方法及系统
技术领域
1.本发明涉及软件开发技术领域,具体涉及一种基于微服务架构的rest结果集动态处理方法及系统。


背景技术:

2.表关联查询对任一个程序开发人员而言再熟悉不过了,以前对于单体应用,开发人员对于数据关联查询基本上是通过sql关联查询即可完成大部分查询业务场景需要;但是单体应用的局限性和延展性随着业务的体量加大,再难以支撑更大的业务体量。近些年随着微服务技术应用的兴起,企业为了降低服务耦合度,会把一些功能模块进行拆分、独立,拆分的力度也随着人员配备,越来越细化。业务的拆分,就会涉及到数据库拆分,这带来了一些问题,如一些关键字段上下游业务关联查询问题,想要实现数据关联,就需要程序做特殊处理,如:捞取关联服务的数据再合并处理输出,以满足页面或接口需要。这样的处理方式随之带来一系列的问题,如每次需要合并的业务都要实现下数据捞取、合并代码业务逻辑过程,大大增加了代码冗余度,也增加了代码复杂度,同时增加代码实现的难度,不利用阅读,维护。


技术实现要素:

3.本发明目的在于提供一种基于微服务架构的rest结果集动态处理方法及系统,通过在控制处理层选择性介入,在序列化body过后进行对象特殊处理,达到数据特殊处理目的,以更加简洁且便捷的代码解决表关联查询问题,满足业务需要。
4.为达成上述目的,本发明提出如下技术方案:一种基于微服务架构的rest结果集动态处理方法,包括:
5.在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第一注解,所述第一注解包括由若干基础属性的属性名构成的第一属性标签,并赋予所述标签中任一属性对应的属性处理动作;或在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第二注解、并在返回类属性上添加预处理属性动作注解,所述预处理属性动作注解包括对应于返回类属性中任一属性的属性处理动作;
6.调用rest-api接口,获取对象序列化后的结果集body数据;
7.判断并确定需要进行后处理的结果集body数据,记为待处理数据;
8.引入配置有属性处理器和属性处理适配器的结果集组件根据第一属性标签或预处理属性动作注解对待处理数据进行递归匹配;
9.判断并获取待处理数据中与第一属性标签或预处理属性动作注解匹配的基础属性,以便结果集组件的属性处理器提取匹配的基础属性的属性名及属性值,并由属性适配处理器确定与其对应的属性处理动作;其中,属性处理动作包括补增属性、替换属性、转换属性值;
10.属性处理器根据确定的属性处理动作对基础属性进行动态处理。
11.进一步的,还包括:
12.在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第三注解,所述第三注解包括由若干基础属性的属性名构成的第二属性标签,并赋予所述标签中任一属性对应的属性处理动作;
13.结果集组件根据第二属性标签对待处理数据进行递归匹配,并当待处理数据中存在与第二属性标签匹配的基础属性时,由属性处理器删除该基础属性。
14.进一步的,所述属性处理器根据补增属性对基础属性进行动态处理的过程为:
15.确定目标属性;
16.属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;
17.存储属性查询结果至属性缓存库,并补增目标属性的属性名及属性值至属性查询结果中。
18.进一步的,所述属性处理器根据替换属性对基础属性进行动态处理的过程为:
19.确定目标属性;
20.属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;
21.存储属性查询结果至属性缓存库,删除属性查询结果中的基础属性并补增关联的目标属性至属性查询结果中。
22.进一步的,所述属性处理器根据转换属性值对基础属性进行动态处理的过程为:
23.确定目标属性值;
24.属性处理器根据属性处理适配器预设的转换规则转换其提取的基础属性的属性值为目标属性值。
25.进一步的,当待处理数据中的属性条件等同于属性处理器在先动态处理的基础属性的属性条件,属性适配处理器直接调用属性缓存库的缓存数据完成目标属性的补增或替换。
26.本发明另一技术方案在于公开一种基于微服务架构的rest结果集动态处理系统,该系统包括:
27.第一添加模块,用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第一注解,所述第一注解包括由若干基础属性的属性名构成的第一属性标签,并赋予所述标签中任一属性对应的属性处理动作;或用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第二注解、并在返回类属性上添加预处理属性动作注解,所述预处理属性动作注解包括对应于返回类属性中任一属性的属性处理动作;
28.获取模块,用于调用rest-api接口,获取对象序列化后的结果集body数据;
29.第一判断模块,用于判断并确定需要进行后处理的结果集body数据,记为待处理数据;
30.递归匹配模块,用于引入配置有属性处理器和属性处理适配器的结果集组件根据第一属性标签或预处理属性动作注解对待处理数据进行递归匹配;
31.第二判断模块,用于判断并获取待处理数据中与第一属性标签或预处理属性动作注解匹配的基础属性,以便结果集组件的属性处理器提取匹配的基础属性的属性名及属性值,并由属性适配处理器确定与其对应的属性处理动作;其中,属性处理动作包括补增属性、替换属性、转换属性值;
32.第一属性处理模块,用于属性处理器根据确定的属性处理动作对基础属性进行动态处理。
33.进一步,该系统还包括:第二添加模块,用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第三注解,所述第三注解包括由若干基础属性的属性名构成的第二属性标签,并赋予所述标签中任一属性对应的属性处理动作;第二属性处理模块,用于结果集组件根据第二属性标签对待处理数据进行递归匹配,并当待处理数据中存在与第二属性标签匹配的基础属性时,由属性处理器删除该基础属性。
34.进一步的,所述第一属性处理模块中属性处理器根据补增属性或替换属性进行动态处理的执行单元包括:
35.第一确定单元,用于确定目标属性或目标属性值;
36.查询单元,用于属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;
37.存储执行单元,用于存储属性查询结果至属性缓存库,补增目标属性的属性名及属性值至属性查询结果中或删除属性查询结果中的基础属性并补增关联的目标属性至属性查询结果中。
38.本发明还提供一种电子设备,该设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器运行所述计算机程序时,实现上述的基于微服务架构的rest结果集动态处理方法。
39.由以上技术方案可知,本发明的技术方案获得了如下有益效果:
40.本发明公开的基于微服务架构的rest结果集动态处理方法及系统,旨在于解决微服务架构下数据关联查询操作过于复杂,代码耦合性大的问题;方案通过在控制处理层选择性介入,基于restcontroller为前提,在序列化body过后进行对象特殊处理;进而通过设置的属性处理器和属性处理适配器进行属性匹配完成属性处理,满足多个结果属性处理场景需求。该方案应用于微服务架构下数据关联查询时,具有如下优势:
41.1、解决程序跨服务跨库下热点字段关联查询难题,不需要重复写补充字段逻辑;减少程序内表关联查询,表关联减少,相对查询就越快,提升查询速度;降低代码实现复杂度、提高开发效率、减少冗余代码;
42.2、应用于敏感数据查询时,解决rest结果集有些字段需要脱敏、转义、转码的问题;
43.3、应用于持久层框架数据自动查询时,解决rest结果集敏感字段不删除、暴露敏感数据和数据结构问题;
44.4、解决设计业务关联数据的冗余存储不准确,导致维护困难,而不冗余存储,删除后sql关联耦合查询不到的问题。
45.应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。
46.结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
47.附图不表示按照真实参照物比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
48.图1为本发明基于微服务架构的rest结果集动态处理方法流程图;
49.图2为本发明实施例基于微服务架构的rest结果集动态处理过程示意图。
具体实施方式
50.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
51.本发明专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,除非上下文清楚地指明其它情况,否则单数形式的“一个”“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现在“包括”或者“包含”前面的元件或者物件涵盖出现在“包括”或者“包含”后面列举的特征、整体、步骤、操作、元素和/或组件,并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。“上”“下”“左”“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
52.基于现有技术中微服务技术应用的兴起,企业为降低服务耦合度对业务的细化拆分导致关键字段上下游业务关联查询时需要对程序做特殊处理,如取关联服务的数据再合并处理输出的方式,这种处理方式导致每一次进行关联查询都需要实现数据捞取及合并代码的业务逻辑,致使代码冗余度和复杂度都显著增加,代码难实现和维护。本发明提出一种基于微服务架构的rest结果集动态处理方法及系统,通过在控制处理层选择性介入,配置属性处理器和属性处理适配器,对body数据序列化处理过后的数据根据不同的属性处理动作进行属性处理,满足各目标属性处理场景的需求;关联查询时,不仅无需重复写补充字段逻辑、减少冗余代码,且降低代码实现复杂度、提高开发效率,提升查询速度。
53.本发明的初始发明构思是基于“怎么解决数据关联查询”提出的,如:业务主体“人”,而开发人员在设计业务表的时候,基本是以userid来设关联字段,对于程序而言是感知userid代表的意思或业务关系,而对于业务使用人员光展示userid显然是不行的,这个时候就需要在展示userid的同时加上username。但是当程序相对独立,又不属于同一数据库时,就会考虑远程调用,即远程查询下“统一用户中心”用户名,然后在程序里补充username;补充过程梳理如下:先创建建带有username的vo对象,再远程调用用户对象或集合,最后完成对象属性补加。对于一个简单的处理对象该过程快速且便捷,但对于列表对象需要把查询出的业务对象双循环、判断后补上业务主体username属性,这个过程可能还有些数据匹配不严谨的情况,如用户已经被删除,而业务数据上依然用着这个用户id。上述问
题通过严谨的代码判断可以解决,但如果对象嵌套了两层以上,这种情况下程序开发人员提供的代码实现会非常复杂,因此出错的概率很大,后期维护也相对困难。
54.已知当下json格式数据接口形式由于其属性字段维护起来容易、灵活颇受开发人员青睐;因此,本发明公开一种新的解决方案,基于springboot框架下返回的rest结果集为着手点,在控制处理层序列化对象为json格式数据的时候,把需加的字段补充的构思,如补加属性。以username为例,只补加username属性不足以解决上述问题,需要进一步明确username的属性value,即可根据userid值来获取username值;对于key-value模型,如:userid为1,在数据表里对应的用户名为admin,即可获得属性value。
55.下面结合附图所示的实施例,对本发明公开的基于微服务架构的rest结果集动态处理方法及系统,作进一步具体介绍。
56.结合图1和图2所示,本发明公开的基于微服务架构的rest结果集动态处理方法,包括如下步骤:
57.步骤s102,在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第一注解,所述第一注解包括由若干基础属性的属性名构成的第一属性标签,并赋予所述标签中任一属性对应的属性处理动作;或在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第二注解、并在返回类属性上添加预处理属性动作注解,所述预处理属性动作注解包括对应于返回类属性中任一属性的属性处理动作;
58.该步骤旨在于提出两种进入后处理流程的方法,具体实施时,开发人员可根据当前场景的实际需要布置开启组件进入rest结果集自定义属性后处理功能。
59.步骤s104,调用rest-api接口,获取对象序列化后的结果集body数据;
60.首先控制处理层在通过rest-api接口接受到外部请求后,会调用业务逻辑层进行业务处理,业务逻辑层会根据业务需要向数据库发起数据访问层的访问,并响应控制处理层。
61.步骤s106,判断并确定需要进行后处理的结果集body数据,记为待处理数据;本步骤的过程主要读取步骤s102中接口采用注解方式预设的第一属性标签或预处理属性动作注解,当序列化后的结果集body数据中存在与第一属性标签匹配或预处理属性动作注解对应的基础属性时,判定为需要进行后处理的数据,即启动rest结果集自定义属性后处理功能。具体实施时,返回数据与接口配置的注解匹配后直接进入后处理的功能,不进行待处理数据的获取;一些情况下,所有的返回数据都需要进行后处理,这类流程中返回数据,如结果集body数据直接进入步骤s108的迭代匹配过程。
62.步骤s108,引入配置有属性处理器和属性处理适配器的结果集组件根据第一属性标签或预处理属性动作注解对待处理数据进行递归匹配;
63.结果集组件可以被任一服务引用并进行属性的动态处理,其中,属性处理器主要是完成属性处理动作,属性处理适配器主要是完成属性匹配,同时提供处理方法,属性处理适配器配合属性处理器完成属性处理。方案中的基础属性为原body数据中的属性,为前提属性,也为基于该属性完成处理目的的源属性。
64.步骤s110,判断并获取待处理数据中与第一属性标签或预处理属性动作注解匹配的基础属性,以便结果集组件的属性处理器提取匹配的基础属性的属性名及属性值,并由属性适配处理器确定与其对应的属性处理动作;其中,属性处理动作包括补增属性、替换属
性、转换属性值;
65.步骤s112,属性处理器根据确定的属性处理动作对基础属性进行动态处理。
66.作为一可选的实施例,本发明基于微服务架构的rest结果集动态处理方法还包括:在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第三注解,所述第三注解包括由若干基础属性的属性名构成的第二属性标签,并赋予所述标签中任一属性对应的属性处理动作;属性处理器根据第二属性标签对待处理数据进行递归匹配,并当待处理数据中存在与第二属性标签匹配的基础属性时,由属性处理器删除该基础属性。上述方法过程实现删除属性的属性处理动作,即为删除某个基础属性,来达到该属性和值在结果中清除目的,例如,密码、密钥等敏感字段的删除。
67.作为一可选的实施例,预处理属性动作注解的属性处理动作除补增属性、替换属性、转换属性值外,还包括删除属性;当结果集组件根据预处理属性动作注解对待处理数据进行递归匹配到一属性,且该属性对应的属性处理动作为删除属性动作时,结果集组件的属性处理器直接删除待处理数据中的该属性。
68.具体实施时,第一属性标签和第二属性标签同步由第一注解配置到rest-api接口,区别仅在于,结果集组件对递归匹配到的各属性处理动作不同,部分属性由属性适配处理器确定属性处理动作后再由属性处理器执行动作,部分属性由属性处理器直接执行动作。
69.本实施例的步骤s112具体实施时,属性处理器根据补增属性、替换属性和转换属性值依次对基础属性进行动态处理的过程分别如下;
70.对于补增属性,其是以某个属性为基础完成目标属性的补增,达到属性关联目的,处理过程包括:确定目标属性,目标属性为达成处理目的补充的属性;属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;存储属性查询结果至属性缓存库,并补增目标属性的属性名及属性值至属性查询结果中。补增属性即为在原有查询结果中补加上目标属性的名称和值,例如,根据部门id补充部门名称,根据设备id补充设备名称。
71.对于替换属性,其是以某个属性为基础完成目标属性的替换,来达到属性替换目的,处理过程包括:确定目标属性;属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;存储属性查询结果至属性缓存库,删除属性查询结果中的基础属性并补增关联的目标属性至属性查询结果中。替换属性即为在原有查询结果中删除原有基础属性字段,然后把目标属性字段和值放到查询结果里,例如,租户标识替换。
72.对于转换属性值,其是以某个属性位基础完成目标属性的值的转换,来达到属性值转换目的,处理过程包括:确定目标属性值;属性处理器根据属性处理适配器预设的转换规则转换其提取的基础属性的属性值为目标属性值。例如,对手机号码中间4位数打星、对一段密文进行解密处理、对性别(m、f)转成中文(男、女)、对(1、0)转成(开、关)等。在一些特殊性况下,如需要进行字典查询、目标属性值具有多个枚举值等场景下,转换属性值动作的执行过程也可以采用rpc查询,获得查询结构转换后缓存至属性缓存库的方案。
73.为了增强属性适配处理器的能力通常会对相应查询做缓存处理,在调用rest-api接口第一次发起数据库请求,后期迭代器将相应数据做缓存处理,提升适配处理器处理速度;进而当待处理数据中的属性条件等同于属性处理器在先动态处理的基础属性的属性条
件时,属性适配处理器直接调用属性缓存库的缓存数据完成目标属性的补增或替换。
74.上述公开的基于微服务架构的rest结果集动态处理方法处理的补、替、转和删结果属性处理场景能针对性的解决rest结果集处理过程中一些常见问题,能通过实践实现一次扩展、多次使用的目的,也实现解耦合、低代码的目的。
75.在本发明的实施例中,还提供一种电子设备,该设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器运行所述计算机程序时实现以上实施例中的基于微服务架构的rest结果集动态处理方法。
76.上述程序可以运行在处理器中,或者也可以存储在存储器中,即计算机可读介质中,计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体,如调制的数据信号和载波。
77.这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应于不同的方法步骤可以通过不同的模块来实现。
78.在本实施例中,就提供了这样一种装置或系统,该系统可以称为一种基于微服务架构的rest结果集动态处理系统,所述系统包括:第一添加模块,用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第一注解,所述第一注解包括由若干基础属性的属性名构成的第一属性标签,并赋予所述标签中任一属性对应的属性处理动作;或用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第二注解、并在返回类属性上添加预处理属性动作注解,所述预处理属性动作注解包括对应于返回类属性中任一属性的属性处理动作;获取模块,用于调用rest-api接口,获取对象序列化后的结果集body数据;第一判断模块,用于判断并确定需要进行后处理的结果集body数据,记为待处理数据;递归匹配模块,用于引入配置有属性处理器和属性处理适配器的结果集组件根据第一属性标签或预处理属性动作注解对待处理数据进行递归匹配;第二判断模块,用于判断并获取待处理数据中与第一属性标签或预处理属性动作注解匹配的基础属性,以便结果集组件的属性处理器提取匹配的基础属性的属性名及属性值,并由属性适配处理器确定与其对应的属性处理动作;其中,属性处理动作包括补增属性、替换属性、转换属性值;第一属性处理模块,用于属性处理器根据确定的属性处理动作对基础属性进行动态处理。
79.该系统用于实现上述实施例公开的基于微服务架构的rest结果集动态处理方法的步骤,已经进行说明的,在此不再赘述。
80.例如,该系统还包括第二添加模块,用于在rest-api接口上添加用于开启rest结果集自定义属性后处理功能的第三注解,所述第三注解包括由若干基础属性的属性名构成的第二属性标签,并赋予所述标签中任一属性对应的属性处理动作;第二属性处理模块,用
于结果集组件根据第二属性标签对待处理数据进行递归匹配,并当待处理数据中存在与第二属性标签匹配的基础属性时,由属性处理器删除该基础属性。
81.又例如,第一属性处理模块中属性处理器根据补增属性或替换属性进行动态处理的执行单元包括:第一确定单元,用于确定目标属性或目标属性值;查询单元,用于属性处理器根据其提取的基础属性的属性值进行rpc查询,获得属性查询结果;存储执行单元,用于存储属性查询结果至属性缓存库,补增目标属性的属性名及属性值至属性查询结果中或删除属性查询结果中的基础属性并补增关联的目标属性至属性查询结果中。第一属性处理模块实现属性处理动作中补增属性或替换属性的处理过程。
82.本发明公开的方法及系统充分解决微服务架构下数据关联查询操作过于复杂,代码耦合性大、冗余度高的问题,通过在控制处理层选择性介入实现数据特殊处理目的,该方案基于restcontroller为前提,对序列化获得body数据后根据配置的属性处理器和属性处理适配器进行属性匹配完成属性处理;本发明还能用于解决rest结果集有些字段需要脱敏、转义、转码的问题,解决rest结果集敏感字段不删除、暴露敏感数据和数据结构问题。
83.虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1