springcloud整体架构
springcloud使用场景
- 把整个系统按业务拆分成几个子系统
- 每个子系统可以部署多个应用,多个应用之间负载均衡
- 需要一个服务注册中心,所有服务在里面注册
- 客户端通过同一个网关访问后台的服务,通过路由配置,判断url由哪个服务进行处理,请求转发过程也负载均衡
- 服务之间需要互相访问
- 需要一个断路器处理服务调用的超时和错误
- 需要一个监控功能,监控每个服务花费的时间
springcloud组件
- Spring Clound Config:配置管理开发工具包,可以把配置放到远程服务器,支持git,本地,Subversion
- Spring Cloud Bus:事件,消息总线,传播配置状态变化,与Config可实现热部署
- Spring Cloud Netflix:对多种Netfix组件提供开发包工具(即下面的)
- Netflix Eureka:云端负载均衡,基于REST服务,用于定位,实现云端的负载均衡和中间层服务器故障转移
- Netflix Hystrix:容器管理工具,通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
- Netflix Zuul:边缘服务工具,提供路由、监控、弹性、安全等服务
- Netflix Archaius:配置管理API,提供动态属性变化、线程安全配置操作、回调机制等功能
- Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作
- Spring Cloud Data Flow:大数据操作工具,通过命令行的方式操作数据流
- Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要指OAuth2
- Spring Cloud Consul:封装了Consul操作,Consul为一个服务发现配置工具,可与docker集成
- Spring Cloud Zookeeper:操作Zookeeper工具包,用于zookeeper方式的服务注册和发现
- Spring Cloud Stream:数据流操作开发包,封装Redis、Rabbit、Kafka等操作
常用五大组件为
服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
Eureka简介
- Spring Cloud Netflix的一个子模块,也是核心模块之一,用于云端注册发现。
- 一个基于REST服务,用于定位服务,实现中间层服务发现和故障转移,由服务端和客户端组成
- Eureka服务端用作注册中心,支持集群部署
- Eureka客户端为一个java客户端,用来处理服务注册和发现
- 在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端和服务端周期性进行交互
Ribbon简介
作用:Ribbon,主要提供客户端的负载均衡算法
简介:Ribbon是一种基于HTTP和TCP客户端负载均衡工具、基于Netflix Ribbon实现。通过spring Cloud的封装,可以将Rest模板请求自动转换为客户端负责均衡的服务调用
Hystrix简介
作用:断路器,保护系统,控制故障范围
简介:为了保证其的高可用,单个服务通常会集群部署。
Config简介
作用:配置管理
简介:Config提供客户端和服务端,服务器存储后端默认使用git