spring cloud 常用的核心组件:

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

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

你所知道的微服务技术栈?

服务注册与发现——Eureka,Zookeeper
服务路由(API网关)——Zuul
服务熔断器——Hystrix
服务负载均衡——Ribbon Nginx
服务接口调用——Fegin
服务配置与管理——Netfix公司的Archaiusm ,阿里的Diamond
服务调用——Rest RPC gRpc
消息队列——Kafka Rabbitmq activemq
服务配置中心管理——Spring Cloud Config
事件消息总线——SpringCloud Bus

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

子项目作用解决了什么问题
Netflix Eureka服务注册与发现硬编码服务提供者地址的方式有不少问题。要想解决这些问题,服务消费者需要一个强大的服 务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。不仅如此,即使服务提供者的网络地址发生变化,服务消费者也无须修改配置文件。
Netflix Ribbon客户端侧负载均衡Ribbon 的作用是负载均衡,会帮你在每次请求时选择一台服务器,均匀的把请求分发到各个服务器上。
Netflix FeignREST调用Feign Client 会在底层根据你的注解,跟你指定的服务建立连接、构造请求、发起请求、获取响应、解析响应,等等。
Netflix Hystrix容错处理服务链上,因为某个微服务的异常,而导致雪崩效应,整条服务链宕机的问题;Hystrix回去捕获这个异常,利用Hystrix接口处理这类异常。
Netflix Zuul微服务网关(使用Spring Cloud Gateway代替,官方不会集成 Zuul 2.x)负责网络路由,可以做统一的降级、限流、认证授权、安全,等等。
Spring Cloud Config分布式配置
Turbine聚合Hystrix监控数据
Sleuth微服务跟踪

springCloud核心组件简单介绍

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

Feign
Feign主要负责与其他服务建立连接,构造请求,发起请求,获取响应等等,用来远程调用其他的服务;
Feign使用Jdk的动态代理来针对FeignClient注解修饰的接口创建动态代理;
调用FeignClient注解修饰的接口,实际是调用Feign创建出来的动态代理;
根据RequestMapping等注解信息,动态构造出要请求的服务地址;
针对该构造出来的地址,发起请求,解析响应;

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

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

Zuul
Zuul是微服务的网关,这个组件是负责网络的路由;
所有请求都往网关走,网关会根据请求中的特征,将请求转发给后端的各个服务;

Spring Cloud 核心组件

Eureka(注册中心)
每个微服务都有一个 Eureka Client 组件,专门负责将这个服务的信息注册到 Eureka Server 中,也就是告诉 Eureka Server,自己在
哪台机器上,监听着哪个端口。而 Eureka Server 是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。

Feign(REST 客户端)
Feign 是一个声明式 REST 客户端,主要是为了简便服务调用,更快捷、优雅地调用 HTTP API。主要是实现原理是用动态代理,你要是调用
哪个接口,本质就是调用 Feign 创建的动态代理。

Ribbon(负载均衡)
Ribbon 的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上,默认使用的最经典的 Round Robin 轮询
算法(如果发起 10 次请求,那就先让你请求第 1 台机器、然后是第 2 台机器、第 3 台机器,接着再来—个循环,第 1 台机器、第 2 台
机器。。。以此类推)

Hystrix(熔断器)
微服务框架是许多服务互相调用的,要是不做任何保护的话,某一个服务挂了,就会引起连锁反应,导致别的服务也挂。Hystrix 是隔离、熔
断以及降级的一个框架。如果调用某服务报错(或者挂了),就对该服务熔断,在 5 分钟内请求此服务直接就返回一个默认值,不需要每次都
卡几秒,这个过程,就是所谓的熔断。但是熔断了之后就会少调用一个服务,此时需要做下标记,标记本来需要做什么业务,但是因为服务挂
了,暂时没有做,等该服务恢复了,就可以手工处理这些业务。这个过程,就是所谓的降级。

Zuul(服务网关)
Zuul,也就是微服务网关。这个组件是负责网络路由的。假设你后台部署了几百个服务,现在有个前端兄弟要来调用这些服务,难不成你让他把
所有服务的名称和地址全部记住,这是不现实的,所以一般微服务架构中都必然会设计一个网关,所有请求都往网关走,网关会根据请求中的一
些特征,将请求转发给后端的各个服务。而且有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全,等等。

总结
第一步:服务注册
第二步:服务发现
第三步:负载均衡
第四步:服务调用
第五步:隔离、熔断与降级
第六步:网关路由
总结详细讲解:各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka 
Server 拉取注册表,从而知道其他服务在哪里。服务间发起请求的时候,基于 Ribbon 做负载均衡,从一个服务的多台机器中选择一台。基
于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求。发起请求是通过 Hystrix 的线程池来走的,不同的服
务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 
Zuul 网关转发请求给对应的服务。

更多推荐

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