我曾考虑过将PyRo用作生产环境中的后端。所以我想问
它支持集群吗?即如果一个PyRo后端发生故障,是否可以退回到使用另一个后端?如果名称服务器出现故障怎么办?
在某些大型生产系统中是否已为此目的采用了它?
最佳答案
Pyro对故障转移方案的支持有限。关键设计原则之一就是保持简单。这意味着,如果服务器发生故障,则有一种方法可以自动将客户端重新连接到服务器,但除此之外没有其他方法。如果服务器出现故障,则必须自己恢复。 Pyro主要只是提供面向对象的网络通信抽象,用于管理服务器(和客户端)的机制需要来自其他地方。
这也适用于名称服务器。如果出现故障,您有责任以某种方式检测到它并从中恢复。如果不需要逻辑名称,则可以在没有自己的名称服务器的情况下使用Pyro。
名称服务器可以使用持久性存储,这样它在发生故障时就不会丢失数据。提供的数据存储未设计为可供多个名称服务器同时使用。如果需要,您可能必须自己构建一个更具容错能力的存储后端(该存储提供程序是可插入的)。
如果故障转移(和水平扩展)是主要问题,则您可能希望专注于无状态服务器设计。但这不是Pyro明确提供或执行的。
也许以上内容足以满足您的应用需求?否则,您将不得不自己或使用其他工具来提高容错能力。
我不能回答你的第二个问题。我不知道您认为什么是“大型生产系统”,我本人也不真正知道Pyro的当前用户如何或以何种规模使用该库。