springcloud核心组件及其作用

Eureka:服务注册与发现

注册:每个服务都向 Eureka 登记自己提供服务的元数据,包括服务的 ip地址、端口号、版本号、通信协议等。 eureka 将各个服务维护在了一个服务清单中(双层 Map ,第一层 key 是服务名,第二层 key是实例名, value 是服务地址加端口)。同时对服务维持心跳,剔除不可用的服务, eureka集群各节点相互注册每个实例中都有一样的服务清单。
发现 eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单 ( 缓存到本地 ) ,然后实现服务的请求访问。

Ribbon:客户端负载均衡

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

Feign:RPC远程调用

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

    @Resource UserClient userClient; 

    @RequestMapping("/test") public String test(){ 
        String user = userClient.getUser(); 
        return user; 
    }
 }

Hystrix:熔断降级工具

发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,通过统计接口超时次数返回默认值,实现服务熔断和降级。

Zuul:路由网关

如果前端、移动端要调⽤后端系统,统⼀从 Zuul ⽹关进⼊,由 Zuul⽹关转发请求给对应的服务,通过与 Eureka 进行整合,将自身注册为 Eureka 下的应用,从 Eureka下获取所有服务的实例,来进行服务的路由。 Zuul还提供了一套过滤器机制,开发者可以自己指定哪些规则的请求需要执行校验逻辑,只有通过校验逻辑的请求才会被路由到具体服务实例上,否则返回错误提示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值