SpringCloud 初章
(个人)SpringCloud的学习规划
Spring Cloud是一套微服务治理的框架,几乎考虑到了微服务治理的方方面面。
包含关系如下:Spring>Spring Boot >SpringCloud
学习Spring Cloud的前提是掌握Spring Boot。
springCloud 结构图
初学SpringCloud 时,服务的注册和发现很重要,当使用的程度渐深时,再考虑熔断器,监控等其他。
前期可以pring Boot/Cloud搭建几个小项目或者模仿去做一些小例子。
1.外部或者内部的非Spring Cloud项目都统一通过API网关(Zuul)来访问内部服务.
2.网关接收到请求后,从注册中心(Eureka)获取可用服务
3.由Ribbon进行均衡负载后,分发到后端的具体实例
4.微服务之间通过Feign进行通信处理业务
5.Hystrix负责处理服务超时熔断
6.配置中心管理各微服务不同环境下的配置文件。
springCloud子项目说明
name | instruction |
---|---|
Spring Cloud Config | 配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion |
Spring Cloud Bus | 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署 |
Spring Cloud Netflix | 针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等 |
Spring Cloud Config | 配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion |
Spring Cloud Bus | 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署 |
Spring Cloud Netflix | 针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等 |
Netflix Eureka | 云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移 |
Netflix Hystrix | 容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力 |
Netflix Zuul | 边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务 |
Netflix Archaius | 配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能 |
Spring Cloud for Cloud Foundry | 通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台 |
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等发送接收消息 |
Spring Cloud CLI | 基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件 |
学习路线
学习SpringBoot并实践
学习SpringCloud相关技术,对部分服务进行实践,根据实际情况学习新的技术
0.微服务构建–springboot
1.了解SpringCloud config
2.服务治理-SpringCloud Eureka
服务治理时微服务结构最基本和核心的模块。主要用来实现各个微服务的实例的自动化注册和发现。包括服务注册和服务发现
服务注册:接受每个服务单元的注册,并登记提供的服务,主机、端口号、版本号,通信协议。
服务发现:需要调用指定服务时,向注册中心咨询,获取所有服务的实例,并对其所需要的服务进行访问。
3.服务的调用–ribbon(负载均衡)和feign(服务间调用)
负载均衡是微服务架构中必须实现的内容,它是对系统高可用,降低网络压力,提高处理能力的重要手段之一。ribbon就实现了服务消费者的客户端负载均衡。
实际中对服务依赖的调用不止一处,一个接口会被多处调用,由于restTemplate的封装,每一个调用基本上都是模板化内容,在feign实现下,只需要创建一个接口并用注解来配置它,就能完成对服务方接口的绑定,简化ribbon开发。
4.为保证程序的可用性,防止程序出错导致网络阻塞—Hystrix
微服务架构中,将系统拆分为多个服务单元,各单元应用通过注册和订阅方式互相依赖,依赖通过远程调用的方式进行。当由于网络原因或自身问题出现故障或延迟,直接导致调用方对外服务也出现延迟,若调用方请求不断积压,依赖方形成任务积压,最终导致瘫痪。
在分布式架构中,当服务方发生单元故障,Hystrix的故障监控会向调用方返回一个错误响应,而不是长时等待。避免故障的蔓延。
5.当上述组件完备时,服务还需要个api网关,用来控制路由和负载–zuul
为了保证对外服务的安全性,服务端实现的服务接口都会权限机制。当服务增多时,便于统一维护和检验。API网关-zuul 可以将自己注册为Eureka中的应用,同时也获得了其他微服务的信息,通过定义路由规则方便运维工作,对于签名,校验等冗余问题,zuul有自己的一套过滤机制,可以创建各种校验过滤器。
6.方便服务配置文件统一管理实时更新,分布式配置中心组件-springCloud config server
为分布式服务基础设施和微服务提供集中化的外部配置支持
7.用于广播配置文件的更改或者服务之间的通讯-springCloud bus
8.服务链路追踪Spring Cloud Sleuth
在复杂的微服务架构中,一个请求会发展成一条分布式服务调用链路,在每条链路中,任何一个依赖服务的故障或延迟都会造成请求失败。Sleuth 通过对请求调用的跟踪,帮助快速定位问题根源和监控分析每条链路上的性能。
9.部署spring cloud项目–docker
10.通过http 方式注册服务–consul
以上只是简单的思路,但每个具体的组件涉及到的知识还有很多,