前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >直面海量数据集成挑战,驱动企业智能决策

直面海量数据集成挑战,驱动企业智能决策

作者头像
腾讯QQ大数据
发布2024-12-29 13:16:24
发布2024-12-29 13:16:24
1000
举报

本文共计2150 预计阅读时长7分钟

假如你是一个SaaS服务商,有成千上万家客户。每天,客户的员工、交易、业务数据从各种系统涌入,需要实时收集和处理这些海量的数据,以服务客户业务使用。如何接住这“泼天的富贵”呢?

举个例子,某SaaS服务商需要根据销售订单实时生成奖金明细,进行自动化的奖金分配和管理,用来激励销售表现,推动业务增长。该场景背后的数据流如下图所示:

业务数据进入到MySQL、Oracle等数据库后通过数据集成平台被实时同步到Iceberg/Doris湖仓系统,这些数据在短时间内需要经过复杂计算,然后生成奖金数据,最后呈现在用户面前。对于大规模运营的SaaS服务商来说,这样的数据处理“过程”每天都要面对很大的挑战。

大规模数据集成的核心挑战

挑战1:上亿的库表量级,单个表数据量大

SaaS服务商会为每个客户都设置一套独立的库表,随着客户数的不断增多,总的库表数量也会线性增加,导致库表数量非常庞大。其中某些表数据量还很大,给数据实时集成在同步性能、稳定性、数据一致性方面带来巨大挑战。

挑战2:频繁加表、减表,且源端不定时Schema变更

由于业务的变动经常会有客户新增或流失。如果新增一个客户,就会新增一套库表。频繁的加、减表对已经运行的实时同步任务稳定性带来极大的挑战。同时,客户业务随时可能对Schema进行修改,需要能实时捕获源端Schema变更,并自动将变更同步到目标端,否则会导致后续数据同步失败,进而影响SaaS服务商整体的服务质量。

腾讯云WeData数据集成方案

WeData数据集成源于腾讯内部业务孵化,经过百万亿级别的数据接入和处理验证,支持数据采集、汇聚、存储、分拣数据处理全流程,在跨云跨网环境下提供可靠、安全、敏捷的全场景异构数据源集成能力。为SaaS服务商提供实时整库、分库分表、加减表以及Schema变更等核心能力,直面以上挑战。

覆盖业务全流程:

首先在数据迁移阶段,面对海量的存量库表,WeData数据集成为用户提供了整库同步、分库分表同步能力

● 整库同步支持源端数据库结构及业务数据整体迁移到目标端,可根据原表结构自动创建目标表,无需从数据底层手动创建,可极大提高任务配置效率。

● 分库分表任务支持将来源端的多个表同步到同一张目标表,支持多个表的Schema不完全一致的同步场景。

而在生产运行阶段,为快速响应业务变更,WeData数据集成支持加表、减表及Schema自动变更能力。

● 运行阶段可监控来源端对应实例下的所有数据库,任务运行期间新增库、表可自动同步至目标端,实现业务变更的自动化处理。

● 任务增量同步阶段可捕获源端的DML(数据的插入、更新、删除操作)和DDL(新增表、新增列、修改列类型等元数据操作)事件,并将其自动同步到目标端,防止因源端变更导致的数据同步失败。

面向用户实际业务场景优化:

➢ 引入大分片模式,性能提升10倍以上

对于客户规模较大的表,社区Flink CDC将整张表拆分为几千行左右的分片,将依次对每个分片进行读取来完成存量数据的导入,但分片的计算、读取和调度都会引入额外的开销,因此存量数据同步性能受限。此外,分片的大小需要进行仔细的设置,如果单个分片较大,那么分片的读取时容易内存溢出,如果分片较小,那么分片的数量过多,维护所有分片的信息也容易导致内存溢出。

WeData实时集成引入了大分片的模式,每张表只需要划分为一个或几个大的分片,单个分片的数据一次性读取完成而不需要在内存中堆积,全量阶段同步性能可以有10倍以上的性能提升,并且客户无需关注分片大小,从而极大优化了用户的使用体验。

➢ 多表共享缓冲区,避免内存溢出

对于下游湖仓写入,WeData实时集成也进行了针对性的优化。湖仓写入一般通过数据缓冲来增加数据写入的批次,从而提升写入的性能,在整库同步中如果每张表单独维护缓冲区,很难控制总内存的使用从而导致内存溢出。WeData实时集成为所有表使用共享的缓冲区,从而可以严格控制内存的使用,彻底避免内存溢出的可能。

此外,对于写入Iceberg数据湖的场景,默认的Upsert写入方式如果短期写入的数据量较大或者提交频率较快,会对下游的数据治理和小文件合并带来较大的负担,可能导致数据治理任务堆积。WeData实时集成支持了存量数据Append写入 + 增量数据Upsert写入的模式,对于数据量较大的存量数据采用治理难度较低的Append写入模式,对于增量阶段通过索引数据落盘的方式支持了较长周期的提交,从而避免了治理任务堆积的问题。

➢ 代码自动生成,解决分库分表场景下上游表结构不一致问题

对于Schema变更的场景,Wedata数据集成能自动实时捕获常见的Schema变更类型并自动同步到下游,用户无需进行手动适配。此外,对于入湖的场景,Iceberg写入要求上下游的字段顺序和目标表要严格对齐,在一些多个表写相同下游表的场景中,上游表的表结构不一定完全一致,我们通过代码生成的方式自动对上游表发送的数据进行自动映射。

➢ 解决加减表问题,回馈开源社区

在SaaS场景下,加减表是租户变更时的常见操作。我们在支持加减表的操作中遇到了数据不一致、作业卡死等问题,我们对整体加减表流程进行了优化,解决了其中的问题并正在分批将对应修改推回到社区。

实践效果

通过以上内容,某SaaS服务商使用Wedata数据集成成功且高效的将数据实时收集并同步到了湖仓系统:

● 存量数据同步性能相比之前自建的方案提升了10倍;

● 响应业务变更的效率从天级提升到了分钟级。

该SaaS服务商成功解决了库表量大、数据量大、库表经常变更的问题,为成千上万家客户提供了优质服务。

腾讯云WeData数据集成产品的愿景是连接数据世界中各种各样的数据源,通过强大的连接能力,帮助企业无缝整合各类数据,确保信息得到充分利用,从而转化为可行的洞察和战略。

腾讯云大数据始终致力于为各行业客户提供轻快、易用,智能的大数据平台。如果您的企业在数据集成场景也面临以上挑战或有其他诉求,请立即联系我们,体验如何用我们的数据集成产品连接您的数据世界,驱动智能决策!

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档