整体和微服务架构的API /服务使用之间是否存在技术差异?

时间:2019-04-07 12:32:33

标签: java spring-boot microservices spring-cloud netflix-eureka

我正在研究微服务概念。 我做了一个小演示,了解了整体和微服务应用程序之间的区别。 (架构上的差异也很酷!) 演示:使用spring-boot,Eureka,使用客户端服务发现的spring-cloud。

我还试图了解客户端与服务器端的服务发现。 后来我苦苦挣扎,发现很难理解两者之间的技术区别。 从整体应用程序调用API。以及从另一个微服务应用程序调用微服务。 (例如窗帘下方/后面实际发生的事情)

对于实例 考虑以下来自整体应用程序的API。可以从另一个Monolith应用程序中使用。/micorservice

A) GET API:http://127.0.0.1:8080/projects 作为传统的REST API,我所知道的以及我们的期望。

考虑这个来自微服务应用程序(例如Eureka Client)的API

B初始)GET API:http://localhost:18082/products 后来被转换为用于服务发现目的

B-new) http://product-info-service:18082/products

因此,根据我的观察,Eureka Server在其服务注册表中包含这些服务名称。 每当任何注册的Eureka客户端使用其特定的“服务名称”请求上述微服务时,eurekaServer都会进行查找,确定是否找到完美匹配并转发请求,该请求就会得到处理。

我的关注: 那么,是否全部都在内部发生?是整体还是微服务? 我的意思是,微服务中的发现服务器是否像API一样在内部调用特定的微服务?  还是Monolith API调用与微服务服务调用不同?或仅仅是一个抽象。

PS:仍在学习,事先道歉如果我在这里问任何含糊或困惑的问题时犯了错误。请纠正我。谢谢

我的git-hub链接:https://github.com/aniketrb-github/microservices 我要关注的内容是JavaBrains

1 个答案:

答案 0 :(得分:1)

您是正确的,它实际上只是服务的抽象和去耦。您唯一要介绍的是另一个API请求。在 A 中,您拥有client -> projects,而在微服务体系结构中,您拥有client -> api-gateway -> projects。这意味着您现在已经创建了一个分布式系统,该系统具有很多优点和缺点(单片式架构也是如此)。

总体而言,它实际上是在做同样的事情,返回产品列表。它只是从另一个服务获取产品列表,而不是从整体应用程序内部获取。 Eureka被用来发现其他服务在哪里,因此它知道微服务相对于您的网关应用程序在哪里。

为了将来,您希望开始学习容错以及运行可靠的微服务体系结构的其他方面。