如何在微服务中处理从 UI 到 API 的 REST 调用
Posted
技术标签:
【中文标题】如何在微服务中处理从 UI 到 API 的 REST 调用【英文标题】:How to handle REST call from UI to API in microservices 【发布时间】:2018-09-24 08:40:31 【问题描述】:我们已经开始实施我们的单体到微服务架构。我们发现即使是驱动消息队列也比 REST API 更持久。但是,我们遇到了一个基本问题。
例如,用户在我们的网站上创建了一个订单,该订单作为 HTTP 请求发送到我们的 API 网关,并将请求推送到队列。一些操作继续,结果被推回队列。
现在我不能长时间持有这个休息 API 请求。我们对实施这一点一无所知。任何帮助是极大的赞赏。我们如何将同步 HTTP 请求 API 调用转换为异步响应?
【问题讨论】:
您需要什么回应?如果您需要响应,那么最好在没有队列的情况下同步实现所有内容。 【参考方案1】:用户交互不应排队。用户对产品的要求,它必须被满足。没有两种方法。另一方面,队列可以帮助您管理用户未积极参与的后端流程。 现在订单很棘手,当用户下订单时,后端会发生很多事情。 但是您只需要生成一个订单 ID,其余的事情都可以延迟。
现在对于设计,我们可以先下订单,然后看看我们如何实现这一点,如果我们做得好,否则我们回信给用户。 如果看到他的订单被取消,这对用户来说不是一个很好的体验,但如果你能确保减少取消,这很好。您即时生成 orderid 并使用 orderID 推送请求以供稍后处理。
为简单起见,您需要考虑为订单执行的关键操作。 (这需要减少到最低限度)并且您进行同步,或者如果您将其放入队列但确保您确保 maxTimeInQueue 并弹出这些请求并检查状态以响应用户。 下订单时,您会进入接受付款详细信息的阶段,这是一个让您有时间快速检查库存等内容的地方。 同样,您需要查看自己的流程,从同步调用开始,然后开始消除不需要的调用并减少某些调用的额外毫秒。只要用户是循环,就可以避免排队。
从技术上讲,您的所有请求都会进入队列,如果 http 请求进入队列,从那里提取它们。如果您确实需要使用队列,则可以通过删除使处理速度变慢但有超时、快速失败并重新查看订单(流程)旅程的内容来利用它
【讨论】:
以上是关于如何在微服务中处理从 UI 到 API 的 REST 调用的主要内容,如果未能解决你的问题,请参考以下文章
如何在微服务和API网关架构中对不同的配置文件进行身份验证和授权