一种基于BFF架构的服务接口数据缓存方法、装置及设备制造方法及图纸

技术编号:37822426 阅读:9 留言:0更新日期:2023-06-09 09:59
本发明专利技术涉及互联网技术领域,公开了一种基于BFF架构的服务接口数据缓存方法、装置及设备,首先,拦截数据访问请求,当所述数据访问请求为查询请求时,根据请求路径和请求参数,采用散列算法,生成加密散列值,以加密散列值作为Hash键值,判断Redis缓存中是否命中缓存数据,当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回,当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,实现了兼容GraphQL查询特性的缓存机制,提高了缓存的有效性及利用率。存的有效性及利用率。存的有效性及利用率。

【技术实现步骤摘要】
一种基于BFF架构的服务接口数据缓存方法、装置及设备


[0001]本申请涉及互联网
,尤其是涉及到一种基于BFF架构的服务接口数据缓存方法、装置及设备。

技术介绍

[0002]随着互联网技术的飞速发展,人们对平台系统的需求逐渐增强,而平台系统包括web端、iOS、安卓以及小程序等,而平台系统是通过开发技术手段实现的,目前,常用的开发技术是采用前后端分离开发的形式,即前后端独立开发,但是在模块开发结束后需要对前后端模块进行整合和调试,而在整合和调试的过程中就会出现前端开发工程师会经常需要同时面向多个服务器请求数据的情形,不同的平台前端界面往往以不同的表现形式展示,即使请求的数据均是多服务器的后台数据且操作方式存在重叠。BFF(Back

end For Front

end,服务于前端的后端)模式应运而生,这种模式目前最广泛的实践是基于GraphQL搭建的后端BFF方案,一方面BFF隔离了前端UI展示对后端API的需求,企业可以专注在后端构建核心业务能力,另一方面,BFF根据已有的后端API,快速满足前端在UI展示上的需求,来不断提升用户体验,BFF充当了“中间层”的角色,快速迭代和频繁的产品更新已成为许多公司产品研发的标准,持续集成、持续部署变得不可或缺。相对于REST模式而言,GraphQL是一个新的API标准,为REST提供了一个更高效、更强大和更灵活的替代方案。REST模式是目前流行的从服务端获取数据的方式。然而,过去几年里,应用接口(API)领域有了根本性的变化。日益增多的移动端使用,需要数据加载过程更有效率,在移动端使用量变多的场景下,GraphQL通过最小化网络传输时所需要的数据量,改善了这种环境中的应用使用情况。但是通过GraphQL,客户端可以精确获取所需数据。
[0003]随着多终端、多平台、多业务形态、多技术选型等各方面的发展,前后端的数据交互,日益复杂。同一份数据,可能以多种不同的形态和结构,在多种场景下被消费。在理想情况下,这些复杂性可以全部由后端承担。前端只管从后端接口中获取整合完善的数据。然而,不管是因为后端的领域模型,还是因为微服务架构,设计开发者必须自行组合多个后端接口,才能获取到完整的数据结构,而和Rest API相比,由于GraphQL的查询功能很灵活、多属于动态查询,不是固定的资源,所以它的缓存不易实现或实现后缓存效果不明显。

技术实现思路

