返回首页

gnata:使用 AI 将 JSONata 移植到 Go,仅需 $400

工程师 Reco 使用 Cursor AI 将 JSONata 移植到 Go,创建了 gnata 库。该项目提供了 1000 倍速度提升,并通过放弃 Node.js 集群每年节省 $500,000。该案例展示了影子部署和参考实现中 bug 的检测。

如何使用 AI 将 JSONata 重写为 Go:节省 $500k
Advertisement 728x90

使用 AI 在 Go 中重写 JSONata:gnata 库与 50 万美元节省

Reco 首席数据工程师 Nir Barak 使用 AI 助手 Cursor,仅用七小时就生成了 gnata 库——一个用 Go 实现的 JSONata。令牌费用仅 400 美元,通过淘汰 Node.js 基础设施并优化规则引擎,为公司每年节省 50 万美元。

在生产环境中扩展 JSONata 的挑战

JSONata 是一种用于查询和转换 JSON 的声明式语言,在威胁检测领域应用广泛。官方 JavaScript 实现与 Reco 的 Go 数据管道不兼容。公司在 Kubernetes 上运行 Node.js 集群:多达 200 个副本,通过 Go 服务发出的 RPC 处理 JSONata 表达式。这导致 IP 地址短缺,仅基础设施成本每年就高达 30 万美元。

迁移方案受 Cloudflare 案例启发:使用原实现官方测试套件。AI 在目标语言生成代码,直至所有测试通过。Reco 应用了 jsonata-js 中的相同 1778 个测试。

Google AdInline article slot

移植与测试过程

整个工作仅耗时七小时实际时间:

  • Cursor 分析了 JSONata 规范和测试。
  • 生成 1.3 万行 Go 代码。
  • 迭代修复失败,直至实现全覆盖。

部署采用影子模式:gnata 与 jsonata-js 并行处理流量,记录任何差异。三天内处理数十亿事件——零错误。该库还发现了参考实现的不一致之处:jsonata-js 有时会违反自己的规范。

Source: Habr (https://habr.com/ru/news/1015970/)

Google AdInline article slot

经济影响与优化

淘汰 Node.js RPC 集群每年节省 30 万美元。另外 20 万美元来自规则引擎重构:之前为绕过 JSONata 限制而启动数万个 goroutine;现在直接使用 gnata。

总体而言,包括影子期在内,一周完成集成。Barak 称此为“外科手术式重构”——AI 生成针对性代码,聚焦瓶颈而非全面重建。

gnata 的性能优势:

Google AdInline article slot
  • 简单表达式加速高达 1000 倍。
  • 与 JSONata 测试完全兼容。
  • 开源代码惠及社区。

关键收获

  • gnata:1.3 万行 Go 代码,1778/1778 测试通过。
  • Cursor 令牌费用 400 美元 vs. 年节省 50 万美元。
  • 影子部署发现了 jsonata-js 的 bug。
  • 淘汰 200+ Node.js 副本,解决了 IP 地址短缺。
  • 新阶段:用 AI 针对性重构遗留代码。

gnata 库已公开可用,展示了利用 AI 将 JS 引擎移植到 Go 的可行性。对于中高级开发者,这是自动化迁移并保留规范的典型案例研究。

— Editorial Team

Advertisement 728x90

继续阅读