CN117971799A - 一种数据开发平台和数据开发方法 - Google Patents

一种数据开发平台和数据开发方法 Download PDF

Info

Publication number
CN117971799A
CN117971799A CN202311716998.0A CN202311716998A CN117971799A CN 117971799 A CN117971799 A CN 117971799A CN 202311716998 A CN202311716998 A CN 202311716998A CN 117971799 A CN117971799 A CN 117971799A
Authority
CN
China
Prior art keywords
service
data
micro
development
script
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.)
Pending
Application number
CN202311716998.0A
Other languages
English (en)
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.)
Beijing Yusys Technologies Group Co ltd
Original Assignee
Beijing Yusys Technologies Group 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 Yusys Technologies Group Co ltd filed Critical Beijing Yusys Technologies Group Co ltd
Priority to CN202311716998.0A priority Critical patent/CN117971799A/zh
Publication of CN117971799A publication Critical patent/CN117971799A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据开发平台和数据开发方法,该平台包括:注册中心,用于统一管理微服务集群,使得不同微服务之间通过服务名动态调用;负载均衡设备,用于分发和管理流量;Web服务,用于接收来自用户的请求,将请求转发给微服务网关;微服务网关,用于过滤所有的数据开发平台的前端和后端的服务调用,并转发请求到鉴权服务进行统一的鉴权认证;鉴权服务,用于对请求进行统一的鉴权认证;微服务集群,按照业务功能拆分为多个不同的独立的微服务;文件服务器,用于文件存放或者文件取用;分布式缓存,用于数据缓存存储或者访问;配置数据库集群,用于数据库读写。本发明基于统一的开发界面的开发方式进行开发,大大降低了学习门槛。

Description

