CN112328324A - 可配置数据源的DataFetcher实现系统和方法 - Google Patents

可配置数据源的DataFetcher实现系统和方法 Download PDF

Info

Publication number
CN112328324A
CN112328324A CN202011229727.9A CN202011229727A CN112328324A CN 112328324 A CN112328324 A CN 112328324A CN 202011229727 A CN202011229727 A CN 202011229727A CN 112328324 A CN112328324 A CN 112328324A
Authority
CN
China
Prior art keywords
data source
target
client
parameters
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011229727.9A
Other languages
English (en)
Other versions
CN112328324B (zh
Inventor
邓智成
彭一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Happly Sunshine Interactive Entertainment Media Co Ltd
Original Assignee
Hunan Happly Sunshine Interactive Entertainment Media Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan Happly Sunshine Interactive Entertainment Media Co Ltd filed Critical Hunan Happly Sunshine Interactive Entertainment Media Co Ltd
Priority to CN202011229727.9A priority Critical patent/CN112328324B/zh
Publication of CN112328324A publication Critical patent/CN112328324A/zh
Application granted granted Critical
Publication of CN112328324B publication Critical patent/CN112328324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种可配置数据源的DataFetcher实现系统和方法,该系统包括配置端、服务端和客户端,由配置端针对客户端配置目标业务对应的客户端参数、数据源参数和协议参数,服务端从配置拉取其相关数据生成DataFetcher代码注册到graphql引擎、并将相关数据源参数转化为接口文档,客户端基于接口文档向服务端发起业务请求,服务端调用graphql引擎运行DataFetcher代码,以实现从目标数据源中获得数据。本发明通过配置实现数据源的获取,建立DataFetcher的实现机制,能够支持多种数据源类型,提升开发效率。

Description

可配置数据源的DataFetcher实现系统和方法
技术领域
本发明涉及互联网技术领域,更具体地说,涉及一种可配置数据源的DataFetcher实现系统和方法。
背景技术
graphql是一个用于API的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统可以自定义)。graphql并没有和任何特定数据库或者存储引擎绑定,而是依靠现有的代码和数据支撑。
一个GraphQL服务是通过定义类型和类型上的字段来创建的。针对graphql-java语言,每个类型上的每个字段的数据获取,会解析对应到一个DataFetcher数据源。而现阶段,该DataFetcher数据源的获取需要手动写代码去实现,这样就会写大量的DataFetcher代码,不灵活且导致研发效率低下。
发明内容
有鉴于此,为解决上述问题,本发明提供一种可配置数据源的DataFetcher实现系统和方法,技术方案如下:
一种可配置数据源的DataFetcher实现系统,所述系统包括配置端、服务端和客户端;
所述配置端,用于针对所述客户端配置目标业务对应的客户端参数、数据源参数和协议参数,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
所述服务端,用于拉取所述客户端参数、所述数据源参数和所述协议参数,并基于拉取结果生成DataFetcher代码;将所述DataFetcher代码注册到graphql引擎;将所述数据源类型和所述目标业务的网络配置转化为接口文档,并发送给所述客户端;
所述客户端,用于基于所述接口文档向所述服务端发起业务请求,所述业务请求中包含待请求的目标字段;
所述服务端,还用于接收所述业务请求;调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码,以实现确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识执行所述目标数据源、以及从所述目标数据源获取所述目标字段的数据;向所述客户端返回所述目标字段的数据。
优选的,所述客户端参数还包括:容错参数;
所述服务端,还用于:
在执行所述调用所述graphql引擎之前,基于所述容错参数对所述业务请求进行容错降级。
优选的,所述客户端参数还包括:缓存参数;
用于向所述客户端返回所述目标字段的数据的所述服务端,具体用于:
基于所述缓存参数向所述客户端返回所述目标字段的数据,以使所述客户端对所述目标字段的数据进行缓存。
优选的,所述数据源参数还包括:所述数据源的输入格式和输出格式;
所述服务端在执行所述调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码的过程中,还能够实现:
在执行所述从所述目标数据源获取所述目标字段的数据之前,基于所述目标数据源的输入格式对所述目标字段进行渲染;
所述服务端,还用于:
在执行所述向所述客户端返回所述目标字段的数据之前,基于所述目标数据源的输出格式处理所述目标字段的数据。
一种可配置数据源的DataFetcher实现方法,所述方法应用于可配置数据源的DataFetcher实现系统中的服务端,所述方法包括:
从配置端拉取目标业务对应的客户端参数、数据源参数和协议参数,并基于拉取结果生成DataFetcher代码,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
将所述DataFetcher代码注册到graphql引擎;
将所述数据源类型和所述目标业务的网络配置转化为接口文档,并发送给客户端,以使所述客户端基于所述接口文档发起业务请求,所述业务请求中包含待请求的目标字段;
调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码,以实现确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识从所述目标数据源获取所述目标字段的数据;
向所述客户端返回所述目标字段的数据。
优选的,所述客户端参数还包括:容错参数;
所述方法还包括:
在执行所述调用所述graphql引擎之前,基于所述容错参数对所述业务请求进行容错降级。
优选的,所述客户端参数还包括:缓存参数;
所述向所述客户端返回所述目标字段的数据,包括:
基于所述缓存参数向所述客户端返回所述目标字段的数据,以使所述客户端对所述目标字段的数据进行缓存。
优选的,所述数据源参数还包括:所述数据源的输入格式和输出格式;
在执行所述调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码的过程中,还能够实现:
在执行所述从所述目标数据源获取所述目标字段的数据之前,基于所述目标数据源的输入格式对所述目标字段进行渲染;
所述方法还包括:
在执行所述向所述客户端返回所述目标字段的数据之前,基于所述目标数据源的输出格式处理所述目标字段的数据。
一种可配置数据源的DataFetcher实现方法,所述方法应用于可配置数据源的DataFetcher实现系统中的客户端,所述方法包括:
接收服务端发送的接口文档,所述接口文档是所述服务端通过转化其从配置端拉取的客户端参数中的数据源类型和目标业务的网络配置所得到的;
基于所述接口文档向所述服务端发起业务请求,所述业务请求中包含待请求的目标字段,以使所述服务端调用graphql引擎,所述graphql引擎注册有DataFetcher代码,所述DataFetcher代码是所述服务端基于从所述配置端拉取的所述客户端参数、数据源参数和协议参数所生成的,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
接收所述服务端返回所述目标字段的数据,所述目标字段的数据是所述服务端通过所述graphql引擎运行所述DataFetcher代码从被执行的目标数据源获取的,所述目标数据源是基于所述目标数据源的接口标识被执行的,所述目标数据源是所述目标字段对应的数据源。
一种可配置数据源的DataFetcher实现方法,所述方法应用于可配置数据源的DataFetcher实现系统中的配置端,所述方法包括:
针对客户端配置目标业务对应的客户端参数、数据源参数和协议参数,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
响应服务端的拉取操作,向所述服务端返回所述客户端参数、所述数据源参数和所述协议参数,以使所述服务端基于拉取结果生成DataFetcher代码、以及将所述DataFetcher代码注册到graphql引擎,还使所述服务端将所述数据源类型和所述目标业务的网络配置转化为接口文档发送给所述客户端,还使所述客户端基于所述接口文档向所述服务端发起包含待请求的目标字段的业务请求,还使所述服务端通过调用所述graphql引擎运行所述DataFetcher代码向所述客户端返回所述目标字段的数据,所述DataFetcher代码运行能够实现:
确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识执行所述目标数据源、以及从所述目标数据源获取所述目标字段的数据;向所述客户端返回所述目标字段的数据。
相较于现有技术,本发明实现的有益效果为:
本发明提供一种可配置数据源的DataFetcher实现系统和方法,通过配置实现数据源的获取,建立DataFetcher的实现机制,能够支持多种数据源类型,提升开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的可配置数据源的DataFetcher实现系统的系统架构图;
图2为本发明实施例提供的DataFetcher客户端配置示意图;
图3为本发明实施例提供的DataFetcher数据源配置示意图;
图4为本发明实施例提供的DataFetcher协议配置示意图;
图5为本发明实施例提供的UML类图;
图6为本发明实施例提供的可配置数据源的DataFetcher实现方法的方法流程图;
图7为本发明实施例提供的可配置数据源的DataFetcher实现方法的另一方法流程图;
图8为本发明实施例提供的可配置数据源的DataFetcher实现方法的再一方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
现有技术没有定义DataFetcher的实现机制,需要手动编码去实现。与现有技术相比,本发明建立了一套graphql引擎的DataFetcher的实现机制,能够通过配置达到获取多数据源的实现。
参见图1所示的可配置数据源的DataFetcher实现系统的系统架构图,该系统包括配置端10、服务端20和客户端30。
配置端10,用于针对客户端30配置目标业务对应的客户端30参数、数据源参数和协议参数,客户端参数包括数据源类型和目标业务的网络配置,数据源参数包括数据源的接口标识,协议参数包括数据源对应的字段。
本发明实施例中,配置端10设计三层逻辑结构,即客户端、数据源和协议三个方面。以下分别对这三层逻辑结构进行说明:
客户端参数:其至少包含两个元素,即类型和基础配置。具体的,类型在本发明中被配置HTTP、GRPC、DB和Redis类型中的一种,而基础配置则被配置为服务端20的地址。当然,基础配置还可以配置有超时时间等,以限制服务端20返回数据的时间,一旦超过该时间客户端30可以采取诸如重新发送业务请求的处理手段。
数据源参数:其至少包含两个元素,即数据源配置和接口配置。具体的,数据源配置是指对于目标业务的客户端,同一个客户端上可以配置多个数据源,比如媒资服务客户端,其可以配置视频信息数据源和合集信息数据源等多个与媒资服务相关的数据源,再比如启播服务客户端,其可以配置通用启播视频信息数据源和预览启播视频信息数据源等多个与启播服务相关的数据源。而接口配置则是指数据源的接口的标识,比如接口名称,其属于远程调用。
协议参数:其至少包括三个元素,即类型、字段和数据源,作用是把某个类型的字段绑定到一个数据源。具体的:同一类型下的多个字段可以绑定同一个数据源,而该字段对应到接口能够能够返回数据的具体层级,当graphql引擎在获取该字段的数据时,能够通过协议参数找到相应的数据源,执行该数据源即可得到具体数据。
服务端20,用于拉取客户端参数、数据源参数和协议参数,并基于拉取结果生成DataFetcher代码;将DataFetcher代码注册到graphql引擎;将数据源类型和目标业务的网络配置转化为接口文档,并发送给客户端。
本发明实施例中,服务端20会定时从配置端10拉取相关的配置数据,生成DataFetcher代码,并注册到graphql引擎。此外,服务端20会将数据源类型和目标业务的网络配置映射为一个通用的接口文档,通过该接口文档服务端即可为客户端30提供目标业务。
客户端30,用于基于接口文档向服务端20发起业务请求,业务请求中包含待请求的目标字段。
服务端20,还用于接收业务请求;调用graphql引擎,并通过graphql引擎运行DataFetcher代码,以实现确定目标字段对应的目标数据源、以及基于目标数据源的接口标识执行目标数据源、以及从目标数据源获取目标字段的数据;向客户端30返回目标字段的数据。
本发明实施例中,客户端30向服务端20请求目标字段的数据。服务端20则通过调用graphql引擎运行DataFetcher代码来执行目标数据源获得目标字段的数据,而目标数据源则可以通过协议参数来确定。
在其他一些实施例中,客户端参数还可以包括容错参数,相应的,服务端20还用于:
在执行调用graphql引擎之前,基于容错参数对业务请求进行容错降级。
本发明实施例中,容错参数为客户端30相关的容错配置,例如并发数,熔断失败率阈值等,可以基于hystrix配置实现。以并发数为例,通过设定并发的请求数量阈值,一旦客户端30同时发送的业务请求的数量大于该阈值,则停止响应,并向客户端30报错。
在其他一些实施例中,客户端参数还可以包括缓存参数,相应的,用于向客户端30返回目标字段的数据的服务端20,具体用于:
基于缓存参数向客户端返回目标字段的数据,以使客户端对目标字段的数据进行缓存。
本发明实施例中,针对不同数据源所返回的数据,可以设置不同的缓存机制,比如部分类型的数据源的数据不允许缓存,再比如,部分类型的数据源的数据允许缓存一定时间,比如1分钟。由此,客户端30在获得目标字段的数据后,可以基于缓存参数进行相关的缓存操作,进而在后续再次请求时,优先从缓存中获得数据,以此可以提高业务的访问效率。
在其他一些实施例中,数据源参数还包括数据源的输入格式和输出格式,相应的,服务端20在执行调用graphql引擎,并通过graphql引擎运行DataFetcher代码的过程中,还能够实现:
在执行从目标数据源获取目标字段的数据之前,基于目标数据源的输入格式对目标字段进行渲染;
服务端20,还用于:
在执行向客户端30返回目标字段的数据之前,基于目标数据源的输出格式处理目标字段的数据。
本发明实施例中,输入格式是指向一个数据源的接口请求数据的模板,当请求数据源的接口时,graphql引擎会基于该模板将目标字段渲染成具体的参数,再发起请求。而输出格式则是指数据源返回的数据进行相关字段的提取并进行格式定义,比如格式化为某个类型的数据再返回给客户端30。
为方便理解本发明,以下一个获取IP地域信息(grpc类型的DataFetcher)的配置化为例进行说明:
步骤1,参见图2所示的DataFetcher客户端配置示意图,配置IP地域服务的DataFetcher客户端,配置如下:
名称,客户端30的标识,用于服务修改与调用;
数据源类型,GRPC类型;
(基础)配置,主要配置IP地域服务的地址,客户端连接数,调用超时时间;
容错策略(即容错参数),配置并发数(coreSize)、错误率阈值(errorThresholdPercentage=50,表示错误率阈值为50%)
扩展配置,由于是GRPC类型,需要配置grpcd的proto文件内容。
步骤2,参见图3所示的DataFetcher数据源配置示意图,配置IP地域服务的DataFetcher数据源,配置如下:
名称,数据源标识,用于服务修改与调用;
客户端,这里选择步骤1中配好的客户端30的标识;
接口,请求地域信息的数据源的接口标识,比如接口名称;
输入(格式),IP地域服务的请求参数模板,需要传递ip参数;
输出(格式),这里配置“area:JSONObject”表示,从数据源返回数据中提取area字段数据,并格式化为JSONObject类型返回。
步骤3,参见图4所示的DataFetcher协议配置示意图,配置IP地域服务的协议,配置如下:
类型,配置IPAuth类型(这里对应Graphql引擎DataSchema中的type类型)
字段,配置getAreaInfo字段(这里对应Graphql引擎DataSchema中的filed字段)
数据源,这里选择步骤2中配好的数据源的接口标识。
步骤4,服务端20定时拉取IP地域服务的配置数据(客户端、数据源、协议),生成DataFetcher代码,并注册进入Graphql引擎,见图5所示的UML类图。
步骤5,服务端20在处理一次请求时,当Graphql引擎在解析“IPAuth类型/getAreaInfo字段”时,会找到IP地域信息DataFetcher代码,即步骤4中生成的DataFetcher代码,执行该DataFetcher代码获取到对应的数据并返回给客户端30。
综上,本发明实施例提供的可配置数据源的DataFetcher实现系统,通过配置客户端、数据源和协议三层逻辑结构的数据即可定义一个DataFetcher,从而建立一套DataFetcher实现机制,支持多数据源类型配置,不再需要硬编码大量的DataFetcher代码,实现多数据源可配置化的DataFetcher功能。
基于上述实施例提供的可配置数据源的DataFetcher实现系统,本发明实施例还提供一种可配置数据源的DataFetcher实现方法,该方法应用于可配置数据源的DataFetcher实现系统中的服务端,包括如下步骤,方法流程图如图6所示:
S101,从配置端拉取目标业务对应的客户端参数、数据源参数和协议参数,并基于拉取结果生成DataFetcher代码,客户端参数包括数据源类型和目标业务的网络配置,数据源参数包括数据源的接口标识,协议参数包括数据源对应的字段。
S102,将DataFetcher代码注册到graphql引擎。
S103,将数据源类型和目标业务的网络配置转化为接口文档,并发送给客户端,以使客户端基于接口文档发起业务请求,业务请求中包含待请求的目标字段。
S104,调用graphql引擎,并通过graphql引擎运行DataFetcher代码,以实现确定目标字段对应的目标数据源、以及基于目标数据源的接口标识从目标数据源获取目标字段的数据。
S105,向客户端返回目标字段的数据。
可选的,客户端参数还包括:容错参数;
上述方法还包括:
在执行S104之前,基于容错参数对业务请求进行容错降级。
可选的,客户端参数还包括:缓存参数;
S105“向客户端返回目标字段的数据”,包括:
基于缓存参数向客户端返回目标字段的数据,以使客户端对目标字段的数据进行缓存。
可选的,数据源参数还包括:数据源的输入格式和输出格式;
在执行调用graphql引擎,并通过graphql引擎运行DataFetcher代码的过程中,还能够实现:
在执行从目标数据源获取目标字段的数据之前,基于目标数据源的输入格式对目标字段进行渲染;
上述方法还包括:
在执行S105之前,基于目标数据源的输出格式处理目标字段的数据。
基于上述实施例提供的可配置数据源的DataFetcher实现系统,本发明实施例还提供一种可配置数据源的DataFetcher实现方法,该方法应用于可配置数据源的DataFetcher实现系统中的客户端,包括如下步骤,方法流程图如图7所示:
S201,接收服务端发送的接口文档,接口文档是服务端通过转化其从配置端拉取的客户端参数中的数据源类型和目标业务的网络配置所得到的。
S202,基于接口文档向服务端发起业务请求,业务请求中包含待请求的目标字段,以使服务端调用graphql引擎,graphql引擎注册有DataFetcher代码,DataFetcher代码是服务端基于从配置端拉取的客户端参数、数据源参数和协议参数所生成的,数据源参数包括数据源的接口标识,协议参数包括数据源对应的字段。
S203,接收服务端返回目标字段的数据,目标字段的数据是服务端通过graphql引擎运行DataFetcher代码从被执行的目标数据源获取的,目标数据源是基于目标数据源的接口标识被执行的,目标数据源是目标字段对应的数据源。
基于上述实施例提供的可配置数据源的DataFetcher实现系统,本发明实施例还提供一种可配置数据源的DataFetcher实现方法,该方法应用于可配置数据源的DataFetcher实现系统中的配置端,包括如下步骤,方法流程图如图8所示:
S301,针对客户端配置目标业务对应的客户端参数、数据源参数和协议参数,客户端参数包括数据源类型和目标业务的网络配置,数据源参数包括数据源的接口标识,协议参数包括数据源对应的字段。
S302,响应服务端的拉取操作,向服务端返回客户端参数、数据源参数和协议参数,以使服务端基于拉取结果生成DataFetcher代码、以及将DataFetcher代码注册到graphql引擎,还使服务端将数据源类型和目标业务的网络配置转化为接口文档发送给客户端,还使客户端基于接口文档向服务端发起包含待请求的目标字段的业务请求,还使服务端通过调用graphql引擎运行DataFetcher代码向客户端返回目标字段的数据,DataFetcher代码运行能够实现:确定目标字段对应的目标数据源、以及基于目标数据源的接口标识执行目标数据源、以及从目标数据源获取目标字段的数据;向客户端返回目标字段的数据。
需要说明的是,对于上述可配置数据源的DataFetcher实现方法,服务端、客户端和配置端的具体执行过程,可以参见可配置数据源的DataFetcher实现系统的对应部分。
本发明实施例提供的可配置数据源的DataFetcher实现方法,通过配置实现数据源的获取,建立DataFetcher的实现机制,能够支持多种数据源类型,提升开发效率。
以上对本发明所提供的一种可配置数据源的DataFetcher实现系统和方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种可配置数据源的DataFetcher实现系统,其特征在于,所述系统包括配置端、服务端和客户端;
所述配置端,用于针对所述客户端配置目标业务对应的客户端参数、数据源参数和协议参数,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
所述服务端,用于拉取所述客户端参数、所述数据源参数和所述协议参数,并基于拉取结果生成DataFetcher代码;将所述DataFetcher代码注册到graphql引擎;将所述数据源类型和所述目标业务的网络配置转化为接口文档,并发送给所述客户端;
所述客户端,用于基于所述接口文档向所述服务端发起业务请求,所述业务请求中包含待请求的目标字段;
所述服务端,还用于接收所述业务请求;调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码,以实现确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识执行所述目标数据源、以及从所述目标数据源获取所述目标字段的数据;向所述客户端返回所述目标字段的数据。
2.根据权利要求1所述的系统,其特征在于,所述客户端参数还包括:容错参数;
所述服务端,还用于:
在执行所述调用所述graphql引擎之前,基于所述容错参数对所述业务请求进行容错降级。
3.根据权利要求1所述的系统,其特征在于,所述客户端参数还包括:缓存参数;
用于向所述客户端返回所述目标字段的数据的所述服务端,具体用于:
基于所述缓存参数向所述客户端返回所述目标字段的数据,以使所述客户端对所述目标字段的数据进行缓存。
4.根据权利要求1所述的系统,其特征在于,所述数据源参数还包括:所述数据源的输入格式和输出格式;
所述服务端在执行所述调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码的过程中,还能够实现:
在执行所述从所述目标数据源获取所述目标字段的数据之前,基于所述目标数据源的输入格式对所述目标字段进行渲染;
所述服务端,还用于:
在执行所述向所述客户端返回所述目标字段的数据之前,基于所述目标数据源的输出格式处理所述目标字段的数据。
5.一种可配置数据源的DataFetcher实现方法,其特征在于,所述方法应用于可配置数据源的DataFetcher实现系统中的服务端,所述方法包括:
从配置端拉取目标业务对应的客户端参数、数据源参数和协议参数,并基于拉取结果生成DataFetcher代码,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
将所述DataFetcher代码注册到graphql引擎;
将所述数据源类型和所述目标业务的网络配置转化为接口文档,并发送给客户端,以使所述客户端基于所述接口文档发起业务请求,所述业务请求中包含待请求的目标字段;
调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码,以实现确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识从所述目标数据源获取所述目标字段的数据;
向所述客户端返回所述目标字段的数据。
6.根据权利要求5所述的方法,其特征在于,所述客户端参数还包括:容错参数;
所述方法还包括:
在执行所述调用所述graphql引擎之前,基于所述容错参数对所述业务请求进行容错降级。
7.根据权利要求5所述的方法,其特征在于,所述客户端参数还包括:缓存参数;
所述向所述客户端返回所述目标字段的数据,包括:
基于所述缓存参数向所述客户端返回所述目标字段的数据,以使所述客户端对所述目标字段的数据进行缓存。
8.根据权利要求5所述的方法,其特征在于,所述数据源参数还包括:所述数据源的输入格式和输出格式;
在执行所述调用所述graphql引擎,并通过所述graphql引擎运行所述DataFetcher代码的过程中,还能够实现:
在执行所述从所述目标数据源获取所述目标字段的数据之前,基于所述目标数据源的输入格式对所述目标字段进行渲染;
所述方法还包括:
在执行所述向所述客户端返回所述目标字段的数据之前,基于所述目标数据源的输出格式处理所述目标字段的数据。
9.一种可配置数据源的DataFetcher实现方法,其特征在于,所述方法应用于可配置数据源的DataFetcher实现系统中的客户端,所述方法包括:
接收服务端发送的接口文档,所述接口文档是所述服务端通过转化其从配置端拉取的客户端参数中的数据源类型和目标业务的网络配置所得到的;
基于所述接口文档向所述服务端发起业务请求,所述业务请求中包含待请求的目标字段,以使所述服务端调用graphql引擎,所述graphql引擎注册有DataFetcher代码,所述DataFetcher代码是所述服务端基于从所述配置端拉取的所述客户端参数、数据源参数和协议参数所生成的,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
接收所述服务端返回所述目标字段的数据,所述目标字段的数据是所述服务端通过所述graphql引擎运行所述DataFetcher代码从被执行的目标数据源获取的,所述目标数据源是基于所述目标数据源的接口标识被执行的,所述目标数据源是所述目标字段对应的数据源。
10.一种可配置数据源的DataFetcher实现方法,其特征在于,所述方法应用于可配置数据源的DataFetcher实现系统中的配置端,所述方法包括:
针对客户端配置目标业务对应的客户端参数、数据源参数和协议参数,所述客户端参数包括数据源类型和所述目标业务的网络配置,所述数据源参数包括数据源的接口标识,所述协议参数包括所述数据源对应的字段;
响应服务端的拉取操作,向所述服务端返回所述客户端参数、所述数据源参数和所述协议参数,以使所述服务端基于拉取结果生成DataFetcher代码、以及将所述DataFetcher代码注册到graphql引擎,还使所述服务端将所述数据源类型和所述目标业务的网络配置转化为接口文档发送给所述客户端,还使所述客户端基于所述接口文档向所述服务端发起包含待请求的目标字段的业务请求,还使所述服务端通过调用所述graphql引擎运行所述DataFetcher代码向所述客户端返回所述目标字段的数据,所述DataFetcher代码运行能够实现:
确定所述目标字段对应的目标数据源、以及基于所述目标数据源的接口标识执行所述目标数据源、以及从所述目标数据源获取所述目标字段的数据;向所述客户端返回所述目标字段的数据。
CN202011229727.9A 2020-11-06 2020-11-06 可配置数据源的DataFetcher实现系统和方法 Active CN112328324B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011229727.9A CN112328324B (zh) 2020-11-06 2020-11-06 可配置数据源的DataFetcher实现系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011229727.9A CN112328324B (zh) 2020-11-06 2020-11-06 可配置数据源的DataFetcher实现系统和方法

