springcloud包含哪些组件?springcloud核心组件介绍

Spring Cloud大家是不陌生了,它分布式微服务架构的一站式解决方案,提供了一套简单易用的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务系统的构建。那springcloud包含哪些组件?下面来我们就来给大家讲解一下。

springcloud包含哪些组件.jpg

一、注册中心Eureka

每一个服务(订单服务、库存服务、积分服务...)中都会有一个Eureka Client组件,此组件就是负责将服务的信息注册到Eureka Server中(实质上是将服务的地址和端口暴露到Eureka Server注册中心上);

springcloud包含哪些组件?springcloud核心组件介绍.png

Eureka Client:负责将服务的信息注册到Eureka Server中。

Eureka Server:注册中心,其中有一个注册表,记录的有各个服务所在的机器和端口号。

二、服务网关Zuul

Zuul:就是微服务网关,主要是负责网络路由的。

浏览器所有请求都需要经过网关,网关就会根据请求中的特征将请求转发后端的各个服务中。网关还可以做统一的降级,限流,认证授权…

三、服务调用Feign

Feign:服务调用。服务与服务之间的代码调用方式基于含有注解FeignClient自定义的接口。简化了构建服务之间网络连接等环节。FeignClient会根据接口配置到注册中心(本地缓存)找到对应的请求服务接口。

1.png

Feign实际上使用了动态代理的方式,实现了服务调用。原理如下。

2.png

a,如果我们在操作中对某个接口定义了@FeignClient注解,那么Feign就会针对这个接口创建一个动态代理。

b,当我们调用此接口时,本质上就是调用Feign创建的动态代理

c,Feign的动态代理就会根据接口上的@RequestMapping…等注解,动态的构造出要请求的服务地址。

d,最后会针对这个地址,发起请求,解析响应。

四、熔断器Hystrix

熔断器,它是一个隔离,熔断以及降级的框架。

订单服务调用积分服务,由于积分服务异常导致订单服务的请求都在调用积分服务时卡住几秒钟,高并发情况下,订单服务所有的线程都卡在请求积分服务侧,将导致订单服务异常。这就是服务雪崩。熔断器的存在就是需要在积分服务异常情况下,订单服务仍正常运行不会出现服务异常情况。

3.png

隔离:服务与服务之间请求使用线程池,防止下游服务异常导致上游服务所有线程都卡住在请求该下游服务的卡顿环节。

熔断:当订单服务请求积分服务时,若积分服务出现异常则及时熔断积分服务,订单服务再次请求积分服务时将直接走hystrix熔断器返回报错信息。

降级:在订单服务请求走熔断器过程中,将该过程中请求记录下面,涉及到积分变更的数据存入数据库,后续人工处理好数据。

4.png

五、负载均衡Ribbon

Ribbon 的负载均衡在默认情况下使用的 Round Robin轮询算法。 指的就是当订单服务对积分服务发起了6次请求,那就会先请求第一台机器,接着是第二台…,不断的循环

5.png

这些就是springcloud核心组件,每一个组件的作用都是不同的,只有每一个组件正常工作,才能帮助开发者解决问题,因此掌握并熟练使用每个组件很有必要!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

java写函数的步骤是什么?Java函数重载怎么操作?

fastjson如何使用?fastjson使用详解

java多线程面试重点有哪些?java多线程面试重点分享