SpringCloud简介(一)

一.SpringCloud的简介
SpringCloud是一系列框架的集合。它构建于SpringBoot之上,为常见的分布式系统提供了一整套简单 易于接受的编程模型。如图一
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图一 SpringCloud的构成

Springcloud技术组成
在这里插入图片描述
*** 1**.eureka----- 微服务治理,服务注册和发现。****
在这里插入图片描述

  • Eureka是基于RESTFUL的服务,主要在AWS云中用于定位中间层服务,有两个组件组成:Eureka服务器和Eureka客户端 ,Eureka服务器用做服务注册服务器,Eureka客户端是一个JAVA客户端 简化与服务器的交互 作为轮询负载均衡器 并提供服务的故障切换支持 Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。以实现负载均衡和中间层服务器故障转移,我们称之为Eureka服务器,Eureka还有一个基于java客户端的组件Eureka Client,它使与服务交互变得更加容易。总得来说,Eureka就是一个服务发现框架。
  • 当Eureka客户端向Server注册时,它提供自身的元数据,例如:IP地址 断口 URL 主页等
    *在这里插入图片描述
    图二 Eureka架构图
  • 2.Ribbon------负载均衡 请求重试****加粗样式
  • 在这里插入图片描述
  • Ribbon,主要提供客户侧的软件负载均衡算法。

Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:
简单轮询负载均衡
加权响应时间负载均衡
区域感知轮询负载均衡
随机负载均衡

Ribbon中还包括以下功能:

易于与服务发现组件(比如Netflix的Eureka)集成
使用Archaius完成运行时配置
使用JMX暴露运维指标,使用Servo发布
多种可插拔的序列化选择
异步和批处理操作(即将推出)
自动SLA框架(即将推出)
系统管理/指标控制台(即将推出)

  • 了解RestTemplate

  • 微服务之间的调用就是用的**RestTemplate(**基于http服务的客户端的类)

  • Ribbon是运行在消费者端的负载均衡器,其工作原理就是在Consumer端获取到了所有服务列表后,在其内部使用负载均衡算法,进行多个系统的调用。

  • *对比Nginx和Ribbon

  • 1.作用范围不同:Ribbon是仅在消费者端进行的负载均衡器。Nginx是一种集中式(接收了所有请求)的负载均衡器。

  • 2.算法:Ribbon采用的算法有轮询策略(默认)若经过一轮轮询没有找到可用的Provider,其最多轮询10轮,若还没找到,则返回null

  • RandomRule:随机策略 从所有可用的Provider中随机选择一个。
    *** RetryRule:重试策略先按轮询策略获取Provider,若获取失败,在指定的时间内重试**

  • Nginx使用的轮询和加权算法。**
    *** **3.Hystrix----断路器 服务降级 熔断
    在这里插入图片描述
    在这里插入图片描述
    断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。

  • 所谓熔断就是服务雪崩的一种有效解决方案。当指定时间窗内的请求失败率达到设定的阈值时,系统将通过断路器直接将请求链路断开。

  • 断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响。它可以帮助快速地拒绝对一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态

降级:当一个方法调用异常时,通过执行另一种代码逻辑给用户友好的回****复。大量的用户访问时会导致系统崩溃,那我们做服务的降级,一些请求会做一些降级处理比如加粗样式请稍后查看
在这里插入图片描述
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发送采集信息等全部自动化完成。
执行流程:
1.请求统一通过API网关Zuul来访问内部服务
2.网关接收到请求后,从注册中心(Eureka)获取可用服务
3.由Ribbon进行负载均衡后,分发到后端具体实例
4.微服务通过Feign进行业务处理
5.Hystrix负责处理服务超时熔断
6.Turbine监控服务间的调用和熔点相关指标
注:
工具框架
Spring Cloud Netflix(集成众多的Netflix的开源软件,组成微服务的核心)
*Spring Cloud Netflix Eureka 服务中心(类似于管家的概念,需要什么直接从这里取,就可以了),一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移
Spring Cloud Netflix Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
Spring Cloud Netflix Zuul 网关,是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Web 网站后端所有请求的前门
Spring Cloud Netflix Archaius 配置管理 API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能
Spring Cloud Netflix Ribbon 负载均衡
Spring Cloud Netflix Fegin REST客户端
其他组件
Spring Cloud Bus 消息总线,利用分布式消息将服务和服务实例连接在一起,用于在一个集群中传播状态的变化
Spring Cloud for Cloud Foundry 利用 Pivotal Cloudfoundry 集成你的应用程序
Spring Cloud Cloud Foundry Service Broker 为建立管理云托管服务的服务代理提供了一个起点
Spring Cloud Cluster 集群工具,基于 Zookeeper, Redis, Hazelcast, Consul 实现的领导选举和平民状态模式的抽象和实现
Spring Cloud Consul 基于 Hashicorp Consul 实现的服务发现和配置管理
Spring Cloud Security 安全控制,在 Zuul 代理中为 OAuth2 REST 客户端和认证头转发提供负载均衡
Spring Cloud Sleuth 分布式链路监控,SpringCloud 应用的分布式追踪系统,和 Zipkin,HTrace,ELK 兼容
Spring Cloud Data Flow 一个云本地程序和操作模型,组成数据微服务在一个结构化的平台上
Spring Cloud Stream 消息组件,基于 Redis,Rabbit,Kafka 实现的消息微服务,简单声明模型用以在 Spring Cloud 应用中收发消息
Spring Cloud Stream App Starters 基于 Spring Boot 为外部系统提供 Spring 的集成
Spring Cloud Task 短生命周期的微服务,为 Spring Booot 应用简单声明添加功能和非功能特性
Spring Cloud Task App Starters
Spring Cloud Zookeeper 服务发现和配置管理基于 Apache Zookeeper

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章