SpringCloud 初章

(个人)SpringCloud的学习规划

Spring Cloud是一套微服务治理的框架,几乎考虑到了微服务治理的方方面面。
包含关系如下:Spring>Spring Boot >SpringCloud
学习Spring Cloud的前提是掌握Spring Boot。


springCloud 结构图

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

以上只是简单的思路,但每个具体的组件涉及到的知识还有很多,