连接管理器在哪里适合轨道?

时间:2011-10-04 19:32:33

标签: ruby-on-rails ruby-on-rails-3 sockets daemon

我正在编写一个充当代理的rails应用程序,因此在此称为代理。我们的想法是,用户应该能够通过Web UI管理他的服务器,即使他的服务器已关闭,它也始终正常运行。

要实现此目的,代理需要始终保持与服务器的开放连接。为此,我使用daemonz创建了一个后台进程,该进程接受来自服务器的连接以及不断监听套接字的spawns线程。

现在我有两个问题:我需要能够从我的rails控制器发送这些套接字上的消息,我需要知道要使用哪个套接字才能到达正确的服务器。我计划使用ConnectionManager类来为我处理这个问题,但我不知道这样的类适合于rails结构,我不知道如何使对象和套接字可用于这两个过程。

这提出了两个问题:

  1. 连接管理器属于哪里?
  2. 如何在进程之间共享连接管理器和套接字?
  3. 如果您只知道第一个问题的答案,请继续回答。我可能会为第二个问题创建一个单独的帖子。

1 个答案:

答案 0 :(得分:0)

在Rails / Ruby中构建这似乎不太有用。

可能更有用的是Rails管理应用程序,它可以配置像haproxy这样的现有负载均衡器/代理。

您可以在Rails应用程序中拥有服务器/端口/配置的映射,然后将其投影到haproxy配置中并重新启动负载均衡器。一个很好的起点是haproxy-tools gem,它允许你解析/生成一个haproxy配置文件。

重新编写自己的负载均衡器是没有意义的,即使你打算这样做,Ruby / Rails也是一个糟糕的技术堆栈。