0%

springCloud组件基本作用

文章字数:1159,阅读全文大约需要4分钟

Spring Cloud的组件有很多,主要记录常用的核心组件的使用场景及原理

一、Eureka

Eureka是微服务架构的注册中心,负责服务的注册与发现。

  1. 使用场景: 微服务架构的各个服务系统部分可能分布在多台机器上,Eureka的作用就是使各个服务直接能够相互调用。

  2. 原理: 每个服务中都集成了一个Eureka Client组件,这个组件负责将当前服务信息发送到Eureka Server中。Eureka Server是注册中心,保存了各个服务的地址信息。各组件可以通过Eureka Client获取其它服务的地址信息,并进行请求。

二、Feign

Feign是一个动态代理,利用aop将连接其它服务,发送网络请求,判断返回值,接收结果等一系列动作封装好。

  1. 使用场景: 调用其它微服务的服务时,接口上使用注解@FeignClient就能创建出一个相关服务的动态代理。接口中声明需要调用的微服务方法,地址等信息。业务中直接调用此接口,Feign就能自动完成远程调用该服务。

  2. 原理: 首先创建一个接口,规范调用的方法。接口上声明@FeignClient并传入服务名,Feign就能通过Eureka获取到该服务的位置。接口方法声明的RequestMapping等和SpringMVC相同的注解则可以定位到方法的具体位置,方法的声明则指定了远程方法的具体格式。最后利用aop将这些动作封装起来。

三、Ribbon

客户端负载均衡,区别于Nginx的服务端负载均衡。客户端负载均衡是访问者(消费者)决定如何访问服务。默认负载均衡算法是轮询算法,一个服务有多台机器上运行时按顺序每次请求分发到各个服务器上。

  1. 使用场景: 当访问量特别大的时候,一台机器无法满足访问需求。这个时候就可以搭建多台机器,所有的机器都运行同一个服务。这些服务运行之后都会注册到注册中心。消费端访问服务时就可以使用Ribbon将访问量平摊到这些机器上。

  2. 原理: 首先从Eureka Server上获取服务注册表,找到服务部署在那些机器上,监听那个端口。然后使用内置算法选出一台机器。最后使用Feign构造并发起请求。

四、Hystrix

隔离、熔断、降级的框架。主要用于服务挂了,导致其它服务未接收相应也卡住。

  1. 使用场景: 防止一个服务挂了之后其它访问的服务也产生连锁反应,保存挂了的服务在重启时间内的被访问数据。

  2. 原理: 首先是隔离Hystrix使用很多独立的线程池分割不同的服务,其中一个服务不可能占用所有的线程并影响其他服务。其次是熔断,检测到服务无法访问,这个针对服务的访问请求在特定时间内会直接返回。这样就不用到超时才返回。最后是降级,每次有请求访问已经挂了的服务就会向数据库中插入一条信息,记录访问的详细情况。方便在服务恢复之后手动恢复宕机期间的数据。

五、Zuul

微服务网关,根据请求的特征将请求分发到相应的服务中。

  1. 使用场景: 方便前端,安卓设备等访问服务。后端程序的调用可以使用Eureka,前端则需要一个统一的入口。有了统一的入口之后降级,限流,认证授权,安全等都可以统一处理。

  2. 原理: 根据请求的特征分发到相应的微服务中。