两个频道合一 API
Two channels for one API
我们有 SaaS。它由单页应用程序(客户端)、网关、数据服务1、数据服务2和通知服务组成。
客户端与网关(使用 REST)对话,服务将请求路由到适当的数据服务(1 或 2)或进行自己的计算。
来自客户端的一个请求可以在网关服务上拆分为多个。结果是来自子服务的响应的聚合。
Notification Service - 是一种将其他用户使用 MQ 和 WebSocket 连接所做的更改的信息推送到客户端的服务。任何服务都可以发布通知。
我们与工程师讨论了如何优化流程。
目前,网关花费大量时间等待数据服务响应的问题。
其中一项提议是让网关服务在消息推送到数据服务后立即响应 200 Ok,并让客户端等待操作进度抛出通知通道(WebSocket 连接)。
这意味着客户端始终发送 HTTP 操作请求,并从不同的端点确认操作是由 WebSocket 执行的。
可以通过提供 JS 客户端库来隐藏此模式,这将隐藏所有这些内部复杂性。
我认为这种方法有问题。我从未见过这样的设计。但我没有反对它的有价值的论据,除了复杂性和两点故障(而不是一个)。
- 您如何看待这种设计方法?
- 您认为它有任何潜在问题吗?
- 你知道 public 解决方案吗
这样的做法?
由于您的服务速度很慢,因此将其更像是批处理作业可能更有意义。
- 客户端向网关发送作业请求。
- 网关 returns 从客户端接受后立即的作业 ID。
- 客户端定期轮询网关以获取该作业 ID 的结果。
我们有 SaaS。它由单页应用程序(客户端)、网关、数据服务1、数据服务2和通知服务组成。 客户端与网关(使用 REST)对话,服务将请求路由到适当的数据服务(1 或 2)或进行自己的计算。 来自客户端的一个请求可以在网关服务上拆分为多个。结果是来自子服务的响应的聚合。 Notification Service - 是一种将其他用户使用 MQ 和 WebSocket 连接所做的更改的信息推送到客户端的服务。任何服务都可以发布通知。
我们与工程师讨论了如何优化流程。 目前,网关花费大量时间等待数据服务响应的问题。 其中一项提议是让网关服务在消息推送到数据服务后立即响应 200 Ok,并让客户端等待操作进度抛出通知通道(WebSocket 连接)。
这意味着客户端始终发送 HTTP 操作请求,并从不同的端点确认操作是由 WebSocket 执行的。
可以通过提供 JS 客户端库来隐藏此模式,这将隐藏所有这些内部复杂性。
我认为这种方法有问题。我从未见过这样的设计。但我没有反对它的有价值的论据,除了复杂性和两点故障(而不是一个)。
- 您如何看待这种设计方法?
- 您认为它有任何潜在问题吗?
- 你知道 public 解决方案吗 这样的做法?
由于您的服务速度很慢,因此将其更像是批处理作业可能更有意义。
- 客户端向网关发送作业请求。
- 网关 returns 从客户端接受后立即的作业 ID。
- 客户端定期轮询网关以获取该作业 ID 的结果。