Publications (2)

Publication Number Publication Date
CN112328324A true CN112328324A (zh) 2021-02-05
CN112328324B CN112328324B (zh) 2022-04-19

Family

ID=74316740

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011229727.9A Active CN112328324B (zh) 2020-11-06 2020-11-06 可配置数据源的DataFetcher实现系统和方法

Country Status (1)

Country Link
CN (1) CN112328324B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014028115A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
CN104572096A (zh) * 2014-12-29 2015-04-29 中国科学院计算机网络信息中心 一种基于web的多模型数据可视化开发方法及平台
WO2015102659A1 (en) * 2014-01-02 2015-07-09 Linkedin Corporation Graph-based system and method of information storage and retrieval
CN107277116A (zh) * 2017-05-27 2017-10-20 北京思特奇信息技术股份有限公司 一种可配置的客户端引擎及利用其调用服务的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014028115A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
WO2015102659A1 (en) * 2014-01-02 2015-07-09 Linkedin Corporation Graph-based system and method of information storage and retrieval
CN104572096A (zh) * 2014-12-29 2015-04-29 中国科学院计算机网络信息中心 一种基于web的多模型数据可视化开发方法及平台
CN107277116A (zh) * 2017-05-27 2017-10-20 北京思特奇信息技术股份有限公司 一种可配置的客户端引擎及利用其调用服务的方法

