如何实时同步旧系统和新系统?

问题描述 投票:0回答:0

我有一个带有 MySQL 数据库的基于 grails 的遗留系统。我在现代 Spring Boot 3 和 MongoDB Atlas 数据库中逐步重写了系统。我不能只关闭遗留系统并替换它,我只想重写遗留系统中的写操作(创建、更新和删除)。所以,我写了一个遗留系统和新系统之间的同步机制。为此,我编写了一个同步项目并使用了 MongoDB Atlas 触发器 + 函数。

目前流程如下:

  1. 我使用 REST API 调用从遗留项目控制器调用现代 Spring 项目以进行所有写操作(创建、更新和删除)。
  2. 我将新实体保存在基于MongoDB Atlas的新项目数据库中。
  3. 在实体上执行触发器写入并执行 MongoDB Atlas 函数。此函数将写入事件发送到同步项目。
  4. sync项目接收到write事件,将新实体转化为直接在legacy数据库中执行的mysql insert、update或delete进行更新。同步项目还保留旧实体和新实体之间的链接以供进一步调用。

有了这个机制,我不需要更新遗留系统中的任何读取操作,因为遗留数据库是由同步项目更新的。所有系统都按预期工作,但我必须在遗留控制器中执行 Thread.sleep 以等待 MongoDB Atlas 触发器 + 函数执行和遗留数据库更新。

这种等待不是真的可以接受,但我不知道我能做些什么来解决这个问题。

你有什么想法吗?

mongodb spring-boot data-synchronization
© www.soinside.com 2019 - 2024. All rights reserved.