SpringCloud主要分为一下四种常用的组件:注册中心Eureka,网关Zuul、微服务调用Feign(Ribbon)、断路器Hystrix。

一、注册中心Eureka

作用:服务的注册中心
image.png
Eureka包含两个组件,Eureka Server和Eureka Client,Eureka Server简称Eureka,Eureka Client可以理解为微服务,除了Eureka Server以外系统中的每一个都是一个微服务,并且系统中的每一个微服务,都不能部署为单个节点,需要部署多个节点,Eureka也同样需要部署多个节点,让他们直接相互注册,互相复制注册服务的元信息,来保证高可用。

元信息:指的就是为服务的注册信息。

服务注册:Client启动之后会向Server进行注册把自身的信息,提供给Server,告诉Server我是一个Eureka Client。

心跳续约:是Server和Client直接维护的一个定时心跳,目的是告诉server当前的服务还存活着,可以提供服务,同样是Eureka Client发起的主动操作,简单可以理解Client去ping server

下线:告诉server,client要下线了,把Client的元信息清理掉,不会存在过期信息。

获取服务元信息:从Server中获取元信息.

元信息保存:ConcurrentHashMap>>

<应用名称,<实例名称, <端口号状态等等信息>> 应用可以包含很多个实例。

二、服务网关Zuul

作用:请求的分发

SpringCloud Zuul
image.png

image.png

Zuul 的介绍 在介绍 Zuul 可以提供的功能之前,先考虑一个问题:微服务系统中往往包含很多个功能不同的子系统或微服务,那么,外部应用怎样去访问各 样的微服务呢?这也是 Zuul 所要解决的一个主要问题。 在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个服务网关根据请求的url,路由到相应的服务,即实现请求转发,效果如下图 示。
image.png
Zuul 提供了服务网关的功能,可以实现负载均衡、反向代理、动态路由、请求转发等功能。Zuul 大部分功能都是通过过滤器实现的,Zuul 中定 了四种标准的过滤器类型,同时,还支持自定义过滤器(课程中实现了两个自定义过滤器,用来记录访问延迟)。这些过滤器的类型也对应于请 典型生命周期,如下图所示。

image.png
pre:在请求被路由之前调用
route:在路由请求时被调用
post:在 route 和 error 过滤器之后被调用
error:处理请求时发生错误时被调用

三、微服务调用Feign(Ribbon)

作用:调用其他微服务

四、断路器Hystrix

作用:调用其他微服务失败的断路器。