什么是SpringCloud

可能会有小错误, 如有, 还请您评论指出

Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线线、负载均衠、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。 Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组台起来,通过 Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元, Spring Cloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多, Spring Cloud做为大管家就需要提供各种方案来维护整个生态
在这里插入图片描述
SpringCloud解决的现实问题
Spring Cloud对于中小型互联网公司来说是一种福音,
因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,
使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。
同时,随着近几年微服务架构和Docker容器概念的火爆,
也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,
尤其是在目前五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,
意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。

概念定义

SpringCloud 是一个微服务框架, 相比Dubbo等RPC框架, SpringCloud提供了全套分布式系统解决方案
SpringCloud对微服务基础框架Netflix的多个开源组件进行了封装, 同时又实现了云端平台以及和SpringBoot开发框架的集成
SpringCloud为开发者提供了快速构建分布式系统的工具, 开发者可以快速的启动服务或构建应用, 同时能够快速和云平台资源进行对接
SpringCloud为微服务架构开发涉及的配置管理, 服务治理, 熔断机制, 智能路由, 微代理, 控制总线, 一次性token, 全局一致性锁, leader选举, 分布式session, 集群状态管理等操作提供了一种简单地开发方式

SpringCloud 版本

SpringCloud不像其他Spring子项目那样相对独立, 它是一个拥有诸多子项目的大型综合项目
SpringCloud可以说是为服务架构解决方案的综合套件组合 其包含的子项目也都是独立进行着更新与迭代, 各自都维护着自己的发布版本. 因此每个SpringCloud版本包含着多个不同版本的子项目, 为了管理每个版本的子项目清单, 避免SpringCloud版本号与其子项目版本号混淆, 没有采用版本号方式, 而是采用命名方式(采用了伦敦地铁站的名字, 根据字母表顺序来对应版本时间顺序 如: Angel.SR6, Brixton.SR5, Brixton.SR7, Camden.M1)
注意: 使用Brixton版本必须要使用1.3x, 而不能使用1.4x

SpringCloud 子项目

在这里插入图片描述

  1. Netflix Eureka : (服务发现)
    在这里插入图片描述
    作用 : 实现服务治理(服务注册与发现)
    Spring Cloud Eureka 是 Spring Cloud Netflix 项目下的服务治理模块
    一个RESTful服务, 用来定位运行在AWS地区(Region)中的中间层服务. 由两个组件组成 : Eureka服务器和Eureka客户端. Eureka服务器用作服务注册服务器. Eureka客户端是一个Java客户端, 用来简化与服务器的交互, 作为轮询负载均衡器, 并提供服务的故障切换支持. Netflix在其生产环境中使用的是另外的客户端, 他提供基于流量, 资源利用率以及出错状态的加权负载均衡
  2. Netflix Ribbon : (客户端负载均衡)
    在这里插入图片描述
    Ribbon 主要提供客户端的软件负载均衡算法
    Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具 它基于Netflix Ribbon实现, 通过Spring Cloud 的封装, 可以让我们轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用
    Ribbon 客户端组件提供一系列完善的配置选项, 比如连接超时, 重试, 重试算法等, Ribbon内置可插拔, 可定制的负载均衡组件
    一些负载均衡策略 :
    简单轮询负载均衡
    加权响应时间负载均衡
    区域感知轮询负载均衡
    随机负载均衡
    Ribbon 还包括以下功能 :
    易于与服务发现组件(比如Netflix的Eureka)集成
    使用Archaius 完成运行时配置
    使用JMX 暴露运维指标, 使用Servo发布
    多种可插拔的序列化选择
    异步和批处理操作
    自动SLA框架
    系统管理 / 指标控制台
  3. Netflix Hystrix : (断路由)
    在这里插入图片描述
    作用 : 断路由, 保护系统, 控制故障范围
    为了保证其高可用 单个服务器通常会集群部署, 由于网络原因或者自身的原因, 服务并不能保证100%可用, 如果单个服务出现问题, 调用这个服务就会出现线程阻塞, 此时若有大量的请求涌入, Servlet容器的线程资源会被消耗完毕, 导致服务瘫痪, 服务与服务之间的依赖性, 故障会传播, 会对整个微服务系统造成灾难性的严重后果, 这就是服务故障的”雪崩”效应
    断路由可以防止一个应用程序多次试图执行一个操作, 即很可能失败, 允许他继续而不等待故障恢复或者浪费CPU周期, 而它确定该故障是持久的. 断路器模式也使应用程序能够检测故障是否已经解决, 如果问题似乎已经得到纠正, 应用程序可以尝试调用操作
    在这里插入图片描述
    断路器增加了稳定性和灵活性, 以一个系统, 提供稳定性, 而系统从故障中恢复, 并尽量减少此故障的对性能的影响, 它可以帮助快速的拒绝对一个操作, 即很可能失败, 而不是等待操作超时(或者不返回)的请求, 以保持系统的响应时间. 如果断路器提高每次改变状态的时间的事件, 该信息可以被用来监测由路由器保护系统的部件的健康状况, 或以提醒管理员当断路器跳闸吗以再打开状态
    在这里插入图片描述
    流程图
    在这里插入图片描述
  4. Netflix Zuul : (服务网关)
    在这里插入图片描述
    作用 : api网关, 路由, 负载均衡等多种作用
    类似nginx, 反向代理的功能, 不过netflix自己增加了一些配合其他组件的特性
    在微服务架构中 后端服务往往不直接开放给调用端, 而是通过一个API网关根据请求的URL 路由到相应的服务, 当添加API网关后, 在第三方调用端和服务之间就创建了一面墙, 这面墙直接与调用方通信进行权限控制, 后将请求均衡发给后台服务端
    1. 路由 2. 控制 3. 控流
  5. Spring Cloud Config : (分布式配置)
    在这里插入图片描述
    配置管理工具, 支持使用Git存储配置内容, 支持应用配置的外部存储, 支持客户端配置信息刷新, 加解密配置等内容
    这个还是静态的, 得配合Spring Cloud Bus 实现动态的配置更新
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值