API网关(Zuul)合并两个微服务响应
Posted
技术标签:
【中文标题】API网关(Zuul)合并两个微服务响应【英文标题】:API gateway (Zuul) merging two micro service response 【发布时间】:2019-09-12 22:42:20 【问题描述】:我有两个微服务,用户微服务和订单微服务。
用户微服务返回用户详情,订单微服务返回用户订单详情。
http://localhost:8080/microservice1/getuser
"id":"100","name":"test"
http://localhost:8081/microservice2/getorders
"userid":"100","orders":"orderid":"5001","productname":"mobilephone"
我使用 Spring cloud Zuul 作为 API 网关,将请求路由到每个微服务。
http://localhost:9090/api/microservice1/getuser
http://localhost:9090/api/microservice2/getorders
现在从 UI,我需要调用两个端点
他们有什么方法可以合并这两个微服务的响应吗? "id":"100","name":"test","orders":"orderid":"5001","productname":"mobilephone"
这样客户端只需要调用一个端点http://localhost:9090/api/getdetail
我们如何在 API 网关级别实现这一点?
【问题讨论】:
【参考方案1】:Zuul 不应该用于聚合响应,您可以创建编排微服务服务并在内部使用 restTemplate 获取所有响应并根据需要聚合。
保持Zuul无状态,网关不应该有任何逻辑或有状态。
【讨论】:
感谢@vaquar Khan,在第三个编排微服务中,如何同时发送请求,我们可以使用响应式方法还是传统的方法,例如发送一个请求然后等待另一个 如果您想发送合并响应,那么如果您想将请求或响应转储到 db 或 rabbit/kafka 中,则应该使用同步调用,然后使用异步调用。如果您的基础设施支持,反应式是最好的。以上是关于API网关(Zuul)合并两个微服务响应的主要内容,如果未能解决你的问题,请参考以下文章