irpas技术客

spring cloud 常用的核心组件以及作用_亦昕跑的码_springcloud常用组件及作用

未知 6400

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就执行一个默认的方法逻辑,这个过程就是降级;

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

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

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


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #1 #Spring #Cloud