一.SpringCloud的简介
SpringCloud是一系列框架的集合。它构建于SpringBoot之上,为常见的分布式系统提供了一套简单 易于接受的编程模型。如图一
图一 SpringCloud的构成
二 Springcloud技术组成
*** 1**.eureka----- 微服务治理,服务注册和发现。****
- Eureka是基于REST的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器故障转移,我们称之为Eureka服务器,Eureka还有一个基于java客户端的组件Eureka Client,它使与服务交互变得更加容易。总得来说,Eureka就是一个服务发现框架。
- 当Eureka客户端向Server注册时,它提供自身的元数据,例如:IP地址 断口 URL 主页等
*
图二 Eureka架构图 - 2.Ribbon------负载均衡 请求重试****加粗样式
- 了解RestTemplate
- 微服务之间的调用就是用的**RestTemplate(**基于http服务的客户端的类)
- Ribbon是运行在消费者端的负载均衡器,其工作原理就是在Consumer端获取到了所有服务列表后,在其内部使用负载均衡算法,进行多个系统的调用。
- *对比Nginx和Ribbon
- 1.作用范围不同:Ribbon是仅在消费者端进行的负载均衡器。Nginx是一种集中式(接收了所有请求)的负载均衡器。
- 2.算法:Ribbon采用的算法有轮询策略(默认)若经过一轮轮询没有找到可用的Provider,其最多轮询10轮,若还没找到,则返回null
- RandomRule:随机策略 从所有可用的Provider中随机选择一个。
*** RetryRule:重试策略先按轮询策略获取Provider,若获取失败,在指定的时间内重试** - Nginx使用的轮询和加权算法。**
*** **3.Hystrix----断路器 服务降级 熔断 - 所谓熔断就是服务雪崩的一种有效解决方案。当指定时间窗内的请求失败率达到设定的阈值时,系统将通过断路器直接将请求链路断开。
降级:当一个方法调用异常时,通过执行另一种代码逻辑给用户友好的回****复。大量的用户访问时会导致系统崩溃,那我们做服务的降级,一些请求会做一些降级处理比如加粗样式请稍后查看
4.Openfegin-----hystrix+ribbon的集成 并提供声明式客户端
OpenFeign也是运行在消费端的,内置了Ribbon,并集成了hystrix.。由于每次调用RestTemplate API太过于麻烦,OpenFeign将调用的服务端代码映射到消费端,这样就可以无缝开发了
5 Hystrix dashboard和turbine
Hystrix dashboard是熔断监控工具(监控hystrix),通过Hystrix Dashboard我们可以直观的看到请求响应时间 请求成功率等数据 ,但是Hystrix DashBoard能让我们汇总多个服务数据并显示到Hystrix DashBoard上 这个工具就是Turbine.******
6.zuul -------API网关,对服务提供统一的入口,并提供统一权限的验证****
网关是系统唯一对外的入口,介于客户端和服务端之间 ,对请求进行鉴权 限流 路由 监控等功能。
ZUUL是从设备和web站店到Netflix流应用到后端的所有请求的前门。ZULL是为了实现动态路由 监视 弹性 和安全性构建的。
7**.Config----配置中心**
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config服务器,可以在中心位置管理所有环境中应用程序的外部属性。
8.Spring Cloud Bus----消息总线 配置刷新
一般情况下,我们会使用Bus 消息总线+Spring Cloud Config 进行配置的动态刷新用于将服务和服务实例与分布式消息系统连接在一起的事件总线。
9.sleuth+zipkin--------链路跟踪
sleuth主要功能是在分布式系统中提供追踪解决方案,并兼容了支持zipkin(提供了链路追踪的可视化功能)
zipkin原理:在服务调用请求和响应中加入ID,表明上下游请求的关系。利用这些信息,可以使可视化的分析服务调用链路和服务间的依赖关系
Sleuth是对zipkin的封装,对应Span Trace等信息的生成,接入http request 以及向zipkin server发送采集信息等全部自动化完成。