专业的编程技术博客社区

网站首页 > 博客文章 正文

内存占用不到20m的cdc工具(内存占用c盘)

baijin 2024-10-10 04:20:18 博客文章 10 ℃ 0 评论

数据同步和迁移有很多工具,在国内常见的有:

  • datax
  • kettle
  • canal

国外比较知名的有:

  • airbyte
  • flinkcdc
  • debezium

列出的这些全部是基于java的,jvm开起来什么任务都不执行至少需要300m+的内存。如果开始跑任务后没有1g是跑不起来哪怕轻量级的任务的,更别提部分工具还是多组件的。

举一个极端点的例子:airbyte只运行一个pg到pg的任务,整个集群一共实际用了8g内存。

轻量级数据工具

一直希望有个轻量级的工具能够完成基础同步,因为绝大多数情况下也并不需要etl工作。

理想中的数据同步工具:

  • 功能:
  • 全量同步
  • 增量同步
  • 结构同步
  • 异构数据源同步。比如mysql到pg,redis到es
  • 监控。最好是基于行业协议的
  • 跨语言插件
  • 性能
  • 可控制的多实例
  • 极低的内存占用
  • 配置
  • 如果没有界面,只依赖一个简单的配置文件

cloudquery.io:golang写的cdc工具

第一次看到这个名字觉得可能是类似于presto这类计算层引擎,其实他是一个cdc工具。

CloudQuery | An open source high performance data integration platform for developers | CloudQuery

www.cloudquery.io

试用过后真是泪流满面,因为完全符合了对一个轻量级cdc工具的所有期待。

主要特点有:

  • 多样化的connector,不仅有传统的mysql、postgres等数据库,还有es、duckdb等new sql,还有aws、阿里云、airtable、google ad等三方api。妈妈再也不担心对接常见的api浪费时间了。
  • 超简单的配置


添加图片注释,不超过 140 字(可选)

这就是所有的source配置,再加上一份类似的dest配置就可以启动任务了

  • 内存!泪流满面


添加图片注释,不超过 140 字(可选)

这是运行了一整天,全量+增量的同步了近10g数据后的内存占用

  • 启动命令就是这些。连用docker都变成一件麻烦的事了
cloudquery sync ./config.yml

性能测试

使用单进程,只配置了一个source mysql同步到一个远程的pg。通过观察写入qps,稳定在600左右,如果要求不非常高的情况下,性能还是非常可观的。

比kettle强多了。

其他要点

如果想要加速,官方推荐可以配置多个souce和dest,另外可以使用source中的concurrency选项。

默认的设置是全量同步,如果需要支持增量同步,需要增加配置

backend_options:
    table_name: "cq_aws_state"
    connection: "@@plugins.postgresql.connection"

期待

如果定位是轻量级cdc工具,cloudquery已经能够满足90%以上的需求了,但如果有...就更好了。

  • 可选的ui服务
  • 无需重启就可以变更任务
  • 更多的插件类型。目前只有source和dest,常见还需要transform,其实就可以完整支持轻量etl了

cdc设计模式

cdc(Change Data Capture)在过去只是表示增量数据同步,而且还是不带etl的那种“原始”数据同步。在今天,cdc也可以是一种设计模式。

例如我们过去要对接aws的账单api存储账单信息,现在可以配置aws billing作为source,同步到数据库就完成了这项操作。

同样假如要发一篇博文,过去需要调用api才能完成,现在实际上配置一个api的dest,然后把某种数据作为source就可以完成相似的操作。

在这个路径上可以不做任何操作,也可以增加一个flink去对数据做一些操作,比如统计后向下传输5分钟内的结果,或者join其他表生产出一些新的结果。因为现在flink也可以使用sql进行操作,因此这整条链路都不需要研发参与,没有代码,效率极高。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表