我在服务器/客户端设计方面遇到了一些麻烦 不知道是否有人有任何建议。
我有一个抽象数据存储的Thrift服务器。这个想法就是这样 会有很多客户本质上 使用服务器提供的接口的进程外插件 接收,操纵底层数据存储并提供 他们自己的数据。 将有许多其他客户只需访问数据 由服务器及其“插件”提供。
问题是这些“插件”中的一个希望提供它 拥有数据并提供该数据的接口。 服务器应该不知道插件数据或接口。
理想情况下,我希望所有客户都可以通过 主要的thrift服务器,因此它充当插件的外观。如果是客户 请求主服务器可以提供的插件提供的一些数据 委托给插件提供该数据。我想这意味着 让每个插件都是一个节俭的客户端和服务器。我写过了 python中的服务器因此可能处理不是的thrift调用 但已经定义但是可以将这些调用转发给另一个 thrift服务器IE充当代理吗?
另一种选择可能是插件只是客户端并推送数据 到服务器。但这些消息的格式 服务器不知道,并且必须足够通用 适应不同类型的数据。我不确定如何提供 这个数据对其他客户的有用接口。
据我所知,只有插件知道如何存储和操作 它所拥有的数据,所以这个想法可能不起作用。
感谢您的任何建议。欢迎任何建议。
答案 0 :(得分:0)
听起来你需要某种机制来将请求与可用的不同插件相关联。理想情况下,为每个插件发布的每组操作应该有不同的URL路径。
我会考虑实现一种插件的URL路径的地图/字典。然后,对于收到的每个请求,在地图中执行查找并获取关联的插件并相应地向其发送请求。如果地图中没有条目,则可以发送重定向/代理。例如,如果网址= http://yourThriftServer/path/operation
,则操作或路径 和 操作将映射到插件。
额外的步骤是实现一种元请求,客户端可以查询服务器中可用的URL路径/操作。