spring cloud 常用的核心组件以及作用

1. spring cloud 常用的核心组件

服务注册与发现——Netflix Eureka 客户端负载均衡——Netflix Ribbon 服务熔断器——Netflix Hystrix 服务网关——Netflix Zuul 服务接口调用——Netflix Feign

服务跟踪——Netflix Sleuth 聚合Hystrix监控数据——Netflix Turbine 分布式配置——Spring Cloud Config

2.springCloud核心组件作用以及解决了什么问题

3. 详细介绍

Eureka Eureka是微服务架构中的注册中心,专门负责服务的注册与发现; 每个微服务中都有一个Euraka client组件,专门负责将这个服务的服务id(serviceId)、ip、端口等信息注册到Eureka server中; Euraka Server是一个注册中心,该组件内部维护了一个注册表,保存了各个服务所在的机器ip和端口号等信息。

Feign

Feign是一个声明式 REST 客户端,主要是为了简便服务调用,更快捷、优雅地调用 HTTP API。主要是实现原理是用动态代理。 Feign主要负责与其他服务建立连接,构造请求,发起请求,获取响应等等,用来远程调用其他的服务; Feign使用Jdk的动态代理来针对FeignClient注解修饰的接口创建动态代理; 调用FeignClient注解修饰的接口,实际是调用Feign创建出来的动态代理; 根据RequestMapping等注解信息,动态构造出要请求的服务地址; 针对该构造出来的地址,发起请求,解析响应;

Ribbon Ribbon主要负责负载均衡,针对每次请求,Ribbon会从Euraka client服务列表中选择一个服务发起请求,均匀的把请求分发到各个服务中; 默认使用的是Round Robin轮询算法; Feign使用Ribbon去获取服务信息,例如服务的ip、端口等信息,然后针对服务的信息构造并发起请求。

Hystrix 微服务架构中,存在着恐怖的服务雪崩问题,也是当服务直接互相调用,如果其中某个服务挂掉了,会导致其他服务不可用,甚至导致其他服务也挂掉了; Hystrix是隔离、熔断以及降级的一个框架; Hystrix默认是通过线程池技术对服务进行隔离,每个微服务对应一个线程池,对每个服务进行调用时,都是通过在自己的线程池中调用; 如果某个服务挂了,hystrix就直接返回,这个过程就是熔断; 如果某个服务挂了,hystrix就执行一个默认的方法逻辑,这个过程就是降级;

经验分享 程序员 微信小程序 职场和发展