首页> 中国专利> 一种基于新型接口标准前端服务框架优化设计方法

一种基于新型接口标准前端服务框架优化设计方法

摘要

本发明公开了一种基于新型接口标准前端服务框架优化设计方法,步骤如下:1)对Web App的前端页面开发进行优化:将异步访问模式请求,通过封装改进为两次请求,结合浏览器缓存特性提升GraphQL接口模式下的页面获取数据的访问效率;2)对BFF服务端的设计进行优化:增加BFF中间层缓存与缓存刷新机制,提升BFF服务端数据访问命中效率与数据的时效性。本发明的方法不改变原有业务模块开发的逻辑与流程,能够提高网络传输效率,提高系统对业务数据接口变化的灵活性,提供外部系统服务无缝接入的扩展能力。

著录项

  • 公开/公告号CN112363854A

    专利类型发明专利

  • 公开/公告日2021-02-12

    原文格式PDF

  • 申请/专利权人 南京莱斯信息技术股份有限公司;

    申请/专利号CN202011255198.X

  • 发明设计人 高翔;汪达;韩庭亮;

    申请日2020-11-11

  • 分类号G06F9/54(20060101);G06F16/958(20190101);

  • 代理机构32237 江苏圣典律师事务所;

  • 代理人贺翔

  • 地址 210014 江苏省南京市秦淮区永智路8号

  • 入库时间 2023-06-19 09:54:18

说明书

技术领域

本发明属于基于计算机网络的系统应用技术领域,具体指代一种基于互联网Web应用系统中的基于新型接口标准前端服务(GraphQL BFF)框架优化设计方法。

背景技术

近年来手机等移动设备的普及,移动应用迅猛发展,互联网应用的架构也在不断发生变化。移动优先(Mobile First)、应用(APP)平台、中台战略等,各种开发理念、框架不断地被提出、修改和演进。同时,各类业务也在不断地发展,导致系统应用不断地膨胀,系统组织在不断地变化的同时,其设计和架构也在不断地调整。Web系统应用逐渐演变为微服务架构、微前端架构。Web应用的业务重心逐步向前端APP实现,而系统后端则利用服务集群、云服务等,提供数据处理、数据分析挖掘、机器学习、大数据分析等核心应用,提供前端APP业务所需的业务加工产品或数据资源访问服务,其核心目的,是减少系统耦合复杂性,方便扩展业务,提升系统部署灵活性,改善应用生命周期管理,不断完善和满足变化的用户需求和业务需求。

本发明所对应的是,在web系统架构演变中,当前较为流行的GraphQL BFF框架下的优化策略,该框架是微服务、微前端架构中,具体的开发技术实践之一。

BFF(英文:Backend for Frontends,简称BFF),是为前端而存在的后端(服务)中间层。即传统的前后端分离应用中,前端应用直接调用后端服务,后端服务再根据相关的业务逻辑进行数据的增删查改等。引入了BFF之后,前端应用将直接和BFF通信,BFF再和后端进行接口通信,所以本质上来说,BFF更像是一种“中间层”服务。

快速迭代和频繁的产品更新已成为许多公司产品研发的标准,持续集成、持续部署变的不可或缺。如果使用表述性状态传递(英文:Representational State Transfer,简称REST)模式应用接口,服务端往往需要修改对外暴露的数据接口,来满足客户端在需求和设计上的变化。这就阻碍了产品的快速开发和产品迭代。各种不同的前端框架和平台面对各种各样的前端框架和不同终端里的应用,开发并维护一套通用的API,用来满足左右需求,变得越来越难。

GraphQL,是一个新的API标准,为REST提供了一个更高效、更强大和更灵活的替代方案。REST模式是目前流行的从服务端获取数据的方式。然而,过去几年里,应用接口(API)领域有了根本性的变化。日益增多的移动端使用,需要数据加载过程更有效率;在移动端使用量变多的场景下,GraphQL通过最小化网络传输时所需要的数据量,改善了这种环境中的应用使用情况。但是通过GraphQL,客户端可以精确获取所需数据。