一种数据开发平台和数据开发方法
技术领域
本发明涉及属于软件技术领域(数仓数据开发相关),主要应用于数据中台数据仓库建设,用于辅助数据加工脚本的开发及管理,具体涉及一种数据开发平台和数据开发方法。
背景技术
现有技术中的数据开发面向不同类型的数据库,需要使用不同的客户端工具,例如面向oracle使用plsql,面向cdh使用hue,面向transwarp使用waterdrop等。并且现有技术中的开发管理依赖于本地或者在线的word、excel、txt等格式的文档记录数据开发相关的计划、分工、脚本、版本等开发成果及管理信息。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
开发人员学习成本高,需要针对不同数据库学习不同开发工具的使用。且开发方式单一,只能通过直接编写sql的形式进行开发,对于开发人员的技术门槛要求较高,开发效率低下。
发明内容
有鉴于此,本发明实施例的目的在于提供一种数据开发平台和数据开发方法,以解决现有技术中的问题。
第一方面,本发明实施例提供了一种数据开发平台,所述数据开发平台包括:
注册中心,用于统一管理微服务集群,使得不同微服务之间通过服务名动态调用;
负载均衡设备,用于分发和管理流量;
Web服务,用于接收来自用户的请求,将所述请求转发给微服务网关;
微服务网关,用于过滤所有的数据开发平台的前端和后端的微服务调用,并转发请求到鉴权服务进行统一的鉴权认证;
鉴权服务,用于对所述请求进行统一的鉴权认证;
微服务集群,其按照业务功能拆分为多个不同的独立运行的微服务,用于提供统一的开发管理流程、安全的用户认证与授权、统一的数据源管理、脚本开发管理,以及脚本开发成果展示;
文件服务器,用于存放开发过程生成的脚本文件或者临时文件;
分布式缓存,用于缓存用户登录会话信息和/或菜单权限信息;
配置数据库集群,用于存放***配置和/或开发配置数据。
在一些可能的实施方式中,所述微服务网关,具体包括:
Rest协议接入模块,用于支持RESTful API的接入,处理和转发符合RESTful设计风格的API请求;
合作方权限过滤模块,用于根据合作方的身份和权限对API请求进行过滤和控制,确保只有经过授权的合作方能够访问相应的API;
服务访问权限过滤模块,用于对内部微服务的访问进行权限控制,确保只有经过授权的微服务能够相互通信;
流量控制模块,用于对API请求的流量进行控制和管理;
非Rest协议接入模块,用于支持非RESTful协议的接入;
协议适配模块,用于将不同的协议进行转换和适配,使得客户端和服务端使用不同的通信协议进行通信;
报文映射模块,用于对不同格式的报文进行映射和转换,使得客户端和服务端使用不同的数据格式进行通信。
在一些可能的实施方式中,所述微服务集群包括:
管理微服务,用于提供统一的开发管理流程,其包括项目管理、需求管理、或者任务拆分流转;
基础微服务,用于提供用户认证、授权和日志记录的基础功能,实现通用业务功能的复用;
数据源微服务,用于提供统一的数据源管理功能,其包括多种类型数据源的配置信息维护、连通性测试和元数据查询;所述多种类型数据源包括:关系型数据源、大数据数据源、非关系型数据源中的任意多个;
映射微服务,用于提供ETL脚本开发配置的相关支持,脚本版本管理,以及脚本血缘解析能力;
展示微服务,用于提供统一的开发脚本成果展示能力,其包括全链路血缘展示和/或开发成果目录。
在一些可能的实施方式中,所述展示微服务包括:
全链路血缘展示模块,配置有用于解析单个或多个开发脚本以确定数据流向的血缘分析器,该血缘分析器能够识别并展示从源数据表至目标数据表的所有上游和下游脚本加工血缘链路图;
开发成果目录模块,配置有用于创建和维护层级目录的目录管理器,所述目录管理器允许将开发脚本与目录关联,并基于目录检索查看相关的开发脚本;
其中,所述全链路血缘展示模块进一步包括用于将解析得到的血缘信息以图形化界面展示的展示器,所述展示器能够展示包含多级上游和下游关系的完整血缘链路图。
其中,所述目录管理器允许用户通过用户界面添加、编辑或删除目录项,并将开发脚本与相应的目录项关联。
其中,所述展示微服务还可以包括权限控制模块,用于控制不同用户对于全链路血缘展示模块和开发成果目录模块的访问权限。
在一些可能的实施方式中,微服务集群中的相应微服务具有如下功能:
当业务场景为高并发读取场景时,所述基础微服务使用分布式缓存来存储业务数据;
当业务场景为高写入频率场景时,所述数据源微服务使用配置数据库集群来存储业务数据;
当业务场景为大数据量存储场景时,所述数据源微服务使用文件服务器来存储业务数据;
当业务场景为高可靠性和数据持久化场景时,所述数据源微服务使用配置数据库集群来存储业务数据;
当业务场景为快速读取和计算场景时,所述基础微服务使用分布式缓存来存储业务数据。
在一些可能的实施方式中,所述注册中心包括健康检查模块,所述健康检查模块包括下子模块:
心跳检测子模块,用于定期验证微服务节点的活跃状态并确保其响应性;若微服务节点未按时响应,则从服务列表中排除;
状态监测子模块,用于通过健康检查请求评估微服务节点的健康状态;若微服务节点报告不健康状态,则标记为不可用;
负载评估子模块,用于监控微服务节点的资源使用情况并判断其健康状况;当微服务节点资源负载超出阈值,将所述微服务节点视为不可用。
在一些可能的实施方式中,所述注册中心包括:
接收模块,用于在微服务启动时接收并存储微服务的注册信息,所述注册信息包括服务名和网络地址;接收调用方微服务发送的携带服务名的请求;
微服务调用模块,用于解析所述服务名,并将请求准确地路由至所述服务名对应的目标微服务节点,以便完成微服务间的动态通信。
在一些可能的实施方式中,所述映射微服务包括脚本血缘解析模块,用于自动解析数据加工脚本中的血缘关系并将解析结果存储到配置数据库集群中;
所述脚本血缘解析模块包括:
IDE集成子模块,用于在集成开发环境中,在开发者保存或提交脚本时自动触发脚本血缘解析;
配置化开发子模块,用于在配置化开发流程的最后一步确认生成脚本时进行脚本血缘解析;
批量导入子模块,用于在批量导入脚本并生成最终脚本时自动执行脚本血缘解析。
在一些可能的实施方式中,所述映射微服务包括智能推荐模块,用于基于历史脚本的血缘关系数据,为开发人员提供表、字段或者关系的使用热度分析和推荐;
所述智能推荐模块包括:
热度分析子模块,用于统计和分析历史脚本中表、字段或者关系的使用频率,并计算其热度;以及,
推荐生成子模块,用于根据热度分析结果,向开发人员推荐常用的表、字段或者关系。
在一些可能的实施方式中,所述映射微服务包括依赖关系存储模块,用于将脚本血缘解析模块解析出的依赖关系存储到配置数据库集群中;
所述依赖关系存储模块包括:
数据结构构建子模块,用于根据解析结果构建血缘关系的数据结构,其包括schema级、表级、字段级和join级;
数据存储子模块,用于将构建好的血缘关系数据结构存储到配置数据库集群。
在一些可能的实施方式中,所述的数据开发平台包括如下中的任意一项或多项:
所述数据开发平台是基于B/S模式的统一浏览器Web开发平台,所述平台提供统一的开发和调试页面,支持多种数据库类型的开发和调试操作;
所述平台支持多种开发方式,包括IDE脚本开发方式、批量导入开发方式和配置化开发方式;所述批量导入开发方式允许开发人员以批量方式导入数据至本平台中,并自动解析生成相关的血缘关系;所述配置化开发方式允许开发人员通过配置文件或可视化界面进行脚本快速开发配置,并自动生成相关血缘关系;
所述平台使用JDBC协议作为应用程序与数据库之间的交互方式;
所述平台通过自定义类加载器来动态加载不同数据库驱动的JAR包,支持在运行时根据需要动态加载相应的数据库驱动程序。
另一方面,还提供一种数据开发方法,应用于如上所述的数据开发平台,所述数据开发方法包括以下步骤:
a)负载均衡设备接收用户发送的数据开发请求;
b)负载均衡设备根据预设的负载均衡规则将数据开发请求分发至Web服务;
c)Web服务接收到分发的数据开发请求后,将数据开发请求转发至微服务网关集群;
d)微服务网关集群对前端和后端的微服务调用进行过滤,并将数据开发请求转发至鉴权服务进行统一的鉴权认证;
e)鉴权服务对数据开发请求进行身份验证和权限授权,验证通过后,将数据开发请求及验证结果返回至微服务网关集群;
f)微服务网关集群通过注册中心的接口获取到服务名对应的具体的微服务ip端口,由微服务网关集群直接转发到该服务名对应的微服务实例;
g)微服务集群中的相应微服务实例接收到数据开发请求后,执行数据开发相关的业务逻辑处理,其包括:数据源管理、脚本开发管理、用户认证与授权、提供开发管理流程中的任意多个;
h)微服务实例处理完成后,将处理结果存储至配置数据库集群,并将生成的脚本文件或临时文件存放至文件服务器;
i)微服务实例将处理结果通过微服务网关集群返回给Web服务;
j)Web服务将处理结果返回给用户,完成一次数据开发流程。
上述技术方案具有如下有益效果:
本发明实施例提供一站式统一开发界面,应用开发者只需面向统一的开发平台(直面研发平台)即可实现多数据库的开发、统一作业调度、自动投产工作。
本发明实施例提供了一个功能丰富的Web开发平台,通过统一的界面和多种开发方式,提供了便捷的数据库开发和调试环境。并且通过使用JDBC协议和自定义类加载器,实现了与不同数据库的交互和动态加载驱动的能力。这样的平台可以提高开发效率,简化开发流程,并支持灵活的数据库选择和配置。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一站式统一开发界面的结构示意图;
图2是本发明实施例的数据开发平台前端、后端和配置库的结构示意图;
图3是本发明实施例的数据开发平台的整体技术架构图;
图4是本发明实施例的计算机设备的功能框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的一个目的在于,解决开发人员面向不同数据库时的开发门槛高、开发效率低的问题;另一个目的在于,解决难以分析脚本、表之间依赖关系,难以进行影响分析的问题。
以下进行术语定义:
B/S模式:B/S模式(Browser/Server浏览器/服务器模式)是目前应用***的发展方向。在这种结构下,通过Web浏览器来进入工作界面,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现。这样使得客户端电脑负荷大大简化(因此被称为瘦客户端),减轻了***维护、升级的支出成本。
JDBC协议:JDBC(Java DataBase Connectivity,Java数据库连接)是Java操作各种数据库而定义的一种规范。为了面向接口编程,JDBC定义了:java.sql.Driver(表示数据厂商应该实现的对调用方透明的数据源操作方式),java.sql.Connection(表示和数据库的连接),java.sql.Statement(表示SQL的执行),java.sql.ResultSet(表示返回的结果)以及java.sql.PreparedStatement(表示SQL的预编译执行)等关键协议(rt.jar中java.sql包)。
JAVA类加载机制:Java的类加载机制是指在Java程序运行时,将类文件加载到内存中的一系列步骤。Java的类加载机制遵循着“按需加载”的原则,也就是说,只有在需要用到某个类的时候,才会将这个类的相关信息加载到内存中。这种“按需加载”的设计使得Java程序具备了很好的灵活性和效率。Java的类加载器主要分为三类:启动类加载器、扩展类加载器和应用程序类加载器。不同的类加载器负责加载不同的类,在Java的类加载机制中,具有不同级别的权限和不同的类搜索路径。下面详细介绍Java的类加载机制。Java的类加载机制采用的是双亲委派模型,这是一种经典的类加载机制,也是Java的类加载机制得以广泛使用的重要原因之一。双亲委派是指:在类加载的过程中,一个类加载器在加载某个类时,会先委托给它的父类加载器进行加载,如果父类加载器无法加载成功,再由自己来加载该类。这样做的好处在于,保证Java虚拟机安全、稳定地运行,避免出现恶意代码污染***。通过继承java.lang.ClassLoader可以自定义类加载器,可以自定义类加载器以实现从指定目录加载、动态加载jar包等特殊需求。
feign调用:feign是声明式的服务调用客户端,它让微服务之间的调用变得更简单,类似控制器调用服务。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。
SDK包:SDK(Software Development Kit,软件开发工具包)是辅助开发某一类软件的相关文档、范例和工具的集合。本实施例中指针对sql血缘解析开发封装的java代码jar包。
代码调用:指java代码内部、同一个jvm虚拟机中的不同类实例对象的不同方法之间的相互调用。
from、join、on、select、where等:其属于数据库sql查询语言中的关键字,from用于指定查询数据的来源表,join用于指定关联表,on用于指定表间的关联关系,select用于指定查询语句要返回的字段,WHERE用于指定查询的筛选条件,过滤满足特定条件的数据行。具体地,FROM关键字用于指定查询的数据来源表。它指定了要从哪个表中获取数据进行查询操作。在FROM子句中可以指定一个或多个表,并可以使用表别名进行标识。JOIN关键字用于在查询中将多个表进行关联,它用于根据指定的条件将两个或多个表中的数据进行连接,JOIN可以根据不同的连接类型(如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)来指定不同的关联方式。ON关键字用于指定表之间的关联条件。它在JOIN子句中使用,用于指定连接两个表的条件。ON子句中的条件通常是基于表之间的字段进行比较,以确定两个表之间的关联关系。SELECT关键字用于指定查询语句要返回的字段。它用于选择要从表中检索的特定列或计算的表达式。通过SELECT子句,可以指定要返回的字段列表,也可以使用聚合函数对数据进行计算和汇总。WHERE关键字用于指定查询的筛选条件。它用于在查询中过滤满足特定条件的数据行。通过WHERE子句,可以使用比较运算符(如等于、大于、小于等)和逻辑运算符(如AND、OR、NOT)来构建查询条件。
配置库:数据库在作为应用程序的数据持久化存储介质时的特称,这里指本发明对应的数据开发平台使用的用于存储平台配置信息的数据库。
MySQL:一种流行的开源关系型数据库管理***,常用于Web应用程序开发。
Oracle:由Oracle公司开发的关系型数据库管理***,被广泛应用于企业级应用和数据管理。
GaussDB:由华为公司开发的关系型数据库管理***,专注于高性能和大数据处理。
Hive:Apache Hadoop生态***中的数据仓库基础设施,用于存储、查询和分析大规模数据集。
TDH:是"Teradata Database for Hadoop"的缩写,是由Teradata公司开发的一种用于Hadoop平台的数据库管理***,TDH通常用于处理大数据分析和数据仓库等场景。
PostgreSQL:一种开源关系型数据库管理***,具有高度可扩展性和丰富的功能。
TBDS:阿里云提供的大数据计算服务,支持Hadoop、Spark等大数据框架。
Hadoop HDFS:Hadoop分布式文件***(Hadoop Distributed File System,HDFS)是Apache Hadoop生态***的一部分,用于存储大规模数据集,并提供高吞吐量的数据访问。HDFS被设计为能够运行在廉价的硬件上,并且具有容错性和高可靠性。
GlusterFS:GlusterFS是一个开源的分布式文件***,它可以将多台服务器上的存储资源整合成一个统一的存储池,并提供文件***接口供客户端访问。GlusterFS具有良好的可扩展性和容错性,适用于大规模数据存储和访问场景。
ETL:是“Extrac,Transform,Load”的缩写,是数据仓库领域中用于描述将数据从原始数据源提取(Extract)、转换(Transform)成适合分析的格式,然后加载(Load)到目标数据仓库或数据湖等***的过程。这个过程是数据准备和数据集成的关键步骤,通常涉及数据清洗、去重、标准化、聚合等操作,以确保数据的质量和一致性,为后续的数据分析和业务决策提供支持。
本发明实施例包括统一开发工具和自动脚本血缘依赖分析,下面进行详细描述。
一、统一开发工具
图1是本发明实施例的一站式统一开发界面的结构示意图。如图1所示,相对于传统的开发人员针对多个数据库进行开发时需要直面多客户端、直面基础组件、自行作业调度、手动投产的开发方式,本发明实施例提供一站式统一开发界面,应用开发者只需面向统一的开发平台(直面研发平台)即可实现多数据库的开发、统一作业调度、自动投产工作。
本发明实施例提供基于B/S模式的统一浏览器Web开发平台,具备以下特点和功能:
1.统一的开发、调试页面:该平台提供了统一的开发和调试页面,可以针对不同的数据库类型(例如Mysql、Oracle、GaussDB、Hive、TDH、Postgresql、TBDS等)进行开发和调试操作。开发人员可以在同一个开发界面上进行数据库相关的操作,无需切换不同的工具或界面。
2.多种开发方式:除了传统的IDE(Integrated Development Environment,集成开发环境)脚本开发模式,该平台还提供了批量导入和配置化的开发方式。开发人员可以选择适合自己的开发方式,提高开发效率和灵活性。
在该平台中,开发人员可以将数据以批量的方式导入到平台中,然后通过配置和处理这些导入的数据来实现相应的功能。批量导入的开发方式适用于需要大量数据初始化或者批量处理的场景。通过批量导入,开发人员可以快速导入大量数据,并进行相应的处理和功能实现,提高开发效率和灵活性。同时,批量导入也可以用于测试和演示等目的,方便开发人员进行数据的模拟和验证。
配置化的开发方式是指通过配置文件或可视化界面进行开发的方式,而不是通过编写代码来实现功能。在该平台中,配置化的开发方式可以用于快速搭建和配置***的各种功能和组件,而无需编写大量的代码。配置化的开发方式可以提高开发效率,降低开发成本,并且使***更易于维护和扩展。同时,配置化的开发方式也使得非技术人员能够参与***的配置和定制,促进了业务和技术的协作。具体来说,配置化的开发方式可以包括以下两个方面:(1)配置文件:开发人员可以通过编写配置文件来定义***的各种配置项和参数。这些配置文件可以包含数据库连接信息、业务规则、权限设置、路由配置等。通过修改配置文件的内容,可以调整***的行为和功能,而无需修改源代码。(2)可视化界面:平台提供了可视化的界面,通过界面上的操作和配置,可以实现***的各种功能。例如,可以通过拖拽组件、设置属性、定义流程等方式来配置***的界面、业务逻辑和工作流程。这样可以快速搭建和定制***,减少开发人员的编码工作量。
3.基于JDBC协议的交互方式:平台使用JDBC协议作为应用程序与数据库之间的交互方式。JDBC是Java语言访问数据库的标准接口,通过使用JDBC,开发人员可以统一管理和操作不同类型的数据库。
4.自定义类加载器实现动态加载:平台基于Java的类加载机制,实现了自定义类加载器来动态加载不同数据库驱动的JAR包。这样可以灵活地支持不同类型的数据库,并在运行时动态加载所需的驱动程序。
因此,本发明实施例提供了一个功能丰富的Web开发平台,通过统一的界面和多种开发方式,提供了便捷的数据库开发和调试环境。并且通过使用JDBC协议和自定义类加载器,实现了与不同数据库的交互和动态加载驱动的能力。这样的平台可以提高开发效率,简化开发流程,并支持灵活的数据库选择和配置。
二、自动脚本血缘依赖分析
图2是本发明实施例的数据开发平台前端、后端和配置库的结构示意图。如图2所示,在数据加工脚本开发的过程中,本发明实施例基于自研的血缘解析SDK包自动解析脚本的血缘关系并存储到配置库,自动解析主要发生在以下三个场景:(1)在IDE开发模式下点击保存或者提交操作时。(2)配置化开发流程的最后一步点击确定生成最终的脚本时。(3)批量导入开发方式下,导入完成并最终生成脚本时。
血缘解析内容包含schema级、表级、字段级、join级等各个维度的血缘关系,全方位解析并记录脚本涉及的依赖关系。并且在开发的过程中反过来基于历史脚本血缘中涉及的表、字段、关系使用热度进行智能推荐,引导辅助开发人员进行脚本开发。血缘解析是指针对数据库sql语句进行分析、解释并生成相关的表、字段依赖关系的过程。血缘关系是指基于数据库sql语句解析出来的表、字段之间的依赖及关联关系。
在一些实施例中,血缘解析SDK包通过封装了血缘解析的算法和逻辑,可以在运行时动态解析脚本的血缘关系。具体实现方式包括以下步骤:SDK包提供接口或方法,供开发人员在脚本开发过程中调用;开发人员将脚本传递给SDK包进行解析,SDK包解析脚本中的SQL语句,分析其中的表、字段、关联关系等信息;SDK包使用词法分析、语法分析等技术,解析脚本中的SQL语句,并构建血缘关系的数据结构;解析完成后,SDK包将血缘关系存储到配置库或其他存储介质中,以便后续的查询和分析。
在一些实施例中,全方位解析并记录脚本涉及的依赖关系需要考虑多个维度的血缘关系,包括schema级、表级、字段级、join级等。具体实现方式包括以下步骤:SDK包在解析脚本时,分析脚本中的SQL语句,识别出涉及的表、字段、关联关系等信息;SDK包根据解析结果,构建血缘关系的数据结构,包括表级的依赖关系、字段级的依赖关系、join关系等;SDK包使用算法和数据结构来组织和存储血缘关系,以支持全方位的解析和记录。
在一些实施例中,基于历史脚本血缘中涉及的表、字段、关系使用热度进行智能推荐涉及以下步骤:
(1)血缘配置库中记录历史脚本血缘中涉及的表、字段、关系的明细信息。
(2)数据开发平台后端服务使用算法和数据分析技术,基于血缘配置库中积累的历史血缘数据,对历史数据进行统计和分析,计算表、字段、关系的使用热度。具体的计算方式可以根据需求和算法选择而有所不同,以下是一个示例:
表的使用热度:计算每个表被脚本引用的次数或频率。例如,表A在历史脚本中被引用了100次,而表B只被引用了10次,那么表A的使用热度较高。
字段的使用热度:计算每个字段被脚本引用的次数或频率。例如,字段X在历史脚本中被引用了1000次,而字段Y只被引用了100次,那么字段X的使用热度较高。
关系的使用热度:计算不同表之间的关联关系被脚本引用的次数或频率。例如,关系A和关系B分别被脚本引用了50次和20次,那么关系A的使用热度较高。
(3)基于使用热度,数据开发平台后端服务为开发人员提供智能推荐功能,推荐常用的表、字段、关系,以辅助开发人员进行脚本开发。例如,某个表A和字段B在历史脚本中被频繁使用,而表C和字段D很少被使用。SDK包可以根据使用热度,向开发人员推荐常用的表A和字段B,以辅助开发人员进行脚本开发。这样的推荐可以在开发人员选择表和字段时,提供更准确和高效的选择,减少开发人员的工作量和错误。
(4)推荐结果可以通过界面展示或其他方式呈现给开发人员,以提供更高效和准确的开发体验。
该技术方案解决了现有技术中无法自动分析识别脚本、表之间的依赖关系,无法进行有效的影响分析,涉及改动时难以判断对下游脚本或者表的影响的技术问题。
图3为本发明实施例的数据开发平台的整体技术架构图,基于spring cloud微服务框架构建。该数据开发平台包括:
注册中心,用于统一管理微服务集群,不同微服务之间通过服务名动态调用,可以做到微服务节点的动态扩缩容对于用户无感知。注册中心的功能还可以包括服务注册和健康检查。
负载均衡设备,用于在网络中分发和管理流量,以确保网络服务的高可用性、性能和安全性。负载均衡设备可以根据预设的规则和算法,将传入的网络流量分发到多个服务器或数据中心,以避免单一节点过载,提高***的整体性能和可靠性。负载均衡设备可以采用nginx中间件。
Web服务,用于接收来自用户的请求,可能是HTTP请求或其他协议的请求,然后根据请求的内容和目标,进行处理和转发,它会执行一些预处理逻辑,如身份验证、请求转发等,然后将请求转发给微服务网关;WEB服务包含一些业务逻辑,用于处理用户请求的特定业务需求,这些业务逻辑可能包括数据处理、业务规则执行、请求转发等,以确保用户请求得到正确的处理和响应;WEB服务负责安全性和性能优化的功能,包括安全认证、请求过滤、缓存、压缩等,它可以确保用户请求的安全性,并通过一些优化手段提高***的性能和响应速度。
微服务网关,用于过滤所有的前端和后端服务调用,并转发请求到鉴权服务进行统一的鉴权认证,避免未知请求的接入,保护***安全。并且可以通过熔断机制及降级机制避免在访问并发超出***负载或者服务访问异常时的***雪崩。
微服务网关只接收前端的服务调用请求,后端服务之间的接口调用不经过微服务网关,而且直接通过注册中心接口获取到目标服务的实际ip端口,直接发起调用。
微服务网关的主要作用包括:
请求过滤:微服务网关可以对进入的请求进行检查,过滤掉不符合要求的请求,比如来自不信任来源的请求或格式不正确的请求。
路由转发:微服务网关将合法的请求根据需要转发到相应的微服务,这通常涉及到解析请求中的信息,如服务名、API路径等,以确定目标服务。
鉴权认证:在转发请求之前,微服务网关会将请求发送到鉴权服务进行用户身份的验证和权限的认证。这是为了确保只有具有适当权限的用户才能访问特定的服务和数据。
鉴权服务,用于进行统一的鉴权认证,避免未知请求的接入,保护***安全。
微服务集群,其按照业务功能拆分为多个不同的独立运行的微服务,用于提供统一的开发管理流程、安全的用户认证与授权、统一的数据源管理、脚本开发管理,以及脚本开发成果展示;具体可以包括管理微服务、基础微服务、数据源微服务、映射微服务和展示微服务这些微服务。
文件服务器,用于文件存放或者文件取用,具体用于存放开发过程生成的脚本文件或者临时文件。
分布式缓存,用于数据缓存存储或者访问,具体用于缓存用户登录会话信息和/或菜单权限信息。用户登录会话信息指的是用户在登录***时所生成的会话信息,包括用户身份标识、登录时间、登录状态等。这些信息通常用于验证用户的身份和权限,并在用户与***之间建立会话,以便***能够跟踪用户的操作和提供个性化的服务。菜单权限信息指的是用户在***中所具有的菜单或功能权限,包括用户能够访问的菜单、功能按钮、操作权限等。这些信息通常用于控制用户对***功能的访问权限,以确保用户只能访问其具有权限的功能,从而保障***的安全性和数据的完整性。因此,用户登录会话信息和菜单权限信息都是与用户身份和权限相关的数据,登录会话信息用于标识用户的身份和登录状态,而菜单权限信息用于控制用户对***功能的访问权限。分布式缓存的优点在于:分布式缓存可以将数据存储在内存中,因此可以提供非常快速的数据访问速度,从而加快用户登录和权限验证的过程。分布式缓存具有复制和容错机制,即使某个节点发生故障,***仍然可以继续提供服务,从而保证了***的高可用性。分布式缓存提供了一致性哈希等机制,可以确保数据在不同节点之间的一致性,从而避免数据不一致的问题。
配置数据库集群,用于数据库读写,具体用于存放平台***配置数据和/或开发配置数据。
***配置数据通常包含了平台运行所需的基础配置信息,这些信息对于平台的正常运行至关重要。***配置数据包括但不限于:数据库连接信息:包括数据库服务器地址、端口、用户名、密码、数据库名称等。服务配置:如API服务的端口、日志级别、超时设置等。认证和授权信息:用于控制用户访问权限的配置。资源限制:如CPU、内存使用限制,连接池大小等。集群配置:如果平台采用集群部署,这里会包含节点信息、负载均衡设置、故障转移策略等。监控和报警设置:用于监控***健康状况和异常报警的配置。备份和恢复策略:数据库和***的备份周期、备份方式、恢复流程等。
开发配置数据更偏向于用户在平台上进行数据开发时的配置信息,这些信息通常是用户根据具体的开发需求所设置的。开发配置数据包括:数据模型配置:定义数据表结构、关系、索引等;ETL(Extract,Transform,Load)配置:数据抽取、转换和加载的作业配置;数据管道配置:数据流转的逻辑、条件等;语法校验规则:SQL编写规范性、SQL语法正确性等。
图3中的网关集群是指微服务网关集群,图3中的配置数据库集群是指图2中的配置库。
具体地,微服务网关具体用于:Rest协议接入;合作方权限过滤;服务访问权限过滤;流量控制;非Rest协议接入;协议适配;报文映射。微服务网关,具体包括:Rest协议接入模块,用于支持RESTful API的接入,处理和转发符合RESTful设计风格的API请求;合作方权限过滤模块,用于根据合作方的身份和权限对API请求进行过滤和控制,确保只有经过授权的合作方能够访问相应的API;服务访问权限过滤模块,用于对内部微服务的访问进行权限控制,确保只有经过授权的微服务能够相互通信;流量控制模块,用于对API请求的流量进行控制和管理,包括限流、流量监控、流量调度等功能,以保障***的稳定性和可靠性;非Rest协议接入模块,用于支持非RESTful协议的接入;协议适配模块,用于将不同的协议进行转换和适配,使得客户端和服务端使用不同的通信协议进行通信;报文映射模块,用于对不同格式的报文进行映射和转换,使得客户端和服务端使用不同的数据格式进行通信,如JSON、XML等。
在一些实施例中,展示微服务调用映射微服务的Rest服务。端口1与端口2是微服务集群暴露的端口示意,实际上每个微服务会具有一个端口。
该数据开发平台中,对不同服务模块按照业务进行微服务拆分,单独维护和部署,降低了功能迭代发布的成本及难度。
基于不同的场景,将业务数据分别存储到文件服务器、分布式缓存或者配置数据库集群中,以获得最优的***性能。
其中,熔断机制和降级机制是微服务网关中的两种保护机制,用于应对***负载过高或服务异常的情况,以保证***的可用性和稳定性。熔断机制(Circuit Breaker)是一种故障保护机制,用于防止服务调用链中的故障扩散,避免整个***因为某个服务的故障而崩溃。熔断机制通过监控服务的调用情况,当服务的错误率或响应时间超过一定阈值时,会自动断开对该服务的调用,将后续请求快速失败,而不是一直等待超时。这样可以减轻服务的负载,保护***的稳定性。当服务恢复正常后,熔断器会逐渐闭合,重新允许对该服务的调用。降级机制(Fallback)是一种在***负载过高或服务异常时,临时屏蔽某些功能或服务的策略。当***压力过大或某个服务不可用时,为了保证核心功能的可用性,可以通过降级机制暂时关闭一些非核心或可选的功能,或者替代性地提供简化的功能。降级机制可以通过返回默认值、缓存数据、调用备用服务等方式来实现。通过降级机制,可以保证***的基本功能可用,避免***雪崩效应的发生。
针对上述不同的场景和需求,可以选择将业务数据存储到文件***、分布式缓存或关系型数据库中,以获得最优的***性能,下面列举了一些场景和相应的处理方式:
高并发读取场景:如果业务场景中存在高并发的读取需求,可以使用分布式缓存来存储数据。分布式缓存具有高速读取和低延迟的特点,可以有效地提升***的读取性能。常见的分布式缓存***包括Redis、Memcached等。
高写入频率场景:对于高写入频率的场景,可以选择使用配置数据库集群来存储数据。
在高写入频率的场景中,使用配置数据库集群来存储数据具有多个优点:数据库集群可以通过多节点分散写入负载,特别是在使用分片(Sharding)技术时,可以将数据分布到不同的节点上,从而提高整体的写入性能。集群环境可以通过冗余节点提供故障转移能力,当主节点出现问题时,可以快速切换到备用节点,保证服务的持续可用。随着写入负载的增加,可以通过增加更多的节点来水平扩展数据库集群,以满足不断增长的数据量和写入需求。集群通常会实现数据的实时复制,即使在发生硬件故障或其他灾难性事件时,也能保证数据不丢失。数据库集群可以实现负载均衡,合理分配写入请求到不同的节点,避免单个节点过载。
高写入频率的具体量化标准可能会根据应用场景和业务需求而有所不同,但一般可以从以下几个维度来评估:写入吞吐量、数据量大小、并发写入数、写入响应时间、数据更新频率。举例来说,一个高写入频率的场景可能具有以下特征:每秒写入事务数超过数千甚至数万次;每秒写入数据量达到数十MB或更高;并发写入客户端数百到数千个;写入响应时间要求在毫秒级别;数据更新频率极高,几乎实时更新。
大数据量存储场景:如果业务数据量非常大,超过了单个节点的存储容量,可以考虑使用文件服务器来存储数据。
高可靠性和数据持久化场景:对于需要高可靠性和数据持久化的场景,可以选择使用配置数据库集群。
高可靠性意味着***能够在面对各种故障和异常情况时,仍然保持正常运行,提供不间断的服务。这需要***具备故障恢复和冗余机制。以下是一些需要高可靠性的场景:金融服务:银行、证券交易、支付平台等金融服务对数据的准确性和实时性要求极高,任何的***中断都可能导致巨大的经济损失和信誉损害。医疗保健:医疗信息***需要确保患者信息的实时可用性,以支持紧急医疗服务和临床决策。电子商务:电商平台在促销活动期间会遇到巨大的访问压力,***的高可靠性对于保证用户体验和交易成功率至关重要。在线服务提供商:云服务、SaaS提供商等在线服务需要保证服务的高可用性,以满足客户对服务连续性的期望。关键基础设施:能源管理、交通控制等关键基础设施的管理***,其稳定性直接关系到公共安全和服务的连续性。
数据持久化是指将数据保存到可靠的存储介质中,以便在***重启或故障后仍然能够恢复数据。以下是一些需要数据持久化的场景:用户数据存储:社交网络、在线游戏、论坛等平台需要持久化用户生成的内容,如帖子、图片、游戏状态等。事务记录:任何涉及财务交易的***都需要持久化交易记录,以便进行审计和遵守法律法规。日志记录:***日志、操作日志和安全日志的持久化对于故障诊断、性能分析和安全监控至关重要。配置管理:在自动化部署和运维的环境中,***配置的持久化保证了即使在发生故障时也能快速恢复服务。业务数据分析:企业需要持久化业务数据以支持数据分析、报告生成和决策支持。
快速读取和计算场景:如果需要对数据进行快速读取和计算,可以选择使用分布式缓存。分布式缓存具有高速读取和低延迟的特点,可以将热点数据缓存到内存中,提供快速的读取和计算能力。这对于需要实时响应和高性能计算的场景非常有用。
需要注意的是,不同的存储方式各有优劣,并且适用于不同的场景。在实际应用中,需要根据具体的业务需求、数据规模、性能要求和可用资源等因素综合考虑,选择最适合的存储方式来获得最优的***性能。
上述的对不同模块按照业务进行微服务拆分,单独维护和部署,降低了功能迭代发布的成本及难度,是指将微服务按照业务功能进行拆分,并划分为不同的服务模块,以实现解耦、独立维护和部署的架构设计。下面对各个服务模块的含义进行解释:
管理微服务,用于提供统一的开发管理流程,其包括项目管理、需求管理、或者任务拆分流转;项目管理用于进行项目团队及项目资源的管理,可以配置项目成员信息、项目可以使用的数据源资源信息。需求管理是面向需求提出方或者业务人员的功能,需求提出方或者业务人员可以基于该功能提交需求和相关描述及附件。然后上述的项目负责人可以在项目里响应该需求,响应完进行后续的任务拆分及开发。任务拆分流转是依托于上述的项目及需求,在项目里拆分针对某个需求的具体开发任务,然后开发人员在任务下进行具体的脚本开发。
项目管理模块,配置用于存储项目成员信息的数据库,以及配置用于存储项目可使用的数据源资源信息的数据库;
需求管理模块,接收来自需求提出方或业务人员的需求提交,该模块包括用于接收需求描述和附件的用户界面,并允许项目负责人在项目中响应所提交的需求;
任务拆分流转模块,依托于项目管理模块和需求管理模块,用于在项目中针对特定需求拆分具体的开发任务,并为开发人员提供在任务下进行脚本开发的功能。
其中,项目管理模块可以进一步包括:成员配置工具,用于指定和修改项目团队成员的角色和权限;资源配置工具,用于分配和调整项目可用的数据源资源。
其中,需求管理模块可以进一步包括:需求跟踪模块,用于监控需求的状态和项目负责人的响应活动;需求优先级设置模块,用于根据业务需求的紧急程度对需求进行优先级排序。
其中,任务拆分流转模块可以进一步包括:任务分配工具,用于将拆分的任务分配给特定的开发人员;开发进度跟踪工具,用于监控各开发任务的进展情况;代码管理接口,用于跟踪和管理开发过程中产生的代码。
基础微服务,用于提供用户认证、授权和日志记录的基础功能,实现通用业务功能的复用;它包括一些通用的业务功能,如用户认证、权限管理、日志记录等。基础服务的设计和实现可以被其他微服务复用,避免重复开发和维护,提高开发效率和***的一致性;
数据源微服务,用于提供统一的数据源管理功能,其包括多种类型数据源的配置信息维护、连通性测试和元数据查询;所述多种类型数据源包括:关系型数据源、大数据数据源、非关系型数据源中的任意多个;
映射微服务,用于提供ETL脚本开发配置的相关支持,脚本版本管理,以及脚本血缘解析能力;血缘解析属于映射微服务内部的一部分功能;
展示微服务,用于提供统一的开发脚本成果展示能力,其包括全链路血缘展示和/或开发成果目录。
全链路血缘是指由某张表或者某个字段的所有上游(包含上游的上游、上游的上游的上游等)及所有下游(包含下游的下游、下游的下游的下游等)构成的完整的脚本加工血缘链路图。
全链路血缘的产生及展示是基于单个脚本的血缘形成的,举个例子:例如基于脚本1解析血缘得到“表A->表B”这样的流向的血缘,例如基于脚本2解析血缘得到“表B->表C”这样的流向的血缘,那么表B的全链路血缘即为“表A->表B->表C”。
开发成果目录是指在平台上提前维护好的层级目录,脚本开发的时需要把脚本和目录做关联,从而可以基于目录检索查看相关的开发脚本。
通过将微服务按照业务功能进行拆分,并划分为不同的服务模块,可以实现各个模块的独立开发、部署和维护,降低了功能迭代发布的成本和难度。每个服务模块可以独立演进,提高开发效率和***的可扩展性。同时,通过微服务架构的拆分和解耦,还可以实现***的高可用性、弹性伸缩和故障隔离等优势。
在一些实施例中,注册中心包括健康检查模块,健康检查功能是注册中心的一项重要功能,用于监控和检测微服务的运行状态和可用性。通过健康检查,注册中心可以实时了解每个微服务节点的健康状况,并根据检查结果来决定是否将该节点纳入服务列表供其他微服务调用。具体来说,健康检查模块可以包括如下子模块:
心跳检测子模块:注册中心会定期向微服务节点发送心跳请求,微服务节点需要及时响应心跳请求,以表明自己的存活状态。如果某个微服务节点长时间未响应心跳请求,注册中心会将其标记为不可用状态,其他微服务将不再向该节点发送请求。
健康状态检查子模块:除了心跳检测,注册中心还可以通过其他方式检查微服务节点的健康状态。例如,可以通过发送特定的健康检查请求,微服务节点需要正确响应该请求,并返回表示自身健康状态的信息。如果微服务节点返回的健康状态为不健康,注册中心会将其标记为不可用状态。
负载评估子模块:注册中心可以根据微服务节点的负载情况来判断其健康状态。例如,可以通过监控微服务节点的CPU、内存、网络等指标,当负载超过一定阈值时,将其标记为不可用状态,以避免过载导致服务性能下降。
通过健康检查功能,注册中心可以动态感知微服务节点的健康状况,并将可用的节点信息提供给其他微服务进行调用。当某个微服务节点发生故障或不可用时,注册中心会自动将其从服务列表中剔除,从而保证其他微服务对于节点的动态扩缩容对于用户是无感知的。同时,健康检查功能也可以帮助运维人员及时发现和处理故障节点,提高***的可用性和稳定性。
不同微服务之间通过服务名动态调用是指在微服务架构中,微服务之间不直接通过固定的IP地址和端口号进行通信,而是通过服务名进行动态调用。具体来说,每个微服务在启动时会向注册中心注册自己的服务名和网络地址信息。其他微服务在需要调用某个服务时,可以通过服务名来发起请求,而不需要关心具体的服务地址和端口号。注册中心会根据服务名将请求转发给对应的微服务节点,实现微服务之间的通信。
在一些实施例中,注册中心包括:接收模块,用于在微服务启动时接收并存储微服务的注册信息,注册信息包括服务名和网络地址;接收调用方微服务发送的携带服务名的请求;微服务调用模块,用于解析服务名,并将请求准确地路由至服务名对应的目标微服务节点,以便完成微服务间的动态通信。
通过服务名动态调用的方式,可以实现以下优势:
通过服务名,微服务可以动态发现其他微服务的地址和可用性。当有新的微服务节点加入或旧的节点下线时,注册中心会自动更新服务列表,其他微服务可以根据最新的服务列表进行动态路由,实现负载均衡和高可用性。
微服务之间通过服务名进行调用,对于调用方来说,不需要关心具体的服务地址和端口号,只需要知道服务名即可。这样可以降低耦合度,简化服务调用的逻辑,提高开发效率。
当需要对某个微服务进行扩容或缩容时,只需要启动或停止相应的微服务节点,并向注册中心注册或注销服务。其他微服务不需要修改代码,仍然通过服务名进行调用,对于用户来说是无感知的。
本发明实施例的有益技术效果如下:
本发明实施例基于统一的开发界面及更丰富的开发方式进行开发,对于开发人员来讲,大大降低了学习门槛及开发效能。
本发明实施例基于统一的开发管理机制,显著降低数据开发项目组管理人员对于团队的管理难度,同时线上化的管理功能增加了开发内容、成果及版本的可视化能力,对于团队的分工、审计、回溯都能够提供很好的支持。
本发明实施例基于自动化的血缘解析生成机制,能够构建全链路的血缘关系图谱,同时结合可视化的血缘地图查看及检索功能,能够很方便的进行表、字段的血缘链路查看及影响分析,大大降低了脚本或者模型改动时造成生产事故的风险。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种数据开发方法,应用于如上所述的数据开发平台,所述数据开发方法包括以下步骤:
a)负载均衡设备接收用户发送的数据开发请求;
b)负载均衡设备根据预设的负载均衡规则将数据开发请求分发至Web服务;
c)Web服务接收到分发的数据开发请求后,将数据开发请求转发至微服务网关集群;本实施例中由于采用的是前后端分离的架构,此处的web服务可以认为是部署到nginx(web服务器、负载均衡设备)下的前端静态页面;
d)微服务网关集群对前端和后端的微服务调用进行过滤,并将数据开发请求转发至鉴权服务进行统一的鉴权认证;
e)鉴权服务对数据开发请求进行身份验证和权限授权,验证通过后,将数据开发请求及验证结果返回至微服务网关集群;
f)微服务网关集群通过注册中心的接口获取到服务名对应的具体的微服务ip端口,由微服务网关集群直接转发到该服务名对应的微服务实例;
g)微服务集群中的相应微服务实例接收到数据开发请求后,执行数据开发相关的业务逻辑处理,其包括:数据源管理、脚本开发管理、用户认证与授权、提供开发管理流程中的任意多个;
h)微服务实例处理完成后,将处理结果存储至配置数据库集群,并将生成的脚本文件或临时文件存放至文件服务器;
i)微服务实例将处理结果通过微服务网关集群返回给Web服务;
j)Web服务将处理结果返回给用户,完成一次数据开发流程。
在一些实施例中,所述步骤g)中的数据源管理包括:多种类型数据源的配置信息维护、连通性测试和元数据查询;所述多种类型数据源包括:关系型数据源、大数据数据源、非关系型数据源中的任意多个。
在一些实施例中,所述步骤g)中的脚本开发管理包括:提供ETL脚本开发配置的相关支持,脚本版本管理,以及脚本血缘解析能力。
在一些实施例中,所述步骤g)中的用户认证与授权包括:用户登录认证、会话管理以及基于用户角色的访问控制。
在一些实施例中,提供统一的开发管理流程,其包括项目管理、需求管理、或者任务拆分流转。项目管理用于进行项目团队及项目资源的管理,可以配置项目成员信息、项目可以使用的数据源资源信息。需求管理是面向需求提出方或者业务人员的功能,需求提出方或者业务人员可以基于该功能提交需求和相关描述及附件。然后上述的项目负责人可以在项目里响应该需求,响应完进行后续的任务拆分及开发。任务拆分流转是依托于上述的项目及需求,在项目里拆分针对某个需求的具体开发任务,然后开发人员在任务下进行具体的脚本开发。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述数据开发方法的各步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本发明实施例还提供了一种电子设备,如图3所示,包括一个或多个处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现上述数据开发方法的各步骤。
处理器301可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器303可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器303可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器303可包括可移除或不可移除(或固定)的介质。在特定实施例中,存储器303是非易失性固态存储器。在特定实施例中,存储器303包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信总线304包括硬件、软件或两者,用于将上述部件彼此耦接在一起。举例来说,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种数据开发平台,其特征在于,所述数据开发平台包括:
注册中心,用于统一管理微服务集群,使得不同微服务之间通过服务名动态调用;
负载均衡设备,用于根据预设的负载均衡规则将数据开发请求分发至Web服务;
Web服务,用于接收来自用户的请求,将所述请求转发给微服务网关;
微服务网关,用于过滤所有的数据开发平台的前端和后端的微服务调用,并转发请求到鉴权服务进行统一的鉴权认证;
鉴权服务,用于对所述请求进行统一的鉴权认证;
微服务集群,其按照业务功能拆分为多个不同的独立运行的微服务,用于提供统一的开发管理流程、安全的用户认证与授权、统一的数据源管理、脚本开发管理,以及脚本开发成果展示;
文件服务器,用于存放开发过程生成的脚本文件或者临时文件;
分布式缓存,用于缓存用户登录会话信息和/或菜单权限信息;
配置数据库集群,用于存放***配置和/或开发配置数据。
2.根据权利要求1所述的数据开发平台,其特征在于,所述微服务网关,具体包括:
Rest协议接入模块,用于支持RESTful API的接入,处理和转发符合RESTful设计风格的API请求;
合作方权限过滤模块,用于根据合作方的身份和权限对API请求进行过滤和控制,确保只有经过授权的合作方能够访问相应的API;
服务访问权限过滤模块,用于对内部微服务的访问进行权限控制,确保只有经过授权的微服务能够相互通信;
流量控制模块,用于对API请求的流量进行控制和管理;
非Rest协议接入模块,用于支持非RESTful协议的接入;
协议适配模块,用于将不同的协议进行转换和适配,使得客户端和服务端使用不同的通信协议进行通信;
报文映射模块,用于对不同格式的报文进行映射和转换,使得客户端和服务端使用不同的数据格式进行通信。
3.根据权利要求1所述的数据开发平台,其特征在于,所述微服务集群包括:
管理微服务,用于提供统一的开发管理流程,其包括项目管理、需求管理、任务拆分流转;
基础微服务,用于提供用户认证、授权和日志记录的基础功能,实现通用业务功能的复用;
数据源微服务,用于提供统一的数据源管理功能,其包括多种类型数据源的配置信息维护、连通性测试和元数据查询;所述多种类型数据源包括:关系型数据源、大数据数据源、非关系型数据源中的任意多个;
映射微服务,用于提供ETL脚本开发配置的相关支持,脚本版本管理,以及脚本血缘解析能力;
展示微服务,用于提供统一的开发脚本成果展示能力,其包括全链路血缘展示和/或开发成果目录。
4.根据权利要求3所述的数据开发平台,其特征在于,
当业务场景为高并发读取场景时,所述基础微服务使用分布式缓存来存储业务数据;
当业务场景为高写入频率场景时,所述数据源微服务使用配置数据库集群来存储业务数据;
当业务场景为大数据量存储场景时,所述数据源微服务使用文件服务器来存储业务数据;
当业务场景为高可靠性和数据持久化场景时,所述数据源微服务使用配置数据库集群来存储业务数据;
当业务场景为快速读取和计算场景时,所述基础微服务使用分布式缓存来存储业务数据。
5.根据权利要求1所述的数据开发平台,其特征在于,所述注册中心包括健康检查模块,所述健康检查模块包括如下子模块:
心跳检测子模块,用于定期验证微服务节点的活跃状态并确保其响应性;若微服务节点未按时响应,则从服务列表中排除;
状态监测子模块,用于通过健康检查请求评估微服务节点的健康状态;若微服务节点报告不健康状态,则标记为不可用;
负载评估子模块,用于监控微服务节点的资源使用情况并判断其健康状况;当微服务节点资源负载超出阈值,将所述微服务节点视为不可用。
6.根据权利要求1所述的数据开发平台,其特征在于,所述注册中心包括:
接收模块,用于在微服务启动时接收并存储微服务的注册信息,所述注册信息包括服务名和网络地址;接收调用方微服务发送的携带服务名的请求;
微服务调用模块,用于解析所述服务名,并将请求准确地路由至所述服务名对应的目标微服务节点,以便完成微服务间的动态通信。
7.根据权利要求3所述的数据开发平台,其特征在于,所述映射微服务包括脚本血缘解析模块,用于自动解析数据加工脚本中的血缘关系并将解析结果存储到配置数据库集群中;
所述脚本血缘解析模块包括:
IDE集成子模块,用于在集成开发环境中,在开发者保存或提交脚本时自动触发脚本血缘解析;
配置化开发子模块,用于在配置化开发流程的最后一步确认生成脚本时进行脚本血缘解析;
批量导入子模块,用于在批量导入脚本并生成最终脚本时自动执行脚本血缘解析。
8.根据权利要求3所述的数据开发平台,其特征在于,所述映射微服务包括智能推荐模块,用于基于历史脚本的血缘关系数据,为开发人员提供表、字段或者关系的使用热度分析和推荐;
所述智能推荐模块包括:
热度分析子模块,用于统计和分析历史脚本中表、字段或者关系的使用频率,并计算其热度;
推荐生成子模块,用于根据热度分析结果,向开发人员推荐常用的表、字段或者关系。
9.根据权利要求3所述的数据开发平台,其特征在于,所述映射微服务包括依赖关系存储模块,用于将脚本血缘解析模块解析出的依赖关系存储到配置数据库集群中;
所述依赖关系存储模块包括:
数据结构构建子模块,用于根据解析结果构建血缘关系的数据结构,其包括schema级、表级、字段级和join级;
数据存储子模块,用于将构建好的血缘关系数据结构存储到配置数据库集群。
10.根据权利要求1所述的数据开发平台,其特征在于,包括如下中的任意一项或多项:
所述数据开发平台是基于B/S模式的统一浏览器Web开发平台,所述平台提供统一的开发和调试页面,支持多种数据库类型的开发和调试操作;
所述平台支持多种开发方式,包括IDE脚本开发方式、批量导入开发方式和配置化开发方式;所述批量导入开发方式允许开发人员以批量方式导入数据至本平台中,并自动解析生成相关的血缘关系;所述配置化开发方式允许开发人员通过配置文件或可视化界面进行脚本快速开发配置,并自动生成相关血缘关系;
所述平台使用JDBC协议作为应用程序与数据库之间的交互方式;
所述平台通过自定义类加载器来动态加载不同数据库驱动的JAR包,支持在运行时根据需要动态加载相应的数据库驱动程序。
11.一种数据开发方法,应用于如权利要求1所述的数据开发平台,其特征在于,所述数据开发方法包括以下步骤:
a)负载均衡设备接收用户发送的数据开发请求;
b)负载均衡设备根据预设的负载均衡规则将数据开发请求分发至Web服务;
c)Web服务接收到分发的数据开发请求后,将数据开发请求转发至微服务网关集群;
d)微服务网关集群对前端和后端的微服务调用进行过滤,并将数据开发请求转发至鉴权服务进行统一的鉴权认证;
e)鉴权服务对数据开发请求进行身份验证和权限授权,验证通过后,将数据开发请求及验证结果返回至微服务网关集群;
f)微服务网关集群通过注册中心的接口获取到服务名对应的具体的微服务ip端口,由微服务网关集群直接转发到该服务名对应的微服务实例;
g)微服务集群中的相应微服务实例接收到数据开发请求后,执行数据开发相关的业务逻辑处理,其包括:数据源管理、脚本开发管理、用户认证与授权、提供开发管理流程中的任意多个;
h)微服务实例处理完成后,将处理结果存储至配置数据库集群,并将生成的脚本文件或临时文件存放至文件服务器;
i)微服务实例将处理结果通过微服务网关集群返回给Web服务;
j)Web服务将处理结果返回给用户,完成一次数据开发流程。
CN202311716998.0A 2023-12-14 2023-12-14 一种数据开发平台和数据开发方法 Pending CN117971799A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311716998.0A CN117971799A (zh) 2023-12-14 2023-12-14 一种数据开发平台和数据开发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311716998.0A CN117971799A (zh) 2023-12-14 2023-12-14 一种数据开发平台和数据开发方法

