Spring Cloud知识体系概述

Spring Cloud

Spring Cloud是Spring旗下的项目之一,官网地址:http://projects.spring.io/spring-cloud/ Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。 Spring Cloud也是一样,它将现在非常流行的一些技术整合到一起,

实现了诸如:
配置管理
服务发现
智能路由
负载均衡
熔断器
控制总线
集群状态
等等功能

其主要涉及的组件包括:

Netflix
	-	Eureka:注册中心
	-	Zuul:服务网关
	-	Ribbon:负载均衡
	-	Feign:服务调用
	-	Hystrix:熔断器
以上只是其中一部分,架构图:

其中,Eureka注册中心

基本架构

提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
心跳(续约):提供者定期通过HTTP方式向Eureka刷新自己的状态``
工作原理解析:

0.实例化服务 1.将服务注册到Eureka 2.记录服务(user-service) 3.从Eureka中获取服务列表 4.基于负载均衡算法从地址列表中选择一个服务地址调用服务 5.定期发送心跳 6.检查没有定期发送心跳续约的服务,并在一定时间内剔除出服务列表

Eureka架构中的三个核心角色:
	-	服务注册中心
Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server
	-	服务提供者
提供服务的应用,可以是Spring Boot应用,也可以是其它任意技术实现,只要对外提供的是
REST风格服务即可。本例中就是我们实现的user-service
	-	服务消费者
消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。
本例中就是我们实现的consumer-demo

Ribbon

Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为,为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。

Hystrix

]Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。

Hystrix解决雪崩问题的手段,主要包括:
	-	线程隔离
	-	服务降级

解读: - Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。 - 用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超 时,则会进行降级处理。

熔断原理

在服务熔断中,使用的熔断器,也叫断路器,其英文单词为:Circuit Breaker 熔断机制与家里使用的电路熔断原理 类似;当如果电路发生短路的时候能立刻熔断电路,避免发生灾难。在分布式系统中应用服务熔断后;服务调用方 可以自己进行判断哪些服务反应慢或存在大量超时,可以针对这些服务进行主动熔断,防止整个系统被拖垮。 Hystrix的服务熔断机制,可以实现弹性容错;当服务请求情况好转之后,可以自动重连。通过断路的方式,将后续 请求直接拒绝,一段时间(默认5秒)之后允许部分请求通过,如果调用成功则回到断路器关闭状态,否则继续打 开,拒绝请求的服务。

Spring Cloud Gateway网关

Spring Cloud Config分布式配置中心

Spring Cloud Bus简介

Spring Cloud Bus是用轻量的消息代理将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管 理。也就是消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。 Spring Cloud Bus可选的消息代理 有RabbitMQ和Kafka。

Spring Cloud 完整体系架构图

最后附上体系图:

经验分享 程序员 微信小程序 职场和发展