[0004]有鉴于此,本申请提供了一种基于BFF架构的服务接口数据缓存方法、装置及设备,实现BFF架构下GraphQL响应数据的缓存效果差,无法适应GraphQL查询特性的技术问题。
[0005]根据本申请的第一方面,提供了一种基于BFF架构的服务接口数据缓存方法,包括:
[0006]拦截数据访问请求;
[0007]当所述数据访问请求为查询请求时,根据请求路径和请求参数,采用散列算法,生
成加密散列值;
[0008]以加密散列值作为Hash键值,判断Redis缓存中是否命中缓存数据;
[0009]当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回;
[0010]当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,并将Resolver解析器标识、查询参数、加密散列值与响应数据进行对应缓存。
[0011]根据本申请的第二方面,提供了一种基于BFF架构的服务接口数据缓存装置,包括:
[0012]请求拦截模块,用于拦截数据访问请求;
[0013]请求处理模块,用于当所述数据访问请求为查询请求时,根据请求路径和请求参数,采用散列算法,生成加密散列值;
[0014]缓存查询模块,用于以加密散列值作为Hash键值,判断Redis缓存中是否命中缓存数据;
[0015]第一处理模块,当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回;
[0016]第二处理模块,当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,并将Resolver解析器标识、查询参数、加密散列值与响应数据进行对应缓存。
[0017]根据本申请的第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于BFF架构的服务接口数据缓存方法的步骤。
[0018]根据本申请的第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述基于BFF架构的服务接口数据缓存方法的步骤。
[0019]借由上述技术方案,本申请提供的一种基于BFF架构的服务接口数据缓存方法、装置、设备及介质,首先,拦截数据访问请求,当所述数据访问请求为查询请求时,根据请求路径和请求参数,采用散列算法,生成加密散列值,以加密散列值作为Hash键值,判断Redis缓存中是否命中缓存数据,当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回,当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,并将Resolver解析器标识、查询参数、加密散列值与响应数据进行对应缓存,实现了兼容GraphQL查询特性的缓存机制,提高了缓存的有效性及利用率。
[0020]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,并且为了让本申请的上述和其他目的、特征和优点能够更明显易懂,以下特列举本申请的具体实施方式。
附图说明
[0021]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0022]图1示出了本专利技术实施例中提供的一种基于BFF架构的服务接口数据缓存方法应用场景的示意图;
[0023]图2示出了本专利技术实施例中提供的一种基于BFF架构的服务接口数据缓存方法流程示意图;
[0024]图3示出了本专利技术实施例中提供的GraphQL查询执行过程的示意图;
[0025]图4示出了本专利技术实施例中提供的一种基于BFF架构的服务接口数据缓存装置示意图。
具体实施方式
[0026]下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0027]如图1所示,为本专利技术实施例中提供的一种基于BFF架构的服务接口数据缓存方法应用场景的示意图,客户端发起API查询请求,通过GraphQL服务器拦截API查询请求,并通过GraphQL服务器发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于BFF架构的服务接口数据缓存方法,其特征在于,包括:拦截数据访问请求;当所述数据访问请求为查询请求时,根据请求路径和请求参数,采用散列算法,生成加密散列值;以加密散列值作为Hash键值,判断Redis缓存中是否命中缓存数据;当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回;当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,并将Resolver解析器标识、查询参数、加密散列值与响应数据进行对应缓存。2.根据权利要求1所述的方法,其特征在于,所述拦截数据访问请求的步骤,包括:当所述数据访问请求为插入、更新、删除中的任一请求时,删除与Mutations中数据参数关联的缓存数据。3.根据权利要求1所述的方法,其特征在于,所述当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据,将获取的缓存数据作为响应数据进行返回的步骤,包括:当Redis存在缓存数据时,根据Resolver解析器标识、查询参数、加密散列值获取对应的缓存数据;根据所述查询参数,将获取的缓存数据进行裁剪合并,将裁剪合并后的数据作为响应数据进行返回。4.根据权利要求1所述的方法,其特征在于,所述当Redis不存在缓存数据时,执行GraphQL查询,以获取数据访问请求对应的响应数据,并将Resolver解析器标识、查询参数、加密散列值与响应数据进行对应缓存的步骤,包括:当Redis不存在缓存数据时,通过Resolver解析器执行GraphQL查询,获取不同Resolver解析器对应的查询结果数据;将Resolver解析器标识、查询参数、加密散列值与查询结果数据进行对应缓存。5.根据权利要求4所述的方法,其特征在于,所述将Resolver解析器标识、查询参数、加密散列值与查询结果数据进行对应缓存的步骤,包括:将Resolver解析器标识、查询参数、加密散列值与查询结果数据以JSON结构进行对应缓存;根据查...

【专利技术属性】
技术研发人员:刘浩畅宋岩强白剑波李青龙
申请(专利权)人:智慧星光安徽科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1