中电信翼康济世数据中台基于Apache SeaTunnel构建数据集成平台经验分享

file

作者 | 中电信翼康工程师 代来

编辑 | Debra Chen

一. 引言

Apache SeaTunnel作为一个高性能、易用的数据集成框架,是快速落地数据集成平台的基石。本文将从数据中台战略背景、数据集成平台技术选型、降低Apache SeaTunnel使用门槛及未来展望几个方面,详细讲解我们是如何基于Apache SeaTunnel快速构建数据集成平台的。

二. 数据中台战略背景

随着医疗行业对数据驱动决策的需求不断增加,挖掘医疗数据要素价值,激发新质生产力潜能机遇迫在眉睫。中电信翼康通过自研的“数据中台”开展医疗健康数据要素全流程管理和一站式赋能,打造医疗健康数据要素运营底座,助力医疗数据的价值挖掘与AI模型应用。在此战略背景下,数据集成平台作为我们数据中台的“大动脉”,需要能够快速落地且能够满足中台复杂的数据集成场景需求。

三. 数据集成平台技术选型

3.1. 关键考虑因素

在对数据集成平台底层进行技术选型时,需要考虑以下几个关键因素:

  • 性能:数据集成引擎需要具备高吞吐量和低延迟,能够高效处理海量数据。
  • 扩展性:数据集成引擎应具有良好的扩展性,能够根据业务需求动态扩展处理能力。
  • 易用性:数据集成平台应易于使用和维护,减少对专业技术人员的依赖。
  • 生态支持:数据集成引擎应支持多种数据源和目标,具备良好的生态系统支持。

3.2. 选择Apache SeaTunnel的优势

目前,市场上主流的数据集成技术主有Sqoop、Datax、Kettle、Flink CDC、Canal、Airbyte等。Apache SeaTunnel具备以下优势,使其成为我们数据集成平台的理想选择:

  1. 性能

    根据官方最新公布的数据来看,Apache SeaTunnel在相同测试场景下比Datax快40%-80%,比Airbyte快30倍,其具有无与伦比的性能优势。我们也在客户现场亲测了一下,8C32G服务器上做同数据库上jdbc-source到jdbc-sink的性能测试,我们的数据集成平台的速率平均比第三方平台快近两万条每秒。优秀的性能源自于SeaTunnel优秀的设计,以JDBC连接器为例,SeaTunnel使用了数据库连接复用、动态分片、而SeaTunnel的zeta引擎更是实现了动态线程共享技术。在完成数据同步的同时尽量减少资源的使用,提高效率。

  2. 部署方式

    在我们的客户场景中,大多数的医院只能提供前端采集节点的物理机给我们部署采集服务,而平台是部署在中心端的,只有采集端到医院数据库网络是通的,中心端到前端采集节点网络是通的,不能夸端通信。只有少数客户所有的服务可以部署在一套环境中。这就要求我们的部署必须是非常灵活的。SeaTunnel既支持分布式部署也支持单机部署,其无中心化的设计确保系统的高可用机制和易扩展。其可让每个节点可以既是Master也可以同时是Worker,也可以让Master和Worker分开部署。前者适合中小规模部署,后者适合超大规模部署。

  3. 容错

    SeaTunnel的容错也是非常优秀的。

    从集群角度看,当集群某一节点宕机,其任务可以自动容错到其他集群节点。当我们开启集群的IMAP持久化之后,即使集群节点全部宕机,也可以通过持久化的数据在重启集群时自动恢复。这里需要注意的是当集群第一个节点启动后会加载持久化的IMAP数据,因此集群节点之间启动时间差不宜太长,否则可能会造成所有任务都打到第一个启动的节点上去。

    从作业的角度看,SeaTunnel也拥有checkpoint机制,当作业因意外突然异常时,也能从checkpoint恢复从而保证昂贵的数据同步任务不用重新同步。此外,由于网络延迟、节点故障等原因,分布式系统中的数据可能具有一致性问题,SeaTunnel在相关连接器中也实现了二阶段提交,能够保证数据的一致性。

  4. 丰富生态

    SeaTunnel已经支持100+种数据源,并且易于扩展和支持自己的生态。其支持整库同步、多表同步、断点续传。更支持自动建表,这种功能体现出SeaTunnel设计的用心,这个功能在平台侧易实现且于用户而言是非常友好的功能,这在同步的表非常多的时候尤其能体现出其优势。

  5. 集成引擎架构

    SeaTunnel的EtLT的架构非常适合数据中台的场景,在数据中台场景中,90%的场景都是将数据从源端搬运到目标端,其中可能包含转换(Transform),但这个T是一个小写的t,其主要包括复制列、过滤列、切分字段等转换而不是join或者group by之类的操作。这在数据中台中非常常见,当数据进入数仓平台之后在数据开发阶段才有大T的需求。此外EtLT的设计可谓是ETL的升级版,在很多场景下其数据同步的速率是远远高于ETL架构的。

  6. 平台架构

    如果我们不选择SeaTunnel作为数据集成引擎,那么我们的平台架构可能就是这样子:

    file

    这种架构的劣势就是,使用多数据集成引擎,维护成本高昂,另外其还需要flink的执行环境来完成实时同步任务。从快速落地数据集成平台角度来看不是很友好,需要深入研究多数据集成引擎。当我们采用Seatunnel,则数据集成平台的架构可以优化成下面这样子:

