1

我在服务器/客户端设计方面遇到了一点麻烦,想知道是否有人有任何建议。

我有一个抽象数据存储的 Thrift 服务器。这个想法是,将有许多客户端本质上是进程外插件,它们使用服务器提供的接口来接收、操作底层数据存储并提供自己的数据。将有许多其他客户端简单地访问服务器及其“插件”提供的数据。

问题案例是当这些“插件”之一希望提供自己的数据并提供该数据的接口时。服务器不应该知道插件数据或接口。

理想情况下,我希望所有客户端都通过主 thrift 服务器访问功能,因此它充当插件的外观。如果客户端请求插件提供的某些数据,则主服务器可以委托插件提供该数据。我想这意味着每个插件都是一个节俭的客户端和服务器。我已经用 python 编写了服务器,因此可能可以处理尚未定义的节俭调用,但是否可以将这些调用转发到另一个节俭服务器 IE 充当代理?

另一种方法是让插件仅作为客户端并将数据推送到服务器。但是这些消息的格式对于服务器来说是未知的,并且必须足够通用以适应不同类型的数据。我不确定如何为其他客户提供一个有用的接口来处理这些数据。

据我所知,只有插件知道如何存储和操作它拥有的数据,所以这个想法可能行不通。

感谢您的任何建议。欢迎任何建议。

4

1 回答 1

0

听起来您需要某种机制来将请求与可用的不同插件相关联。理想情况下,为每个插件发布的每组操作都应该有不同的 URL 路径。

我会考虑实现一种插件 URL 路径的映射/字典。然后对于收到的每个请求,在地图中查找并获取关联的插件并相应地发送请求。如果地图中没有条目,则可以发送重定向/代理。例如,如果 URL = http://yourThriftServer/path/operation,则操作或路径操作将映射到插件。

一个额外的步骤是实现一种元请求,客户端可以查询服务器中可用的 URL 路径/操作。

于 2012-05-18T09:06:06.410 回答