随着多终端、多平台、多业务形态、多技术选型等各方面的发展,前后端的数据交互,日益复杂。同一份数据,可能以多种不同的形态和结构,在多种场景下被消费。在理想情况下,这些复杂性可以全部由后端承担。前端只管从后端接口里,拿到已然整合完善的数据。然而,不管是因为后端的领域模型,还是因为微服务架构,设计开发者必须自行组合多个后端接口,才能获取到完整的数据结构。

发明内容

针对于上述现有技术的不足,本发明的目的在于提供一种GraphQL BFF框架优化设计方法,以解决现有技术中用户页面刷新响应效率低,无法有效利用浏览器缓存,前端开发与后端数据模型耦合,接口不易扩展的问题,本发明的方法不改变原有业务模块开发的逻辑与流程,能够提高网络传输效率,提高系统对业务数据接口变化的灵活性,提供外部系统服务无缝接入的扩展能力。

为达到上述目的,本发明采用的技术方案如下:

本发明的一种基于新型接口标准前端服务框架优化设计方法,步骤如下:

1)对Web App的前端页面开发进行优化:将异步访问模式(AsynchronousJavaScript and XML简称Ajax)请求,通过封装改进为两次请求,结合浏览器缓存特性提升GraphQL接口模式下的页面获取数据的访问效率;

2)对BFF服务端的设计进行优化:增加BFF中间层缓存与缓存刷新机制,提升BFF服务端数据访问命中效率与数据的时效性。

进一步地,所述步骤1)具体包括:

11)将原有页面端(Client)调用请求的提交POST方式,通过重新包装自定义Ajax请求,建立HTTP提交GET+POST两段式提交请求方式;

12)首次提交GET请求,采用加密签名散列算法(MD5或SHA1),将数据格式文本JSON请求内容生成唯一数字指纹字符串,根据数字指纹路径参数,无法命中BFF服务端缓存信息,返回http响应状态码404,为空(NULL);

13)采用提交POST原请求访问BFF服务端,并将数字指纹在请求(request)的头部(Header)信息参数中一并提交;

14)BFF服务端在接收到提交POST请求后,通过标准化GraphQL模式(Schema)校验,再通过GraphQL服务处理,向各类数据资源服务发送接口调用请求,并返回服务数据信息资源;

15)BFF服务端将返回的服务数据信息资源(通常为数据格式文本JSON格式),生成数据指纹值(ETag),将客户端请求数字指纹、GraphQL返回数据资源、资源数据指纹,在内存数据库中缓存(部分信息可采用文件缓存机制);把数据请求资源结果和资源数据指纹(ETag)信息返回前端客户端请求,完成一次完整的前、后端业务服务数据请求;

16)当前端页面再次请求相同的调用,BFF服务端对已缓存的前端请求,在不同的客户端(浏览器页面)发起的相同的Ajax请求,BFF服务端直接命中缓存数据返回结果,无需向GraphQL Services发起GraphQL查询请求;

17)前端页面采用了HTTP的GET请求,直接利用浏览器缓存,对未变化的数据请求BFF服务端返回状态为未修改(Not Modified 304返回码),减少数据data的返回结果,加快页面的刷新响应,减少用户等待时间;

18)对前端页面异步请求(Ajax)改进设计中,对请求的拦截识别,通过伪造(Mock)数据的方式,辅助前端页面的单元测试,开发调试工作;在集成测试环节,将BFF服务端的缓存作为测试数据,提高模拟测试效率。

进一步地,所述步骤2)具体包括:

21)对请求JSON参数体进行分解拆分并缓存;BFF服务端响应实现数据模式(Schema)拆分并发请求结果组合;

22)对加载最新数据请求时,HTTP请求GET路径添加时间戳参数,或在请求头部(Header)信息参数中添加标识;由BFF服务端重新获取后端业务数据资源接口数据并更新缓存;

23)BFF服务端提供刷新缓存请求接口,建立后端业务服务数据资源发生变化,接口通知BFF服务端检索缓存资源,及时清缓存或更新缓存的机制。

本发明的有益效果:

(1)减少网络流量,减轻并发压力;

宽带、光纤、5G等网络硬件的传输速度和吞吐量的提升,仍然需要在web系统的架构设计上,减少网络请求,避免网络带宽资源的浪费。对服务对象大众化的业务场景,更需要减少并发请求,最小化网络硬件与服务器资源投入。