file

我们只需要研究Apache seatunnel,并基于此快速落地数据集成平台,如果有不满足需求的也可以基于其二次开发,开发运维成本都相对前者低很多。

四. 如何降低Apache SeaTunnel使用门槛

1. 友好的功能界面

为了降低使用门槛,可以提供一个可视化的配置界面,使用户通过图形化界面来配置数据集成任务,而无需编写复杂的配置文件。

批流一体的任务创建

file

选择数据源进行配置,支持参数配置(可选)

file

同步任务配置映射关系,可以灵活的调整字段顺序并且支持自定义字段值,增加缺省字段,删除多余字段。

file

针对复杂sql进行数据关联查询

file

支持批任务周期性调度方式以满足定时全量或增量同步

file

支持全局参数设置

file

以上为我们产品功能的一些样例截图,整个产品的功能远不止如此,通过这些样例抛砖引玉,帮助用户如何快速落地数据集成平台起到一个引导作用。

2. 提供丰富的文档和示例

优秀的数据集成平台当然少不了丰富和优秀的文档,通过提供详细的使用文档和丰富的示例代码,帮助用户快速上手。包括如何安装、配置和调试,以及常见问题的解决方案。

主要文档包括环境要求、项目配置、配置文件详解、运行测试、常见问题解决方案等,以常见问题解决方案为例:

常见问题解决方案
数据源连接问题:

确保数据源地址、端口和认证信息正确无误。 检查网络连接和防火墙设置。

数据转换错误:

检查转换规则是否正确。 确保所有字段和类型都匹配。

性能问题:

调整Connector参数和其他配置以提高性能。 优化数据转换逻辑。

插件问题:

确保所有必要的插件都已安装并正确配置。 检查插件的版本兼容性。

3. 集成自动化部署工具

SeaTunnel的自动化部署和管理,进一步降低使用和维护的难度。实现了这种根据服务器地址信息一键部署sSeaTunnel服务的功能。

file

下面是实现了对于部署的seatunnel服务进行实时监控

file

4. 社区支持

在整个数据集成平台的开发及实施过程中,难免会遇到一些问题,有的问题社区已经有一部分经验了,例如SeaTunnel集群的容错和恢复等功能,社区都能积极的给予回答和帮助。此外,有些功能不能满足我们的实际业务需求,例如在湖仓一体的数据中台架构中,我们使用的Apache paimon作为数据湖,但社区的Paimon connector尚不能完全满足我们的业务需求,我们先后针对Paimon connector进行了BUG修复及增加了很多新Feature

  • 支持cdc写paimon
  • 支持paimon sink自动建表,自动建表支持指定partition key、primary key并且支持指定多分桶(大数据量写场景下可提高写入性能)
  • 支持paimon的多表sink
  • 支持指定格式写paimon(默认是orc,可指定parquet、avro格式)
  • 解决date字段写入不正确的问题、支持timestmap(n)类型
  • 支持kerberos认证及HA模式hdfs集群
  • 支持Hive catalog
  • 支持写入Sink表前前置类型转换校验
  • 修复批写数据丢失问题

以上只是对社区贡献的缩影,我们对社区的贡献不止于此,既然选择了Apache SeaTunnel作为数据集成引擎,享受了社区带来的益处,当然作为回报我们也应该积极的贡献社区、反馈社区让大家一起越来越优秀。

