Spring Cloud学习(一)
Spring Cloud是什么?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud 与 微服务
微服务的概念起源于: http://www.cnblogs.com/liuning8023/p/4493156.html(英文: https://martinfowler.com/articles/microservices.html)
微服务架构模式的目的是将大型的,复杂的,长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易进行局部改良.微服务的意思是每个服务应该足够小,小是指业务逻辑上的小.微服务的形象表示:

- 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将所有请求数据记录下来,方便进行后续分析.
参考:纯洁的微笑(http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html) 和 Wind MT(https://windmt.com/2018/04/14/spring-cloud-0-microservices/)
Spring Cloud学习(一)的更多相关文章
- spring cloud 学习(9) - turbine stream无法在eureka注册的解决办法
turbine是啥就不多解释了,初次接触的可以移步spring cloud 学习(4) - hystrix 服务熔断处理 拉到最后看一下,turbine stream默认情况下启动成功后,eureka ...
- Spring Cloud学习(一):Eureka服务注册与发现
1.Eureka是什么 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. Eureka ...
- spring cloud 学习资料
spring cloud 学习资料 网址 拜托!面试请不要再问我Spring Cloud底层原理 https://mp.weixin.qq.com/s/ZH-3JK90mhnJPfdsYH2yDA
- Spring Boot和Spring Cloud学习资源推荐
Spring Boot和Spring Cloud学习资源推荐 比较好的学习资源,分享一下. 1.Spring Boot官方文档:http://projects.spring.io/spring-b ...
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- 推荐几个Spring Cloud学习资料
研究Spring Cloud也有一段时间了,手头上有一点收集的资料,分享给小伙伴们学习. 博客 1.跟我学Spring Cloud 2.周立|Spring Cloud 3.Spring Cloud基础 ...
- .net core+Spring Cloud学习之路 二
前言: 原本计划这次写一下搭建eureka群集.但是发现上次写的只是服务的注册,忘了写服务的发现,所以这次先把服务发现补上去. 我们基于上篇文章,再新建两个.net core web api项目,分别 ...
- .net core+Spring Cloud学习之路 一
文章开头唠叨两句. 2019年了,而自己参加工作也两年有余了,用一个词来概括这两年多的生活,就是:“碌碌无为”. 也不能说一点收获都没有,但是很少.2019来了,我立志要打破现状,改变自己,突破自我. ...
- spring cloud学习填坑笔记
最近在学习spring cloud,由于学习资料具有普遍性,部分应个人原因导致的小细节问题,往往很难找到解决的办法.这特别记录一下自己遇到的一些问题. 一.eureka-server加入securit ...
随机推荐
- Spring Cloud 入门教程(九): 路由网关zuul
在微服务架构中,需要几个关键的组件,服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个组件可以组建一个简单的微服务架构.客户端的请求首先经过负载均衡(zuul.Ngnix),再 ...
- for循环两个略骚的写法
骚写法 或许你知道,总之我觉得很酷,希望你也这么认为. 递增遍历 最常见场景,从 0 到 10 的遍历,不输出 10: for(let i = -1; ++i < 10;) { console. ...
- JVM规范系列第5章:加载、链接与初始化
加载是根据特定名称查找类或接口类型的二进制表示(Binary Representation),并由此二进制表示创建类或接口的过程. 加载,就是指去寻找类或接口的过程. 链接是为了让类或接口可以被 Ja ...
- cometd简单用例
准备工作 整个例子的源码下载:http://pan.baidu.com/s/1gfFYSbp 下载服务端jar文件 Comet4J目前仅支持Tomcat6.7版本,根据您所使用的Tomcat版本下载[ ...
- Python-集合-17
''' 集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复. {} ''' set1 = set({1,2,3}) # set2 = {1,2,3,[2,3],{'name':'a ...
- php ajax登录注册
用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录,登录成功后只刷新页面局部,从而提升了用户体验度.本文将使用PHP和jQuery来实现登录和退出功能. 准备数据库 本 ...
- HTTP 及相关知识
什么是HTTP.流程? 什么是AJAX.方法.状态码?
- PHP文件系统操作常用函数
虽然PHP提供很多内置的文件处理函数,但是分得特别细,有一些操作需要多个函数一起使用才能达到目标,比如删除非空文件夹的所有内容,遍历文件夹等功能,下面各个函数是学习的时候整理的,有的是教程里的,有的是 ...
- Linux下Vim使用备忘
1.Insert键,决定是Insert模式还是Replace模式. 2.Esc键,退出编辑模式(Insert Or Replace). 3.:wq (ZZ) 保存并退出Vim. http://caib ...
- [转帖]TMD为你揭秘中国互联网下半场所有秘密
https://www.iyiou.com/p/35099.html 李安说,<比利.林恩的中场战事>是“一个成长的故事”.中国互联网也行至中场,下半场如何走,成长的方向在哪里,成当下关键 ...