一分钟快速了解Spring Cloud

一、Spring Cloud是什么?能做什么?
【一分钟快速了解Spring Cloud】Spring Cloud是一系列框架的有序集合 。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署 。
Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包 。
二、SpringCloud 和Dubbo对比
根据微服务架构在各方面的要素,看看Spring Cloud和Dubbo都提供了哪些支持 。

一分钟快速了解Spring Cloud

文章插图
 
三、核心组件
Spring Cloud的核心组件:
u 服务发现——Netflix Eureka
u 客服端负载均衡——Netflix Ribbon
u 断路器——Netflix Hystrix
u 服务网关——Netflix Zuul
u 分布式配置——Spring Cloud Config
1.Eureka(服务注册中心)
一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务 。由两个组件组成:Eureka服务器和Eureka客户端 。Eureka服务器用作服务注册服务器 。Eureka客户端是一个JAVA客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持 。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡 。
一分钟快速了解Spring Cloud

文章插图
 
2.Ribbon(负载均衡器)
Ribbon,主要提供客户侧的软件负载均衡算法 。
Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等 。Ribbon内置可插拔、可定制的负载均衡组件 。下面是用到的一些负载均衡策略:
u 简单轮询负载均衡
u 加权响应时间负载均衡
u 区域感知轮询负载均衡
u 随机负载均衡
Ribbon中还包括以下功能:
u 易于与服务发现组件(比如Netflix的Eureka)集成
u 使用Archaius完成运行时配置
u 使用JMX暴露运维指标,使用Servo发布
u 多种可插拔的序列化选择
等功能 。
一分钟快速了解Spring Cloud

文章插图
 
3.Hystrix(断路器)
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的 。断路器模式也使应用程序能够检测故障是否已经解决 。如果问题似乎已经得到纠正,应用程序可以尝试调用操作 。
断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响 。它可以帮助快速地拒绝对一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间 。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态 。
一分钟快速了解Spring Cloud

文章插图
 
4.Zuul(网关)
类似Nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性 。
一分钟快速了解Spring Cloud

文章插图
 
5.Spring Cloud Config(配置中心)
这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新 。
一分钟快速了解Spring Cloud

文章插图
 
四、Spring Cloud架构流程
一分钟快速了解Spring Cloud

文章插图
 
通过这张图,我们来了解一下各组件配置使用运行流程:
1. 请求统一通过API网关(Zuul)来访问内部服务.
2. 网关接收到请求后,从注册中心(Eureka)获取可用服务
3. 由Ribbon进行均衡负载后,分发到后端具体实例
4. 微服务之间通过Feign进行通信处理业务
5. Hystrix负责处理服务超时熔断
6. Turbine监控服务间的调用和熔断相关指标
·
五、Spring Cloud体系介绍
Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案 。


推荐阅读