【发布时间】:2015-08-01 16:16:49
【问题描述】:
我会尽量保持简短,并将问题公开讨论。
我有一个 Rails 应用程序,它是一个静态代码库,运行在 9 个不同的服务器上,所有相同的数据库架构,但当然具有不同的值。
我编写了一些 SQL 来查询一些美元总额,并将其放入 rake 任务或 sidekiq 工作者中,并让它每周触发一次以生成数据。最初,我只是想将每个服务器的结果数据放入邮件程序中,然后将其邮寄给需要数据的人。这很简单。
但这有个问题,我们需要在 highcharts 或其他图表引擎中查看随时间变化的指标。
这是我的想法。
- 创建 sidekiq 工作线程并按计划解雇它
- 从每个服务器获取结果数据并通过 Postgres 将其填充到目标服务器(不知道如何执行此操作)
- 目标服务器将构建一个非常简单的 Rails 应用程序,在从源服务器通过 postgres(以某种方式)填充数据后,该应用程序将具有一个带有指标的模型和每个服务器(即服务器 1 服务器 2 等)的关联,读取 HighCharts 中的数据并呈现视图
到目前为止,这就是我的思考过程。当 sidekiq 工作人员触发时,我不确定如何通过实时 postgres 调用从源服务器获取数据。这就是问题#1。问题 #2 或更类似于问题 #2 是,这是否是在目标 Rails 服务器上创建某种消耗性 API 的更好用例?如果是这样,最好的起点是什么。
如果我的问题和思考过程不清楚,请告诉我,以便我更详细地澄清和解释。
干杯!
【问题讨论】:
-
所以你有 9 个 Rails 应用程序实例在 9 个不同的服务器上运行,每个服务器都有自己的数据库?我会假设你有理由需要这种分离。如果我没看错,您是在询问通过 Rails/Sidekiq 从这 9 个数据库中聚合信息。您可以为这 9 个节点编写一个 api 端点,并让您的报告应用程序根据需要查询它们。或者...(字符不足,请参阅下一条评论)...
-
您可以将 9 个节点设置为具有双数据库连接(1 个用于本地,1 个用于共享报告数据库)。所有节点都可以写入报告数据库,然后您的报告应用程序将拥有可用于构建您需要的任何类型报告的聚合信息。这两种方法都运作良好,并且各有优缺点。
-
@SeanHuber 实际上是的,分离是有充分理由的,因为出于安全/合规目的,必须将每个客户客户端服务器隔离。所以数据集是相同的,但具有不同的值。我在想,在 9 服务器上编写一个简单的 API 端点,允许对这个特定数据/功能的获取请求可能是最好的,然后将该数据拉入报告应用程序。我是 API 新手,所以你对如何开始编写 API 有什么建议吗?这将是我的第一个真正的 API。
-
@SeanHuber 也可以设置双数据库连接,最好的方法是什么?我以前从未这样做过,所以这对我来说是新的。我假设它是我可以为目标应用服务器设置的 database.yml 中的某些内容,它只会根据我在每个源服务器上创建的 AR 对象远程更新表?还是我走远了?感谢您的友好和有用的建议。 :)
标签: ruby-on-rails postgresql ruby-on-rails-4 highcharts rails-api