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

微服务的五大组件好多都停用了,还需要学吗?

赵华彩
2024-09-15

如图,微服务的五大组件:
1.Eureka:注册中心(停用)
2.Zuul:服务网关(停用)
3.Ribbon:负载均衡(停用)
4.Feign:服务调用(未停用)
5.Hystix:熔断器(停用)
你问我在哪里知道的停用?

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
</dependency>

我通过这个看的,不在里面的组件我想应该就是被spring放弃了。所以这些组件还有必要学吗?

共有1个答案

龙永逸
2024-09-15

虽然你提到的几个微服务组件(Eureka、Zuul、Ribbon、Hystrix)在Spring Cloud的某些版本或官方文档中可能不再作为推荐或默认选项,但这并不意味着这些技术已经完全被废弃或不值得学习。实际上,学习这些组件仍然有其价值和意义,原因如下:

  1. 技术积累:了解这些组件可以帮助你更好地理解微服务架构的核心概念,如服务注册与发现、服务网关、负载均衡和断路器模式。这些概念在微服务架构中至关重要,无论使用何种技术栈实现。
  2. 替代方案:虽然这些组件可能不再是Spring Cloud的首选,但Spring Cloud社区和其他技术栈提供了许多替代方案。学习这些组件可以让你更容易地迁移到新的解决方案,因为很多替代方案都保留了原有组件的设计思想和API的相似性。
  3. 历史项目维护:如果你需要维护或扩展现有的使用这些组件的项目,那么学习它们将是必要的。
  4. 技术广度:作为一名开发人员,拥有广泛的技术栈知识可以增加你的市场竞争力。即使某些技术不再流行,了解它们仍然可以让你在面试或项目中展现出更全面的能力。
  5. 学习和成长:学习新技术总是有益的,即使这些技术最终会被新的技术所取代。通过学习和实践这些组件,你可以培养解决问题的能力、系统设计和架构思维。

对于你提到的替代方案,Spring Cloud已经提供了许多新的组件来替代这些停用的组件,例如:

  • Eureka 的替代方案可以是 ConsulNacosZookeeper
  • Zuul 已经被 Spring Cloud Gateway 取代,后者提供了更强大的路由和过滤功能。
  • RibbonFeign 的功能现在可以被 Spring Cloud LoadBalancerSpring WebFlux(或 Spring RestTemplate 的替代方案)结合使用来实现。
  • Hystrix 的断路器功能现在可以通过 resilience4jSpring Retry 等库来实现。

因此,虽然这些组件可能不再是首选,但学习它们仍然是有价值的,并且可以帮助你更好地理解和实现微服务架构。

 类似资料:
  • 根据我的理解,当数据库事务跨越微服务时,我们可以通过使用message-broker(kafka、RabbitMQ等)通过发布事件来解决这个问题,这样订阅者微服务就可以通过监听这些事件来更新他们的数据库。 在异常情况下,我们可以发送故障事件,以便订阅服务器服务更新它们的状态。 我们真的需要事件来源吗?

  • 使用PHP和MySQLi,我有一个简单的表单,其中包含4个HTML 5下拉列表输入。现在想知道我是否仍然必须使用Prepared语句来保护我的数据库?我是否仍有SQL注入问题的风险?或者使用此类输入是否存在任何其他类型的风险。谢谢

  • 本文向大家介绍为什么我们需要微服务容器?相关面试题,主要包含被问及为什么我们需要微服务容器?时的应答技巧和注意事项,需要的朋友参考一下 要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可以使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工作,微服务可以使用这些元素。

  • 我创建了一个服务,并希望一直运行此服务,直到我的电话重新启动或强制关闭。服务应该在后台运行。 创建的服务和启动服务的示例代码:

  • 我有几个微服务,每个微服务都有用于CRUD操作的RESTendpoint。我必须创建一个工作流,该工作流将从一个带有一些初始输入的微服务开始,但一个微服务的稍后输出可以用作其他微服务的输入。可以对这些REST API进行一些同步和异步调用。 我已经寻找了一些工作流引擎,但我不认为我可以在不编写任何java代码的情况下创建我的工作流。

  • 我正在用CXF开发一个SOAP客户端。我有WSDL2Java生成的代码。我做了一个JAR可执行文件来测试。当我尝试提出请求时,我首先这样做: WSDL是web服务的URL。 service_name是服务的QName。 MintService是从wsdl2java代码生成的类。 MintServiceSOAP是endpoint的QName MintService.class是WSLD2Java生成