Spring Cloud 的核心组件总结

本文深入解析微服务架构中的七大关键组件:Eureka作为注册中心实现服务注册与发现;Ribbon提供负载均衡策略;Fegin简化代码调用流程;Hystrix作为断路器保护异常情况;Zuul担当API网关角色;Config实现分布式配置管理;Sleuth用于分布式服务跟踪,助力快速定位错误根源及性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、注册中心:Eureka

     任何服务启动以后,都会把自己注册到Eureka的注册表中;当服务死亡的时候,也会通知Eureka。这样,当某个服务想要访问另一个服务的时候,只需要问一下Eureka Server就可以了,它什么都知道。

     注册到Eureka注册表这个注册动作,是由一个叫做Eureka Client的组件来完成的。服务启动和关闭的时候,会通过这个组件推销自己;而当某个服务(A)想要调用另一个服务(B)的时候,直接访问Eureka Server就可以了。当A拿到结果后,会把结果缓存在本地的注册表里。所以,当Eureka Server死掉后,也不会影响服务A去调用服务B。

2、负载均衡:Ribbon

     服务A拿到服务B的实例列表以后,发现有两台,这就出现了问题:该调用那台机器呢?这就是SpringCloud中组件Ribbon的作用。它是最常用的负载均衡策略,请求会均匀的分配给后面的每台机器。

     Ribbon不仅仅提供了轮询的策略,还有随机Random、根据响应时间加权、自定义的策略。

3、为简化代码而生的:Fegin

     使用Ribbon时需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。而且返回类型不安全,也表达不出什么语义。

      Fegin得益于Java的动态代理机制,最终封装出一套简洁的接口调用方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。

      首先,Fegin会根据@FeginClient注解,通过动态代理,创建一个动态代理类。接下来,只要通过调用接口的方式,就可以构造Ribbon调用方式的参数,这个过程会自动填充。最后,通过构造的Ribbon请求,发起真正的调用,并通过反射组装返回值。所以,Fegin只是一层皮,最终还是要通过调用Ribbon进行调用。

4、异常的保护——断路器:Hystrix

      Hystrix对每个服务开了一个线程池,并有比较复杂的规则,来控制出问题的服务的行为。比如,在规定时间内,直接返回默认的结果,而不是一直卡在那里。这个过程就叫做熔断,就像电源一样,出了问题,先切断保险丝,别把电器给烧了。

5、API网关服务:zuul

     API网关,所有的外部客户端访问都需要经过API网关进行调度和过滤。

     主要解决了两个问题:路由规则(暴露接口)与服务实例的维护问题;签名检验、登陆校验在微服务中的冗余问题。

6、分布式配置中心:config

     来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持。

 7、分布式服务跟踪:Sleuth

      对于每个请求,通过实现对请求调用的跟踪可以帮助我们快速发现错误根源以及监控分析每条请求链路上的性能瓶颈。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值