我正在为我们的机架应用程序构建服务发现库。它基于ZooKeeper,并利用ZooKeeper的临时znode,以便当服务失去与ZooKeeper的连接(崩溃,重新启动,网络分区)时,它在服务注册表中的条目会自动消失。
我们的大多数机架应用程序都由unicorn.rb管理。
我不知道在哪里进行服务注册。我不能让每个工作进程都能让独角兽产生处理服务注册。因此,似乎我需要在工人中选择一个可怕的IPC来选举一个负责服务注册的人;或者我需要独角兽选举并通知工人;或者我需要在unicorn.rb中进行服务注册。
最后一个选项似乎最难看。但是我该怎么做?在after_fork?