使用req/resp和pub/sub要求设计REST API

chr*_*edo 10 rest publish-subscribe

现在我正在为分布式系统设计REST接口.它是一个客户端/服务器架构,但有两种消息交换模式:

  • req/resp:最RESTful方法,它是一个CRUD接口,用于访问/创建/修改/删除服务器中的对象.
  • pub/subs:这是我的主要疑问.我需要服务器尽快向客户端发送异步通知.

在网上搜索我发现一个解决方案可能是在服务器和客户端中实现REST服务器:发布/订阅REST-HTTP简单协议Web服务体系结构?

另一种方法是实现阻塞REST,因此客户端不需要在特定端口中侦听:使用阻塞REST请求来实现发布/订阅

我想知道你会考虑哪些选项来实现像这样的接口.谢谢!

bry*_*mac 6

Web Sockets可以为服务提供一个通道来实时更新 Web 客户端。还有其他技术,如http 长轮询,其中客户端发出“阻塞”请求(如您所指),其中服务将请求保留小于超时(例如 50 秒)的时间,并在有数据时写入响应. Web 客户端立即发出另一个请求。这个循环创建了一个连续的通道,消息可以从服务器“发送”到客户端,但它是从客户端(防火墙、代理等)发起的。

有诸如socket.iosignalR和许多其他库,它们包装了这个逻辑,甚至可以从 websockets 回退到为您优雅地长轮询,并抽象出细节。

我建议编写一些示例 Web 套接字和长轮询示例只是为了理解,然后依靠上面提到的库来使其正确。