Spring Cloud核心组件及作用

Eureka:服务注册与发现

注册:每个服务都向Eureka登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。eureka将各个服务维护在一个服务清单中。(双层Map,第一层Key是服务名,第二层Key是实例名,Value是服务地址加端口,同时对服务维持心跳,剔除不可用的服务,eureka集群各节点相互注册,每个实例中都有一样的服务清单。)

发现:eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务请求访问。

Ribbon:负载均衡

负载均衡:从一个服务的多台服务机器中选择一台(被调用的服务地址有多个),Ribbon也是通过发起http请求来进行调用,只不过通过调用服务名的地址来实现的。虽然说Ribbon不用去具体请求服务实例的ip地址或域名了,但是每调用一个接口都还要手动去发起Http请求。

Feign:远程调用

Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求,简化服务间的调用,在Ribbon的基础上进行进一步的封装。单独抽出一个组件,就是SpringCloud Feign。在引入SpringCloud Feign之后,我们只需要创建一个接口并用注解的方式来配置它,即可完成对服务端提供方的接口绑定。

调用远程服务就像调用本地服务一样,不用写服务名,ip,端口之类的。

@FeignClient(name="user")
public interface UserClient{
    @GetMapping("/getUser")
    String getUser();
}

Hystrix:熔断与降级

Hystrix:Hystrix 是 Netflix 提供的一个用于处理延迟和容错的库,它提供了熔断、降级、限流和实时监控等功能。在微服务架构中,通过在服务间调用中使用 Hystrix,可以实现对服务调用的隔离,防止由于某个服务的不稳定性而影响整体系统的可用性。Hystrix 通过创建单独的线程池来处理不同服务的请求,从而实现了服务之间的隔离,确保某个服务的问题不会传播到其他服务。同时,Hystrix 还通过统计接口的超时次数,当接口响应超时次数达到一定阈值时,会触发熔断操作,停止对该服务的请求,避免对系统造成更大的压力。此外,Hystrix 还支持降级功能,即当某个服务无法正常提供时,可以通过返回默认值或者调用备用逻辑来保证系统的可用性。通过这些机制,Hystrix 帮助应用在面对服务故障或延迟时能够进行有效的熔断和降级,从而提高系统的稳定性和健壮性。

ps:以下是我整理的java面试资料,感兴趣的可以看看。最后,创作不易,觉得写得不错的可以点点关注!

链接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值