我正在编写一个充当代理的 Rails 应用程序,因此特此称为代理。这个想法是,用户应该能够通过 Web UI 管理他的服务器,即使他的服务器关闭,该用户界面也始终启动并运行。
为了实现这一点,代理需要始终与服务器保持开放连接。为此,我使用 daemonz 创建了一个后台进程。接受来自服务器的传入连接并生成不断监听套接字的线程。
现在我有两个问题:我需要能够从我的 Rails Controller 在这些套接字上发送消息,并且我需要知道使用哪个套接字才能到达正确的服务器。我打算使用 ConnectionManager 类来为我处理这个问题,但我不知道这样的类适合 Rails 结构的位置,而且我不知道如何创建对象和两个进程都可用的套接字。
这提出了两个问题:
- 连接管理器属于哪里?
- 如何在进程之间共享连接管理器和套接字?
如果您只知道第一个问题的答案,请继续回答。我可能应该为我的第二个问题创建一个单独的帖子。
最佳答案
在 Rails/Ruby 中构建这似乎不是一个有用的东西。
可能更有用的是 Rails 管理应用程序,它在幕后配置了现有的负载均衡器/代理(例如 haproxy)。
您可以在 Rails 应用程序中拥有服务器/端口/配置的映射,然后将其投影到 haproxy 配置中并重新启动负载均衡器。一个很好的起点是 haproxy-tools gem ,它允许您解析/生成 haproxy 配置文件。
重写您自己的负载均衡器是没有意义的,即使您打算这样做,Ruby/Rails 也是一个糟糕的技术堆栈。
关于ruby-on-rails - 连接管理器安装在 Rails 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653085/