Ruby on rails 在rails应用程序之间同步ActiveRecord结构的最佳方法

Ruby on rails 在rails应用程序之间同步ActiveRecord结构的最佳方法,ruby-on-rails,ruby,activerecord,distributed-system,Ruby On Rails,Ruby,Activerecord,Distributed System,我正在开发一个由rails应用程序组成的分布式系统。位于不同地理位置的多台服务器产生一些数据,这些数据应与单个云服务器同步,然后分布在“本地”服务器之间。换句话说,共享状态存储在“全局”服务器上,部分存储在“本地”服务器上,其更改由“本地”服务器延迟实现 要同步的ActiveRecord模型在“本地”服务器和“全局”服务器上具有相同的定义。但是,它们只是通过一个开发人员约定进行单独维护。因此,可能存在一些同步问题,包括模型定义的差异 在服务器之间共享模型定义并实现其验证的最佳方式是什么 我提出的

我正在开发一个由rails应用程序组成的分布式系统。位于不同地理位置的多台服务器产生一些数据,这些数据应与单个云服务器同步,然后分布在“本地”服务器之间。换句话说,共享状态存储在“全局”服务器上,部分存储在“本地”服务器上,其更改由“本地”服务器延迟实现

要同步的ActiveRecord模型在“本地”服务器和“全局”服务器上具有相同的定义。但是,它们只是通过一个开发人员约定进行单独维护。因此,可能存在一些同步问题,包括模型定义的差异

在服务器之间共享模型定义并实现其验证的最佳方式是什么

我提出的解决方案是将模型定义移动到一个单独的版本库(gem),在服务器之间共享,并使用序列化和反序列化(
as_json
from_json
方法),以确保云服务器在同步时接收到的模型结构是正确的


有没有更惯用的方法呢?

我认为没有“惯用”的方法,只是因为人们很少这样做。每一种情况都是一片独特的雪花。你的解决方案是一种有效的可能性。如果你选择这个,那么你应该考虑在所有服务器之间使用UUID作为主键或另一个UNIQ ID机制。我会考虑创建一个API,而不是共享数据库。API可以在所有应用程序之间保持稳定,并且不依赖于持久性层。