(2)避免后端服务资源的过度或无效使用;

微服务架构下的云服务、数据中台、大数据分析服务等等,虽然可以通过硬件基础环境与微服务部署的优化和扩展,提升服务资源访问能力,但面对过度访问数据资源或无效使用接口资源,仍然会对后端数据分析、处理产生影响。通过设计优化,过滤掉大多数频繁过度或无效的后端资源请求,提升系统平台整体使用效率。

(3)提升开发效率;

进一步解耦前后端设计开发,减少GraphQL技术的引入,对web页面开发技术的影响干扰;提升前端开发人员开发测试用户页面的效率。

附图说明

图1为提交请求优化设计时序图。

图2为本发明设计方法的原理框图。

具体实施方式

为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。

参照图2所示,本发明的一种基于新型接口标准前端服务框架优化设计方法,步骤如下:

1)对Web App的前端页面开发进行优化:将异步访问模式(AsynchronousJavaScript and XML简称Ajax)请求,通过封装改进为两次请求,结合浏览器缓存特性提升GraphQL接口模式下的页面获取数据的访问效率;

参照图1所示,所述步骤1)具体包括:

11)将原有页面端(Client)调用请求的提交POST方式,通过重新包装自定义Ajax请求,建立HTTP提交GET+POST两段式提交请求方式;

12)首次提交GET请求,采用加密签名散列算法(MD5或SHA1),将数据格式文本JSON请求内容生成唯一数字指纹字符串;

如:将提交POST原请求,路径为“/graphql”,参数body为:

通过生成数字指纹字符串,如:0ca175b9c0f726a831d895e269332461,提交BFF的请求为:GET请求/graphql/0ca175b9c0f726a831d895e269332461。

根据数字指纹路径参数,无法命中BFF服务端缓存信息,返回http响应状态码404,为空(NULL);

13)采用提交(POST)原请求访问BFF服务端,并将数字指纹在请求(request)的头部(Header)信息参数中一并提交;

14)BFF服务端在接收到提交POST请求后,通过标准化GraphQL模式(Schema)校验,再通过GraphQL服务处理,向各类数据资源服务发送接口调用请求,并返回服务数据信息资源;

15)BFF服务端将返回的服务数据信息资源(通常为数据格式文本JSON格式),生成数据指纹值(ETag),将客户端请求数字指纹、GraphQL返回数据资源、资源数据指纹,在内存数据库中缓存(部分信息可采用文件缓存机制);把数据请求资源结果和资源数据指纹(ETag)信息返回前端客户端请求,完成一次完整的前、后端业务服务数据请求;

16)当前端页面再次请求相同的调用,BFF服务端对已缓存的前端请求,在不同的客户端(浏览器页面)发起的相同的Ajax请求,BFF服务端直接命中缓存数据返回结果,无需向GraphQL Services发起GraphQL查询请求;

17)前端页面采用了HTTP的GET请求,直接利用浏览器缓存,对未变化的数据请求BFF服务端返回状态为未修改(Not Modified 304返回码),减少数据data的返回结果,加快页面的刷新响应,减少用户等待时间;

18)对前端页面异步请求(Ajax)改进设计中,对请求的拦截识别,通过伪造(Mock)数据的方式,辅助前端页面的单元测试,开发调试工作;在集成测试环节,将BFF服务端的缓存作为测试数据,提高模拟测试效率。

2)对BFF服务端的设计进行优化:增加BFF中间层缓存与缓存刷新机制,提升BFF服务端数据访问命中效率与数据的时效性;

所述步骤2)具体包括:

21)对请求JSON参数体进行分解拆分并缓存;BFF服务端响应实现数据模式(Schema)拆分并发请求结果组合;

22)对加载最新数据请求时,HTTP请求GET路径添加时间戳参数,或在请求头部(Header)信息参数中添加标识;由BFF服务端重新获取后端业务数据资源接口数据并更新缓存;

23)BFF服务端提供刷新缓存请求接口,建立后端业务服务数据资源发生变化,接口通知BFF服务端检索缓存资源,及时清缓存或更新缓存的机制。

本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号