Publications (1)

Publication Number Publication Date
CN117971799A true CN117971799A (zh) 2024-05-03

Family

ID=90850539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311716998.0A Pending CN117971799A (zh) 2023-12-14 2023-12-14 一种数据开发平台和数据开发方法

Country Status (1)

Country Link
CN (1) CN117971799A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170006135A1 (en) * 2015-01-23 2017-01-05 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US20180088935A1 (en) * 2016-09-27 2018-03-29 Ca, Inc. Microservices application configuration based on runtime environment
CN109814909A (zh) * 2019-01-18 2019-05-28 南京绿新能源研究院有限公司 基于Spring cloud微服务架构云化SCADA***的方法
CN110740187A (zh) * 2019-10-25 2020-01-31 家乡互动(厦门)网络科技有限公司 一种微服务架构的实现方法
CN113704337A (zh) * 2021-08-26 2021-11-26 上海德拓信息技术股份有限公司 一种基于驱动动态加载的元数据采集方法与***
CN114401098A (zh) * 2021-12-28 2022-04-26 智昌科技集团股份有限公司 一种快速构建微服务的应用***及方法
CN114553967A (zh) * 2022-01-14 2022-05-27 青岛海尔科技有限公司 一种微服务间的调用方法和相关装置
CN115272036A (zh) * 2022-08-15 2022-11-01 济源市沁园工业经济开发有限公司 一种智慧园区物联网平台
CN116489214A (zh) * 2023-04-25 2023-07-25 国电南瑞科技股份有限公司 一种基于微服务网关的统一服务调度方法、装置、介质及设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170006135A1 (en) * 2015-01-23 2017-01-05 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US20180088935A1 (en) * 2016-09-27 2018-03-29 Ca, Inc. Microservices application configuration based on runtime environment
CN109814909A (zh) * 2019-01-18 2019-05-28 南京绿新能源研究院有限公司 基于Spring cloud微服务架构云化SCADA***的方法
CN110740187A (zh) * 2019-10-25 2020-01-31 家乡互动(厦门)网络科技有限公司 一种微服务架构的实现方法
CN113704337A (zh) * 2021-08-26 2021-11-26 上海德拓信息技术股份有限公司 一种基于驱动动态加载的元数据采集方法与***
CN114401098A (zh) * 2021-12-28 2022-04-26 智昌科技集团股份有限公司 一种快速构建微服务的应用***及方法
CN114553967A (zh) * 2022-01-14 2022-05-27 青岛海尔科技有限公司 一种微服务间的调用方法和相关装置
CN115272036A (zh) * 2022-08-15 2022-11-01 济源市沁园工业经济开发有限公司 一种智慧园区物联网平台
CN116489214A (zh) * 2023-04-25 2023-07-25 国电南瑞科技股份有限公司 一种基于微服务网关的统一服务调度方法、装置、介质及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
VIEW DESIGN: "基于若依开发的Java EE 分布式微服务架构平台", 《HTTPS://BLOG.CSDN.NET/VIEWDESIGN/ARTICLE/DETAILS/128544646》, 4 January 2023 (2023-01-04), pages 1 - 6 *
张保军: "基于微服务集群架构的协同服务平台设计", 《软件》, vol. 44, no. 2, 15 February 2023 (2023-02-15), pages 161 - 164 *