Also Published As

Publication number Publication date
CN112328324B (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
US11394805B1 (en) Automatic discovery of API information
CN108509523B (zh) 区块链数据的结构化处理方法、设备及可读存储介质
US8161160B2 (en) XML-based web feed for web access of remote resources
CN110377438B (zh) 跨进程通信接口的路由方法、装置和系统
EP2293516B1 (en) Method, apparatus and system for processing composite service and replacing service and invoking service
JP2008262541A (ja) 式の処理を改良した方法、装置、およびコンピュータプログラム
CN109120684B (zh) 信息化管理方法、装置、esb总线平台以及存储介质
CN112035317A (zh) 一种微服务链路监控方法、装置、设备及介质
WO2015035816A1 (zh) 一种nginx服务器配置维护方法及系统
US8230448B2 (en) Methods, systems and computer program products for web service interaction with a resource management system
JP2010128877A (ja) ウェブシステムおよび処理記録収集方法
CN112685193B (zh) 一种微服务网关接口暴露及聚合方法
JP2022523914A (ja) レプリゼンテーショナルステートトランスファ(rest)アプリケーションプログラミングインターフェイス(api)を使用するデータ変換のための方法、システムおよびコンピュータ読取可能媒体
CN114338604B (zh) 一种dns配置更新方法及系统
CN111881394B (zh) 一种应用中间层的请求处理方法及系统
CN111414261B (zh) 一种分布式系统的跨网络调用方法、装置及相关组件
EP2326060A1 (en) Service provisioning
US20070209042A1 (en) Grid computing architecture & associated method of invoking/registering network services for subscription
CN112328324B (zh) 可配置数据源的DataFetcher实现系统和方法
CN101626310A (zh) 集群环境中的服务信息传输方法、装置及系统
CN112306578B (zh) 可配置数据源的DataFetcher实现系统和方法
CN113709187B (zh) 多服务器的数据请求方法、装置、设备及存储介质
CN110515599A (zh) 一种基于配置的数据开放接口实现方法和系统
CN110557428B (zh) 一种基于Kubernetes的脚本解释型服务代理方法和系统
US20110320527A1 (en) Method and system for managing a web-domain request

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant