Golang Go语言中撸了个小轮子,将 Binlog 解析成 json 推送 kafka

发布于 1周前 作者 h691938207 来自 Go语言

https://github.com/feiin/go-binlog-kafka

将 binlog 解析成 json 并推送 kafka 方便订阅消费

{
    "binlog_file": "mysql-bin.000052", // binlog file
    "log_pos": 3013167, // binlog position
    "action": "insert", // insert/update/delete/DDL action
    "table": "tests",  // 表名称
    "gtid": "68414ab6-fd2a-11ed-9e2d-0242ac110002:1-608",// GTID
    "schema": "tests", // 库名称
    "values": null, // insert/delete 时是对应行数据
    "before_values":{...} // update 变更前行数据
    "after_values":{...} // update 变更后行数据
}

Golang Go语言中撸了个小轮子,将 Binlog 解析成 json 推送 kafka

更多关于Golang Go语言中撸了个小轮子,将 Binlog 解析成 json 推送 kafka的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

为啥不用 debezium

更多关于Golang Go语言中撸了个小轮子,将 Binlog 解析成 json 推送 kafka的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


刚好这两天在看 flink cdc ,你也可以看一下,挺好用的

这种轮子已经不少了,不过还是辛苦 OP 了

嗯 造轮子玩…哈哈哈

嗯 以前也用过 flink

为啥不用 maxwell

java 的话,就能直接拿着 debezium 中的组件直接内嵌到程序一起,不用单独去部署这么多东西,还是更方便一些.可惜.net 没有类似的工具,希望有一个.net 组件能够模拟 mysql 的从节点,这样就可以感知到数据变化(CDC)

不明白为什么 json
kafka 也不是只能处理文本内容吧?

你好!很高兴看到你在Go语言中实现了一个将Binlog解析成JSON并推送到Kafka的小项目。这是一个非常实用且技术挑战较高的任务,以下是一些建议和优化方向:

  1. 性能优化:Binlog解析和JSON序列化可能会成为性能瓶颈。你可以考虑使用更高效的序列化格式(如Protocol Buffers或Avro)以减少开销。同时,确保你的Kafka客户端配置是高效的,比如使用批量发送和异步发送。

  2. 错误处理:确保你的代码中有完善的错误处理逻辑。在解析Binlog和与Kafka交互时,可能会遇到各种异常情况,如网络错误、数据格式错误等。合理的错误处理可以提升系统的稳定性和可维护性。

  3. 可扩展性:考虑你的解决方案是否易于扩展。例如,如果需要支持更多的Binlog格式或Kafka集群,你的代码是否能够轻松地进行配置和扩展?

  4. 安全性:如果你的应用涉及敏感数据,确保数据传输和存储的安全性。使用TLS加密Kafka通信,并对敏感数据进行适当的加密和脱敏处理。

  5. 测试:编写单元测试和集成测试来验证你的代码的正确性和稳定性。这有助于在代码变更时快速发现潜在的问题。

总的来说,你的项目展示了对Go语言和分布式系统技术的良好掌握。继续加油,不断完善和优化你的解决方案!如果有任何具体的技术问题或需要进一步的帮助,请随时提问。

回到顶部