五. 未来与展望

随着医疗行业对大数据的需求不断增长,Seatunnel 作为一种高效、灵活的数据集成工具,将在医疗信息化建设中发挥重要作用,特别是在数据集成和处理方面。随着医疗行业对数据驱动决策的需求不断增加,Seatunnel 的功能和特性能够很好地满足医疗大数据平台的需求。以下是 Seatunnel 在医疗行业的一些展望:

1. 多数据源集成

集成医院的电子病历系统、影像信息系统(PACS)、实验室信息系统(LIS)等,实现跨系统的数据共享。

2. 数据标准

支持HL7 FHIR(Fast Healthcare Interoperability Resources)等医疗行业标准,提高数据的标准化和互操作性。

3. 安全性和隐私保护

  • 数据加密:采用加密技术保护数据安全,尤其是在传输过程中。

  • 匿名化和脱敏:实现数据的匿名化和脱敏处理,保护患者隐私。

4. AI与机器学习集成

数据集成平台将引入更多的智能化特性,如智能推荐配置等,帮助用户更高效地进行数据集成和处理。

六. 总结

Apache SeaTunnel作为一个高效、灵活的数据集成平台,在数据中台战略中扮演着重要角色。通过本文的介绍,读者可以了解如何基于SeaTunnel快速搭建数据集成平台,并在实际应用中灵活运用。未来,随着技术的不断发展,SeaTunnel将继续在数据集成领域发挥重要作用,助力企业实现数据驱动的业务变革。

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/394173.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【环绕字符串中唯一的子字符串】python刷题记录

R4-字符串 动态规划 class Solution:def findSubstringInWraproundString(self, s: str) -> int:dp[0]*26num1#dp初始化dp[ord(s[0])-ord(a)]1for c1,c2 in pairwise(s):if not (ord(c2)-ord(c1)-1)%26:num1else:num1dp[id]max(dp[id : ord(c2)-ord(a)],num)return sum(dp)p…

调用azure的npm实现outlook_api模拟查看邮件、发送邮件(实现web版接受outlook邮件第一步)

文章目录 ⭐前言⭐注册azure应用💖添加权限 ⭐调用npm 实现收发邮件💖安装依赖💖创建appSettings.js 放置密钥💖创建graphHelper.js封装功能💖主文件index.js 对外暴露💖效果 ⭐结束 ⭐前言 大家好&#x…

Flutter GPU 是什么?为什么它对 Flutter 有跨时代的意义?

Flutter 3.24 版本引入了 Flutter GPU 概念的新底层图形 API flutter_gpu ,还有 flutter_scene 的 3D 渲染支持库,它们目前都是预览阶段,只能在 main channel 上体验,并且依赖 Impeller 的实现。 Flutter GPU 是 Flutter 内置的底…

2024最新Mysql锁机制与优化实践以及MVCC底层原理剖析

锁机制详解 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解…

3Done学习笔记

一、基本操作 1、旋转视角 使用左下角立方体选择; 右键可以拖动视角; 中间滑轮按住拖动整个舞台界面。 2、平移和旋转 右键选择移动,有两种方式。 第一种选择起始点,按照起始点位置移动到终止点。第二种直接根据轮盘旋转或…

【docker】docker容器部署常用服务

1、容器部署nginx,并且新增一个页面 docker run -d -p 81:80 --name nginx2 nginx docker exec -it nginx2 /bin/bashcd /usr/share/nginx/html/ echo "hello world">>hello.html2、容器部署redis,成功部署后向redis中添加一条数据 do…

【C/C++笔记】:易错难点3 (二叉树)

选择题 🌈eg1 一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树,叶子节点的个数最多会差多少个()? 正确答案: C A. 3 B. 5 C. 7 D. 9 解析:普通二叉树的叶子节…

WPF学习笔记

WPF WPF(Windows Presentation Foundation,Windows呈现基础)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的…

C语言----计算开机时间

计算开机时间 实例说明 编程实现计算开机时间&#xff0c;要求在每次开始计算开机时间时都能接着上次记录的结果向下记录。 实现过程&#xff1a; 1. 在TC中创建一个C文件。 2. 引用头文件&#xff0c;代码如下: #include <stdio.h> 3. 定义结构体time&#xff0c;用来…

