【问题标题】:Thrift server facade for clients客户端的 Thrift 服务器外观
【发布时间】:2012-05-23 20:55:38
【问题描述】:

我在服务器/客户端设计和 不知道是否有人有任何建议。

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

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

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

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

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

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

【问题讨论】:

  • 澄清这里使用的命名法:插件是托管在 Thrift 服务器中的 Thrift 服务(带有相关的 python 代码生成)吗? 客户端是否使用从特定插件生成的代码,但实际上是 Thrift 服务器的客户端?

标签: python design-patterns thrift


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 2011-01-31
    • 2014-03-16
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多