Similar Documents

Publication Publication Date Title
US9189355B1 (en) Method and system for processing a service request
US9483387B1 (en) Tree comparison functionality for services
US8001422B1 (en) Shadow testing services
Fu et al. Real-time data infrastructure at uber
US8230325B1 (en) Structured document customizable comparison systems and methods
US20220094600A1 (en) Managed remediation of non-compliant resources
US11362912B2 (en) Support ticket platform for improving network infrastructures
US11615076B2 (en) Monolith database to distributed database transformation
WO2023098462A1 (en) Improving performance of sql execution sequence in production database instance
CN115812298A (zh) 供应故障的区块链管理
CN116601644A (zh) 使用分布式分类账提供可解释的机器学习模型结果
US10951540B1 (en) Capture and execution of provider network tasks
WO2022179342A1 (en) Application deployment in computing environment
US20180300369A1 (en) Secure query interface
Wang et al. The operation and maintenance governance of microservices architecture systems: A systematic literature review
US20200334302A1 (en) Automatic check of search configuration changes
CN117971799A (zh) 一种数据开发平台和数据开发方法
US11169905B2 (en) Testing an online system for service oriented architecture (SOA) services
Alluri Performance Evaluation of Apache Cassandra using AWS (Amazon Web Services) and GCP (Google Cloud Platform)
US12045151B2 (en) Graph-based impact analysis of misconfigured or compromised cloud resources
US20120078923A1 (en) Scripting using new ordering algorithm
US20230040635A1 (en) Graph-based impact analysis of misconfigured or compromised cloud resources
Aytas Designing Big Data Platforms: How to Use, Deploy, and Maintain Big Data Systems
US11561979B2 (en) Dynamically detecting and correcting errors in queries
Fan et al. A petri net-based byzantine fault diagnosis method for service composition

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