【问题标题】:Is there a technical difference between the API/Service consumption of monolith & micro-service architecture?单体架构和微服务架构的 API/Service 消费有技术上的区别吗?
【发布时间】:2019-08-28 18:05:37
【问题描述】:

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

我还尝试了解客户端与服务器端的服务发现。 后来我苦苦挣扎,发现很难理解两者之间的技术差异...... 来自单体应用的 API 调用。以及来自另一个微服务应用程序的微服务调用。 (就像窗帘下面/后面实际发生的事情)

例如, 考虑一下单体应用程序中的以下 API。可以从另一个单体应用程序中使用。/micorservice

A) 获取 API:http://127.0.0.1:8080/projects 作为传统的 REST API,它是我所知道的和我们所期望的。

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

B-initial) GET API:http://localhost:18082/products 后来转化为服务发现用途

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

据我观察,Eureka Server 在其服务注册表中包含这些服务名称。 每当任何已注册的 Eureka 客户端使用其特定的“服务名称”请求上述微服务时,eurekaServer 都会进行查找,如果找到完美匹配则解析并转发请求,然后处理请求。

我的担忧: 那么,这里内部发生​​的一切都一样吗?是单体还是微服务? 我的意思是,微服务中的发现服务器是否像 API 一样在内部调用特定的微服务? 还是单体 API 调用与微服务服务调用不同?或者它只是一个抽象。

PS:还在学习中,如果我在这里问任何模糊或困惑的事情时犯了错误,请提前道歉。请纠正我。谢谢

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

【问题讨论】:

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


    【解决方案1】:

    你是对的,它实际上只是服务的抽象和解耦。您唯一要介绍的是另一个 API 请求。在A中,你有client -> projects,而在微服务架构中你有client -> api-gateway -> projects。这意味着您现在已经创建了一个具有许多优点和缺点的分布式系统(就像单体架构一样)。

    总的来说,它本质上是做同样的事情,返回一个产品列表。它只是从另一个服务中获取产品列表,而不是从单一应用程序内部。 Eureka 被用于发现其他服务的位置,因此它知道微服务相对于您的网关应用程序的位置。

    对于未来,您需要开始学习运行可靠微服务架构的容错和其他方面。

    【讨论】:

    • 感谢您的回复@devshawn。是的,即使我最初也有同样的想法,但觉得用谷歌搜索/发布问题并了解其他观点对此有何看法。它只是一个必须理解的架构概念/抽象以及单体和微服务的优缺点以及必须在什么样的业务场景中使用。也感谢未来学习的指针。
    • 感谢您之前的意见。确实,它在学习微服务和所有相关概念(如ribbon、zuul、hystrix、eureka、spring cloud bus 等)方面是一次很棒的体验。出于好奇,我想知道,我应该如何加强这种学习体验?学习 Docker 和 Kubernates 进行微服务部署等将是一个很好的补充……不是吗?……如果可能的话,你能提供一些意见/建议吗?提前致谢。
    猜你喜欢
    • 2015-10-02
    • 2021-07-23
    • 2019-07-24
    • 2018-10-12
    • 2014-06-10
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多