当前位置: 首页 > 知识库问答 >
问题:

在API网关内实现Aggregation微服务并使用服务发现的最佳实践

周马鲁
2023-03-14

我们目前正在研究将我们现有的monolith应用程序转换为沿着一个API网关运行的细粒度微服务的可能性,以便进行协调。

我有这样一个案例,其中有三个微服务:

1-产品微服务:面向产品的REST API服务。2-Category微服务:一个针对类别的REST API服务。3-聚合微服务:一个REST API服务,它连接类别列表和它们的产品,然后将它们返回到一个模型中。

根据附上的图像,任何客户端都可以向API网关发送请求,指定除了像HTTP方法和请求体这样的所有请求选项之外,他想要从哪个微服务中检索信息。

API网关将接收客户端的请求,并使用服务发现将其重新路由到指定的微服务。

我的问题是,如果客户端尝试联系聚合微服务怎么办?这将导致对API网关的请求,然后API网关将重新路由到聚合服务。然而,聚合服务需要同时联系类别和产品服务,以便用统一的模型回复客户端。这要求聚合微服务也再次联系API网关,以便它可以将其请求重新路由到类别和产品微服务

这里似乎有很多通信流量发生,是我遗漏了什么,还是这是实现这种场景的正确方法。

谢谢

API网关示例

共有1个答案

阮俊弼
2023-03-14

在您的情况下,最简单的方法是进行服务编排。域服务不会彼此进行对话,聚合服务将是协调器,它将调用两个域服务,合并结果并将它们返回给客户机。网关应该只与orchestrator联系,而orchestrator也是向客户端隐藏内部服务复杂性的门面。

另一种方法是服务编排,其中通信是分散的,每个服务决定它应该联系哪些其他服务。然而,它要复杂得多,只有当你拥有大量的微服务时,它才是有价值的。例如,您必须防止循环,单独部署更困难,因为您必须考虑依赖关系...

 类似资料:
  • 我们能在Spring Cloud API网关和没有服务发现的情况下生存吗?

  • 当我们部署到pcf时,Netflix eureka、zuul、ribbon、feign spring cloud配置不有用?(如果是,在pcf中有哪些可选方案以及如何配置它们?) 由于构建微服务遵循CI/CD方法,开发人员在推送代码之前如何验证其微服务的工作,因为我们在生产PCF中没有使用eureka、zuul、ribbon、feign。(如何在developer Machine中模拟pcf环境?

  • 问题内容: 我想使用socket.io将数据从服务器推送到浏览器,但是该项目是java tomcat之一,并且 Github中 有许多实现的服务器实现。他们中的大多数人都说 过时了, 或者有更好的版本可用。谁能建议我一个好的实现。 而且,我看到了许多有关使用广播的演示和示例代码。我的要求是将不同的消息推送到不同的客户端。有人可以指出一些有关此类内容的优秀演示或教程吗? 谢谢 问题答案: 作为作者,

  • 在单体架构时,因为服务不会经常和动态迁移,所有服务地址可以直接在配置文件中配置,所以也不会有服务发现的问题。但是对于微服务来说,应用的拆分,服务之间的解耦,和服务动态扩展带来的服务迁移,服务发现就成了微服务中的一个关键问题。 服务发现分为客户端服务发现和服务端服务发现两种,架构如下图所示。 这两种架构都各有利弊,我们拿客户端服务发现软件Eureka和服务端服务发现架构Kubernetes/SkyD

  • 我尝试基于Akka创建一些使用CQRS的微服务。所以我的微服务有Httpendpoint的写端(向集群发送命令)和读端(从数据库读取投影),但这不是主要问题。由于许多微服务,问题出现了为客户端收集复杂的API。我找到了答案:API网关模式。但我还有下一个问题:如何实现它? > < li> 我可以创建单独的项目,该项目将实现API网关模式(在简单的情况下,它是一个反向代理)。完整堆栈将: 赞成的意见

  • 背景 当前有两个服务,分别是user-service和order-service,nacos服务列表中无法发现两个服务 排查 Nacos v2.2.3 依赖已引入,配置文件已配置addr 运行时未出现连接nacos的日志: 希望大佬们可以帮忙看看是什么问题 问题程序链接 https://oss-20001.oss-cn-qingdao.aliyuncs.com/cloud-demo.zip