Spring Cloud是什么?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud 与 微服务
微服务架构模式的目的是将大型的,复杂的,长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易进行局部改良.微服务的意思是每个服务应该足够小,小是指业务逻辑上的小.微服务的形象表示:
X轴: 水平扩展, 即在负载均衡服务器后增加多个运行实例
Z轴: 数据库的扩展, 即分库分表
Y轴: 功能分解, 即将不同职能的模块划分成不同的服务
Spring Cloud技术概览
主要是下面内容:
服务治理
分布式链路监控
消息组件
配置中心
安全控制
命令行工具
集群工具
每个模块又是由不同组件结合来解决,其实学习Spring Cloud就是学会Spring Boot整合这些组件,学会使用,深入理解就好.
Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,提供了完整的Service Registry 和 Service Discovery实现, 是Spring Cloud体系中最重要最核心的组件之一. Eureka相当于图书馆管理员,添加书需要到我这说一下,取书也得到我这报备.所以说Eureka在生产环境中一般是集群,至少两个,否则Eureka一旦挂掉将会影响整个服务.
Eureka就自动具有注册中心,负载均衡,故障转移的功能.
Hystrix
熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方节点,从而对延迟和故障提供更强大的容错能力.也就是微服务中多个服务层调用,基础服务的故障可能会导致级联故障,造成整个系统不可用,就是服务血崩效应,Hystrix就是在这种场景下来做故障隔离,Hystrix 会在某个服务连续调用 N 次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务。Hystrix 间隔时间会再次检查此服务,如果服务恢复将继续提供服务。
服务雪崩效应是一种因"服务提供者"不可用导致"服务消费者"的不可用,并且将不可用逐渐放大的过程.
zuul
zuul路由也是微服务架构不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务.具体作用就是服务转发,接受并转发所有内外部的客户端调用,使用 Zuul 可以作为资源的统一访问入口. zuul相当于门卫,对请求进行一些校验等.
Spring Cloud Config
配置中心,把配置文件放在远程服务器,集中化管理集群配置,支持本地存储,git以及svn.
这个组件是解决分布式系统的配置管理方案,包含了client和server两个部分,Server 提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client 通过接口获取数据、并依据此数据初始化自己的应用。
当所有配置存储在配置中心时,配置中心也成为一个很重要的组件,所以一般也建议做集群,支持配置中心高可用.
Spring Cloud Bus
事件,消息总线,用于在集群中传播状态变化,可与Spring Cloud Config联合支持热部署,也就是改变配置文件提交到版本库时,会自动触发对应实例的Refresh.
Spring Cloud Sleuth
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。
还有更多的组件,使用的时候再说.
组件的配套使用
Eureka负责服务的注册和发现,很好将各个服务连接起来
Hystrix负责监控服务之间的调用情况,连续多次失败进行熔断保护
Hystrix dashboard,Turvine负责监控Hystrix的熔断情况,给予图形化展示(可以理解为图形化工具)
Spring Cloud Config提供统一的配置中心服务
配置文件发生改变时,Spring Cloud Bus负责通知各个服务去获取最新的配置信息(实现热部署)
所有对外的请求和服务都通过zuul进行转到,起到API网关的作用
sleuth + Zipkin将所有请求数据记录下来,方便进行后续分析.
欢迎工作一到五年的Java工程师朋友们加入Java技术交流:585550789
原文地址:https://blog.51cto.com/14226273/2362419