如何在Chrome、Edge、360、Firefox等浏览器查看网站SSL证书信息?

在如今的网络环境中&#xff0c;保障网络安全、数据安全尤其重要&#xff0c;市面上大部分网站都部署了SSL证书以实现HTTPS加密保护数据传输安全以及验证网站身份&#xff0c;确保网站安全可信。那么如何查看网站的SSL证书信息&#xff1f;接下来&#xff0c;我们将详细介绍如何…

【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式

文章目录 webView使用步骤示例 HttpURLConnection使用步骤示例GET请求POST请求 okHttp使用步骤1. 添加依赖2. 创建OkHttpClient实例3. 创建Request对象构建请求4. 发送请求5. 获取响应 Pull解析方式1. 准备XML数据2. 创建数据类3. 使用Pull解析器解析XML webView WebView 是 An…

【Nacos无压力源码领读】(三) Nacos 配置中心与热更新原理详解 敢说全网最细

本文将从 Nacos 配置中心的基本使用入手, 详细介绍 Nacos 客户端发布配置, 拉取配置, 订阅配置的过程以及服务器对应的处理过程; 配置订阅以及热更新原理相关的部分, 我看了主流的博客网站, 绝对没有比这更详细的讲解; 如果在阅读过程中对文中提到的 SpringBoot 启动过程以及…

Milvus与Zilliz Cloud:向量数据库高可用性的双重飞跃

向量数据库高可用性的重要性及其在现代数据分析中的关键作用 在数据爆炸式增长的今天,企业对于高效、准确地处理和分析大规模数据集的需求日益迫切。尤其是在人工智能、机器学习、图像识别、自然语言处理等领域,向量数据库因其对高维数据的高效存储与检索能力,成为了不可或…

Elasticsearch未授权访问漏洞

步骤一:使用以下Fofa语法进行Elasticsearch产品搜索.. fofa语法"Elasticsearch" && port"9200" 步骤二:存在未授权访问则直接进入到信息页面...不需要输入用户密码登陆. http://localhost:9200/_plugin/head/web管理界面 http://localhost:9200/…

【JavaEE】线程池

目录 前言 什么是线程池 线程池的优点 ThreadPollExecutor中的构造方法 corePoolSize && maximumPoolSize keepAliveTime && unit workQueue threadFactory 如何在java中使用线程池 1.创建线程池对象 2.调用submit添加任务 3.调用shutdown关闭线程池…

【Python】requests的response.text 和 urllib.request 的 response.read()的区别

刚写代码的时候&#xff0c;我经常会把requests 和 urllib下的request 包搞混&#xff0c;这两个请求响应的方法看起来很相似&#xff0c;但是写获取的方法是不一样的。 前者requests 是用response.text 来获取源码&#xff0c;而 urllib.request是用 response.read() 来获取h…

数学建模--智能算法之免疫算法

目录 基本原理 应用实例 代码示例 总结 免疫算法在免疫系统研究中的应用和进展是什么&#xff1f; 如何量化评估免疫算法在不同优化问题中的性能和效率&#xff1f; 免疫算法与其他智能优化算法&#xff08;如遗传算法、粒子群优化&#xff09;相比有哪些独特优势和局限性…

【C++】C++11的新特性 — 线程库 ,原子操作 , 条件变量

勇敢就是接受发生在你身上的事&#xff0c;并把它尽力做到最好。 -- 约翰・欧文 -- C11的新特性 1 线程1.1 线程概念1.2 C中的线程1.3 线程并行1.4 锁 2 原子操作3 条件变量Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下…

编译和汇编的区别

一、编译 编译是将高级语言&#xff08;如C、C、Java等&#xff09;编写的源代码转换成计算机可以直接执行的低级语言&#xff08;通常是机器语言或汇编语言&#xff09;的过程 编译 —— 将人类可读的源代码转换为计算机可执行的指令集 编译过程 通常包括词法分析、语法分…

正点原子imx6ull-mini-Linux驱动之Linux 网络驱动实验

网络驱动是 linux 里面驱动三巨头之一&#xff0c;linux 下的网络功能非常强大&#xff0c;嵌入式 linux 中也常 常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动&#xff0c;本章我们就来学习一下 linux 里面的网络设备驱动。 1&#xff1a;嵌入式网络简介 1.1…