一个API的两个通道



我们有一个SaaS。它由单页应用程序(客户端(,网关,数据服务1,数据服务2和通知服务组成。客户与Gateway(使用REST(和服务路由请求将请求路由到适当的数据服务(1或2(或进行自己的计算。客户端的一个请求可以在Gateway Service上的多个多次上分配。结果是从子服务的响应聚集。通知服务 - 是一项使用MQ和Websocket与客户端连接的其他用户进行更改的信息。通知可以通过任何服务发布。

与Enginers一起,我们讨论了如何优化过程。目前,Gateway花费大量时间仅等待数据服务的响应的问题。提案之一是一旦消息推向数据服务,请让Gateway服务响应200正常运行,并让客户等待操作进度投掷通知频道(WebSocket Connection(。

这意味着客户端总是发送HTTP请求进行操作,并获得Websocket从不同端点执行操作的确认。

可以通过提供将隐藏所有内部复杂性的JS客户端库来隐藏此模式。

我认为这种方法有问题。我从未见过这样的设计。但是除了复杂性和两个失败(而不是一个(外,我没有有价值的论点。

  1. 您如何看待这种设计方法?
  2. 您看到它有任何潜在的问题吗?
  3. 您知道与这样的方法?

由于您的服务速度很慢,因此将其视为批处理作业可能是有意义的。

  1. 客户将作业请求发送到网关。
  2. 网关在接受客户端接受后立即返回工作ID。
  3. 客户定期轮询该作业ID的结果的网关。

最新更新