CN117354114A - 一种基于云原生架构的数据服务发布方法和系统 - Google Patents

一种基于云原生架构的数据服务发布方法和系统 Download PDF

Info

Publication number
CN117354114A
CN117354114A CN202311654058.3A CN202311654058A CN117354114A CN 117354114 A CN117354114 A CN 117354114A CN 202311654058 A CN202311654058 A CN 202311654058A CN 117354114 A CN117354114 A CN 117354114A
Authority
CN
China
Prior art keywords
service
script
function
data
http
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
CN202311654058.3A
Other languages
English (en)
Other versions
CN117354114B (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.)
Yizhirui Information Technology Co ltd
Original Assignee
BEIJING JIETAI TIANYU INFORMATION TECHNOLOGY 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 BEIJING JIETAI TIANYU INFORMATION TECHNOLOGY CO LTD filed Critical BEIJING JIETAI TIANYU INFORMATION TECHNOLOGY CO LTD
Priority to CN202311654058.3A priority Critical patent/CN117354114B/zh
Publication of CN117354114A publication Critical patent/CN117354114A/zh
Application granted granted Critical
Publication of CN117354114B publication Critical patent/CN117354114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0246Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols
    • H04L41/0273Exchanging or transporting network management information using the Internet; Embedding network management web servers in network elements; Web-services-based protocols using web services for network management, e.g. simple object access protocol [SOAP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/022Multivendor or multi-standard integration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/024Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/20Network management software packages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及云原生技术领域,公开了一种基于云原生架构的数据服务发布方法和系统,其中该方法包括:在云原生架构提供的Java虚拟机上在线编写并调试服务脚本,服务脚本中包含用于访问不同数据源的内置函数;将调试后的服务脚本持久化保存,并将服务脚本编译成服务实例;在服务实例的http容器中注册对应的服务路由,在服务网关中注册对外服务路由。本方案能够提高服务脚本迭代开发效率,降低服务开发成本和难度,同时增强服务的高并发性和高可用性。

Description

一种基于云原生架构的数据服务发布方法和系统
技术领域
本发明涉及云原生技术应用技术领域,具体涉及一种基于云原生架构的数据服务发布方法、系统、计算设备及存储介质。
背景技术
在数据中台架构中数据服务连接数据消费层,将已整合的数据以服务的方式提供给数据消费者。数据服务可以从不同数据源提取数据,形成统一的API (ApplicationProgramming Interface,应用程序编程接口)对外共享,并将数据API的访问情况实时写入元数据中心,形成完整的数据血缘。
数据服务对于消费者而言,屏蔽了数据源的多样性、数据生产的复杂性,只需根据自身业务需要调用合适的数据服务,即可得到有用的数据信息。因此,数据服务对于大数据系统建设而言,是最直接体现数据价值的渠道和手段。
目前数据服务的实现机制主要包括:
1.针对单个数据源的数据资产,通过编写SQL(Structured Query Language,结构化查询语言)语句进行表单查询,将SQL语句绑定到对应的http服务请求路径后对外暴露服务地址,将查询结果以JSON结构体方式对外输出。这种方式对于跨多数据源的场景支持较为薄弱,并且由于SQL语言的局限性,在发布数据服务时无法处理业务逻辑。例如,有部分的数据项出于安全存储的需要,进行了加密处理,但是发布的数据服务需要是明文,这时需要有个解密的步骤,SQL就无法胜任。
2.使用JAVA、GO、PHP等编程语言编写一套完整的HTTP(Hypertext TransferProtocol,超文本传输协议)服务应用,在调试完成后将源代码与配置文件编译打包生成二进制文件,然后制作成镜像发布到镜像仓库,在云原生环境下发布服务。这种方式发布服务的过程较为繁琐,需要先掌握一门或多门编程语言再编写代码,编译打包,制作镜像,推送镜像,直至发布成功。由于环境安全性的要求,处于云原生环境下的数据源没有办法从外界直接访问,调试也只有在经历上述流程后才能进行。这样会大大影响服务发布的效率,无法满足快速响应的需求。
发明内容
为了提高数据服务发布的效率和响应效率,本方案提出了一种基于云原生架构的数据服务发布方法和系统,在云原生环境的支持下,能够适配多种不同的数据源的访问方式,服务开发者在编写脚本时只需关注数据读取处理和组装逻辑,无需关系底层数据源之间的差异性;通过即刻编写即可调试提高数据服务开发效率,有利于服务快速迭代推进,可以为大数据平台对外提供高可用、高并发的数据服务。
根据本发明的第一方面,提供一种基于云原生架构的数据服务发布方法,包括:在云原生架构提供的Java虚拟机上在线编写并调试服务脚本,服务脚本中包含用于访问不同数据源的内置函数;将调试后的服务脚本持久化保存,并将服务脚本编译成服务实例;在服务实例的http容器中注册对应的服务路由,在服务网关中注册对外服务路由。
通过上述技术方案,基于云原生架构提供的Java虚拟机可以实现脚本的即刻编写即刻调试,对服务开发者屏蔽底层数据源的差异性,只需专注于数据读取、处理、组装逻辑,能够降低服务开发和运维的复杂性,实现数据服务开发的快速迭代;同时基于云原生技术的优势保证数据服务的高可用性。
可选地,在本发明提供的数据服务发布方法中,可以使用groovy语言和Java语言混合编写服务脚本;解析服务脚本,检查脚本中是否有语法错误;向脚本中注入访问多个不同数据源的内置函数和http请求的相关对象;根据http请求的查询参数对脚本进行部分替换和裁剪,生成用于执行的脚本;将用于执行的脚本提交到Java虚拟机的脚本引擎中执行,返回json格式的查询结果。
可选地,在本发明提供的数据服务发布方法中,提取http请求的相关对象,相关对象包括请求对象、响应对象、请求头、请求体;编写内置函数将相关对象注入脚本中;在脚本中引用内置函数来访问不同的数据源和查询参数。
可选地,在本发明提供的数据服务发布方法中,内置函数包括find函数、log函数、assert函数、util函数、httpclient函数,find函数为执行SQL语句或其他数据源查询特定元素的函数;log函数为记录程序运行过程中的日志函数;assert函数为检查程序中条件是否为真的断言函数;util函数为工具类函数,httpclient函数为用于发起http请求和处理http响应的函数。
可选地,在本发明提供的数据服务发布方法中,从http请求对象中获取查询参数的值;根据查询参数的值对脚本中预留的参数进行替换;根据查询参数的值判断是否需要裁剪部分脚本;将处理后的脚本作为http响应的一部分,返回用于执行的脚本。
可选地,在本发明提供的数据服务发布方法中,将调试后的脚本持久化保存在数据库或文件系统中;将数据库或文件系统中的脚本推送给所有运行中的服务实例的Java虚拟机;在Java虚拟机上将脚本编译成 javax.script.CompiledScript 对象实例。
可选地,在本发明提供的数据服务发布方法中,在应用程序中定义不同的路由和响应该路由的服务实例;将路由映射到http容器中,以便当接收到该路由的请求时调用对应的服务实例进行处理;在服务网关的配置文件中定义对外暴露的路由和相应的后端服务地址,使服务网关将外部请求重定向到对应的服务实例;基于云原生架构将配置好的服务实例和服务网关部署到服务器中。
根据本发明的第二方面,提供了一种基于云原生架构的数据服务分发系统,包括:服务网关、服务实例和服务管理模块。
其中,服务网关用于接收客户端的http请求,根据负载均衡策略将请求路由到后端一个或多个服务实例上;
服务实例用于根据http请求参数从多个不同的数据源中获取请求数据,数据源包括关系型数据库、非关系型数据库、文件系统、缓存系统、web服务接口、第三方接口、消息队列;
服务管理模块用于在云原生架构提供的Java虚拟机上在线编写、调试、预编译服务脚本得到对应的服务实例。
根据本发明的第三方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行上述基于云原生架构的数据服务发布方法的指令。
根据本发明的第四方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行上述的基于云原生架构的数据服务发布方法。
根据本发明提供的基于云原生架构的数据服务发布方法和系统,通过在云原生架构提供的Java虚拟机上,使用groovy语言和Java语言混合编写服务脚本,可以基于服务脚本中的内置函数直接访问不同数据源,能够大大降低服务开发的成本和难度;通过即刻编写即刻调试可以快速迭代开发服务;在服务应对高并发的请求时,通过云原生技术的负载均衡、熔断、智能弹性伸缩等机制,可以保障服务运行的稳定性和高可用性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的基于云原生架构的数据服务发布系统示意图;
图2示出了根据本发明一个实施例的计算设备100的结构框图;
图3示出了根据本发明一个实施例的基于云原生架构的数据服务发布方法300的流程示意图;
图4示出了根据本发明一个实施例的服务请求路由示意图。
具体实施方式
云原生是一种基于微服务架构的应用程序开发和部署方法,有容器化、弹性伸缩等特点。在云原生环境下发布数据服务的一种常用方式是使用容器化技术将数据打包成镜像,在容器平台上进行部署和管理。
本方案摒弃了服务编写、编译、制作镜像、部署等冗长步骤,做到即刻编写即刻提供服务的快速响应,能够最大限度满足消费者高并发、高频率的调用需求。
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的基于云原生架构的数据服务发布系统示意图。基于云原生架构的数据服务发布系统可以提供给其他应用程序或用户进行访问和使用,并提供数据管理、数据服务发布、监控与运维等功能。
如图1所示,该系统包括服务网关、服务实例(服务实例1......服务实例-N)和服务管理模块。其中,服务网关用于接收客户端的http请求,根据负载均衡策略将请求路由到后端一个或多个服务实例上。服务网关通过对外暴露路由,可以提供集中式的请求处理、路由转发、负载均衡、安全认证、限流、熔断等功能。
服务实例用于根据http请求参数从多个不同的数据源中获取请求数据,数据源包括关系型数据库、非关系型数据库(NoSQL)、文件系统、缓存系统、web服务接口、第三方接口、消息队列。
其中,服务脚本运行在JVM(Java虚拟机)上被编译为独立的服务实例。通过服务网关可以响应特定的请求,当触发特定的请求时,服务实例可以从多个不同的数据源中获取数据,并根据实际需求弹性伸缩计算资源,以适应不断变化的流量和负载。
服务管理模块用于在云原生架构提供的Java虚拟机上在线编写、调试、预编译服务脚本得到对应的服务实例。
通过本发明提供的基于云原生环境的数据服务发布系统,服务发布者只需关心服务本身的实现逻辑,无需关心运行环境。系统支持使用Java、groovy语言进行开发,且内部预先实现了访问多种不同类型数据源的函数,可以在脚本中直接使用进行读取数据的操作。
图2示出了根据本发明一个实施例的计算设备100的结构框图。如图2所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理器,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。
在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
在计算设备100启动运行时,处理器104会从存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。在根据本发明的计算设备100中,应用122包括用于执行本发明的基于云原生架构的数据服务发布方法300的指令。
图3示出了根据本发明一个实施例的基于云原生架构的数据服务发布方法300的流程示意图。如图3所示,该方法300始于步骤S310,在云原生架构提供的Java虚拟机上在线编写并调试服务脚本,服务脚本中包含用于访问不同数据源的内置函数。
由于Java平台的JSR223规范定义了一种通用的Java脚本语言集成API文档,通过这个API文档,应用程序可以使用任何支持JSR223规范的脚本语言编写脚本,并在运行时将这些脚本与Java代码集成。因此,可以使用groovy语言和Java语言混合编写服务脚本。
其中,groovy语言是一种基于Java平台的开源动态编程语言,可以直接运行在Java虚拟机上,不用进行编译可以与Java无缝互操作。例如,可以直接使用Java类库和框架并在groovy中调用Java代码。反之亦然,Java代码也可以直接使用groovy类库和脚本。
系统内部预先实现了访问多种不同类型数据源的函数,可以在groovy脚本中直接使用,进行读取数据的操作。
在本发明的一个实施例中,可以在服务管理模块提供的Groovy Web Console、JDoodle、Repl.it、Gist等在线web编辑器和调试器上,使用groovy和Java语言混合编写脚本,以便用groovy脚本扩展Java应用程序的功能,同时利用groovy的优势使代码变得更加简洁易读、易维护。
例如,使用Java和Groovy混合编写的脚本代码如下:
// Groovy代码定义一个类
class MyGroovyClass {
def myMethod() {
println "Hello, Groovy!"
}
}
// Java代码使用这个类
public class MyJavaClass {
public static void main(String[] args) {
// 创建Groovy类实例
MyGroovyClass groovyObj = new MyGroovyClass()
// 调用Groovy方法
groovyObj.myMethod()
// 使用Java的库函数
String str = "Hello, Java!"
System.out.println(str)
}
}
在这个示例中,使用Groovy定义了一个类MyGroovyClass和一个方法myMethod(),并在Java代码中创建了这个类的实例,调用了这个方法。同时,Java代码还使用了Java的库函数System.out.println()打印了一句话。
这种混合编写方式可以充分利用Java和Groovy的特点,提高代码的可读性和可维护性。通过混合编写,可以以较低的代价使用Groovy的特性,同时不会失去Java的优势。
然后,解析服务脚本,检查脚本中是否有语法错误。例如,JavaScript可以通过eval()函数或浏览器的开发者工具来解析代码并检查是否存在语法错误。在浏览器中,可以使用window.onerror事件来捕获语法错误。需要说明的是,解析和检查脚本语法错误只能保证代码的合法性,并不能保证代码的逻辑正确性,需进一步进行测试和验证。
随后,向脚本中注入访问多个不同数据源的内置函数和http请求的相关对象。
将需要注入的函数定义为服务内置函数,将脚本与服务环境绑定以便脚本可以访问到服务内置的函数。内置函数主要包括find函数、log函数、assert函数、util函数、httpclient函数。
其中,find函数为执行SQL语句或其他数据源查询特定元素的函数。log函数为记录程序运行过程中的日志函数。assert函数为检查程序中条件是否为真的断言函数。util函数为工具类函数,例如日期处理、字符串操作、文件读写等。httpclient函数为用于发起http请求和处理http响应的函数。
还可以提取http请求的相关对象,如请求对象、响应对象、请求头、请求体等,编写内置函数将相关对象注入脚本中。通过将HTTP请求的相关对象作为内置的系统函数注入到脚本中,可以使脚本易于维护和扩展。在脚本中引用内置函数即可访问不同的数据源和查询参数。
随后,根据http请求的查询参数对脚本进行部分替换和裁剪,生成用于执行的脚本。
具体地,从http请求对象中获取查询参数的值;根据查询参数的值对脚本中预留的参数进行替换;根据查询参数的值判断是否需要裁剪部分脚本;将处理后的脚本作为HTTP响应的一部分,返回用于执行的脚本。
例如,可以使用request对象获取用于测试的HTTP请求的方法、URI、查询字符串和远程地址。在主程序中,创建一个GroovyHttpServletRequest对象,并将其作为参数传递给myFunction函数。GroovyHttpServletRequest是一个Groovy封装的HttpServletRequest对象,它提供了与HTTP请求相关的信息和方法。
最后,将用于执行的脚本提交到Java虚拟机的脚本引擎中执行,返回json格式的查询结果。在脚本调试过程中,可以通过设置断点,暂停脚本的执行,在此处检查变量的值和执行状态,以便分析问题所在。
完成脚本调试后执行步骤S320,将调试后的服务脚本持久化保存,并将服务脚本编译成服务实例。
可以将调试后的脚本持久化存储在数据库或文件系统中,这样可以使脚本易于管理、分享和重用。例如,将脚本以文本形式存储在关系型或非关系型数据库中,在应用程序中,可以通过SQL查询语句或ORM(Object Relational Mapping)框架来检索和更新脚本。还可以将脚本存储在本地文件系统或云存储系统中,在应用程序中通过文件路径或URL(Uniform Resource Locator,统一资源定位器)来访问脚本。
随后,将脚本推送给所有运行中的服务实例的Java虚拟机;在Java虚拟机上将脚本编译成 javax.script.CompiledScript 对象实例。这样可以提高脚本执行效率,并在后续执行中重复使用已编译的代码。
由于JVM本身只能执行编译后的字节码,用Groovy编写的服务代码在执行时也会经历解析、编译的过程,这个过程会有一定的耗时和资源占用。当服务脚本已经定型后,编译成为一个常驻内存的对象,可以有效的提升服务性能。
最后执行步骤S330,在服务实例的http容器中注册对应的服务路由,在服务网关中注册对外服务路由。
服务脚本完成后,需要将服务对外暴露,以便能够被外部用户或系统访问。此时需要两项路由映射操作。
一方面,可以在服务实例的HTTP容器中进行服务路由的注册。例如,在应用程序中定义不同的路由和响应该路由的服务实例;将路由映射到http容器中,以便当接收到该路由的请求时调用对应的服务实例进行处理。
另一方面,在服务网关的配置文件中定义对外暴露的路由和相应的后端服务地址,使服务网关将外部请求重定向到对应的服务实例;基于云原生架构将配置好的服务实例和服务网关部署到服务器中。
在云原生环境中,为了达到服务的高可用、高并发的目的,所有的请求流量均会先由服务网关接收处理,根据设定的服务负载均衡策略,然后转发到上游的服务实例中完成请求。
图4示出了根据本发明一个实施例的服务请求路由示意图。如图4所示,服务请求会先由服务网关接收处理,然后根据设定的负载均衡策略(如轮询、最少连接、响应时间等策略)将服务请求转发到上游的服务实例中完成请求。
根据本发明提供的基于云原生架构的数据服务发布方法和系统,通过在云原生架构提供的Java虚拟机上,使用groovy语言和Java语言混合编写服务脚本,可以基于服务脚本中的内置函数直接访问不同数据源,能够大大降低服务开发的成本和难度;
通过即刻编写即刻调试可以快速迭代开发服务;在服务应对高并发的请求时,通过云原生技术的负载均衡、熔断、智能弹性伸缩等机制,可以保障服务运行的稳定性和高可用性。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

Claims (10)

1.一种基于云原生架构的数据服务发布方法,其特征在于,包括:
在云原生架构提供的Java虚拟机上在线编写并调试服务脚本,所述服务脚本中包含用于访问不同数据源的内置函数;
将调试后的服务脚本持久化保存,并将服务脚本编译成服务实例;
在服务实例的http容器中注册对应的服务路由,在服务网关中注册对外服务路由。
2.根据权利要求1所述的数据服务发布方法,其特征在于,所述在云原生架构提供的Java虚拟机上在线编写并调试服务脚本的步骤包括:
使用groovy语言和Java语言混合编写服务脚本;
解析所述服务脚本,检查脚本中是否有语法错误;
向脚本中注入访问多个不同数据源的内置函数和http请求的相关对象;
根据http请求的查询参数对脚本进行部分替换和裁剪,生成用于执行的脚本;
将所述用于执行的脚本提交到Java虚拟机的脚本引擎中执行,返回json格式的查询结果。
3.根据权利要求2所述的数据服务发布方法,其特征在于,所述向脚本中注入访问多个不同数据源的内置函数和http请求的相关对象的步骤包括:
提取http请求的相关对象,所述相关对象包括请求对象、响应对象、请求头、请求体;
编写内置函数将所述相关对象注入脚本中;
在脚本中引用内置函数来访问不同的数据源和查询参数。
4.根据权利要求3所述的数据服务发布方法,其特征在于,所述内置函数包括find函数、log函数、assert函数、util函数、httpclient函数,
所述find函数为执行SQL语句或其他数据源查询特定元素的函数;所述log函数为记录程序运行过程中的日志函数;所述assert函数为检查程序中条件是否为真的断言函数;所述util函数为工具类函数,所述httpclient函数为用于发起http请求和处理http响应的函数。
5.根据权利要求3所述的数据服务发布方法,其特征在于,所述根据http请求的查询参数对脚本进行部分替换和裁剪,生成用于执行的脚本的步骤包括:
从http请求对象中获取查询参数的值;
根据所述查询参数的值对脚本中预留的参数进行替换;
根据所述查询参数的值判断是否需要裁剪部分脚本;
将处理后的脚本作为HTTP响应的一部分,返回用于执行的脚本。
6.根据权利要求1所述的数据服务发布方法,其特征在于,所述将调试后的服务脚本持久化保存,并将服务脚本编译成服务实例的步骤包括:
将调试后的脚本持久化保存在数据库或文件系统中;
将数据库或文件系统中的脚本推送给所有运行中的服务实例的Java虚拟机;
在Java虚拟机上将脚本编译成 javax.script.CompiledScript 对象实例。
7.根据权利要求1所述的数据服务发布方法,其特征在于,所述在服务实例的http容器中注册对应的服务路由,在服务网关中注册对外服务路由的步骤包括:
在应用程序中定义不同的路由和响应该路由的服务实例;
将路由映射到http容器中,以便当接收到该路由的请求时调用对应的服务实例进行处理;
在服务网关的配置文件中定义对外暴露的路由和相应的后端服务地址,使服务网关将外部请求重定向到对应的服务实例;
基于云原生架构将配置好的服务实例和服务网关部署到服务器中。
8.一种基于云原生架构的数据服务分发系统,其特征在于,包括:服务网关、服务实例和服务管理模块,
所述服务网关用于接收客户端的http请求,根据负载均衡策略将请求路由到后端一个或多个服务实例上;
所述服务实例用于根据http请求参数从多个不同的数据源中获取请求数据,所述数据源包括关系型数据库、非关系型数据库、文件系统、缓存系统、web服务接口、第三方接口、消息队列;
所述服务管理模块用于在云原生架构提供的Java虚拟机上在线编写、调试、预编译服务脚本得到对应的服务实例。
9.一种计算设备,包括:
至少一个处理器;和存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述的基于云原生架构的数据服务发布方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7任意一项中所述的基于云原生架构的数据服务发布方法。
CN202311654058.3A 2023-12-05 2023-12-05 一种基于云原生架构的数据服务发布方法和系统 Active CN117354114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311654058.3A CN117354114B (zh) 2023-12-05 2023-12-05 一种基于云原生架构的数据服务发布方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311654058.3A CN117354114B (zh) 2023-12-05 2023-12-05 一种基于云原生架构的数据服务发布方法和系统

Publications (2)

Publication Number Publication Date
CN117354114A true CN117354114A (zh) 2024-01-05
CN117354114B CN117354114B (zh) 2024-03-08

Family

ID=89359878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311654058.3A Active CN117354114B (zh) 2023-12-05 2023-12-05 一种基于云原生架构的数据服务发布方法和系统

Country Status (1)

Country Link
CN (1) CN117354114B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784360A (zh) * 2019-11-01 2020-02-11 浪潮云信息技术有限公司 一种实现Kong声明式配置热更新的方法及系统
CN115309566A (zh) * 2022-08-09 2022-11-08 医利捷(上海)信息科技有限公司 一种服务接口的动态管理方法及系统
US20230107891A1 (en) * 2021-10-04 2023-04-06 Juniper Networks, Inc. User interface for cloud native software-defined network architectures
CN116610414A (zh) * 2023-05-22 2023-08-18 昭通亮风台信息科技有限公司 一种基于微服务集群环境java虚拟机的数据监控方法
CN116860382A (zh) * 2022-03-28 2023-10-10 中移动信息技术有限公司 基于容器的微服务集群实现的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110784360A (zh) * 2019-11-01 2020-02-11 浪潮云信息技术有限公司 一种实现Kong声明式配置热更新的方法及系统
US20230107891A1 (en) * 2021-10-04 2023-04-06 Juniper Networks, Inc. User interface for cloud native software-defined network architectures
CN116860382A (zh) * 2022-03-28 2023-10-10 中移动信息技术有限公司 基于容器的微服务集群实现的方法及装置
CN115309566A (zh) * 2022-08-09 2022-11-08 医利捷(上海)信息科技有限公司 一种服务接口的动态管理方法及系统
CN116610414A (zh) * 2023-05-22 2023-08-18 昭通亮风台信息科技有限公司 一种基于微服务集群环境java虚拟机的数据监控方法

Also Published As

Publication number Publication date
CN117354114B (zh) 2024-03-08

Similar Documents

Publication Publication Date Title
WO2021098148A1 (zh) 一种软件编译方法、装置及电子设备和存储介质
US8997070B2 (en) Extension mechanism for scripting language compiler
US9703678B2 (en) Debugging pipeline for debugging code
Taivalsaari et al. Web browser as an application platform
US9891896B2 (en) Program code library searching and selection in a networked computing environment
CN108984174B (zh) 跨平台的应用创建方法、装置、服务器和存储介质
US8572554B2 (en) Method and system for integrating Java and JavaScript technologies
US11314503B2 (en) Software development documentation using machine learning
US20140297627A1 (en) Java application server and method for processing web business
US20230036980A1 (en) Micro-frontend system, sub-application loading method, electronic device, computer program product, and computer-readable storage medium
US20170242665A1 (en) Generation of hybrid enterprise mobile applications in cloud environment
Fenoy et al. ZOO-Project: the open WPS platform
CN110955409B (zh) 在云平台上创建资源的方法和装置
Long et al. Consistent code generation from UML models
CN111414350A (zh) 一种服务生成方法及装置
CN112328219A (zh) 业务访问处理方法、装置、系统和计算机设备
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN115599359A (zh) 一种代码生成方法、装置、设备及介质
CN108595656B (zh) 一种数据的处理方法及系统
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
US10606569B2 (en) Declarative configuration elements
CN117354114B (zh) 一种基于云原生架构的数据服务发布方法和系统
CN116346609A (zh) 基于go语言实现路由配置和参数绑定的方法
US20110246965A1 (en) Correcting document generation for policy compliance
US11740995B2 (en) Source quality check service

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240206

Address after: Room 105, 1st Floor, Building 5, No. 8 Dongbei Wangxi Road, Haidian District, Beijing, 100193

Applicant after: Yizhirui Information Technology Co.,Ltd.

Country or region after: China

Address before: 100089, Room 2-26, 2nd Floor, Building 10, East District, No.10 Northwest Wangdong Road, Haidian District, Beijing

Applicant before: BEIJING JIETAI TIANYU INFORMATION TECHNOLOGY Co.,Ltd.

Country or region before: China

GR01 Patent grant
GR01 Patent grant