Spring Cloud入门-了解Spring Cloud(一)

什么是Spring Cloud

Spring Cloud,基于 Spring Boot 提供了一套微服务解决方案,包括服务注册与发现配置中心全链路监控服务网关负载均衡熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型
中立的开源组件。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud 的发展背景

不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:

  1. 代码结构混乱:业务复杂,导致代码量很大,管理会越来越困难。同时,这也会给业务的快速迭代带来巨大挑战;
  2. 开发效率变低:开发人员同时开发一套代码,很难避免代码冲突。开发过程会伴随着不断解决冲突的过程,这会严重的影响开发效率;
  3. 排查解决问题成本高:线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只有一套代码,需要重新编译、打包、上线,成本很高。

简单的说,spring cloud 的出现就是为了解决单体应用随着系统的复杂度增高,暴露出的各种问题,近年来已经逐渐取代了单体应用。这种趋势将会越来越明显。

设计初衷

协调各个微服务,简化分布式系统开发。

优缺点

同比微服务框架,相比dubbo、Kubernetes有如下几个优点

  1. 产出于Spring大家族,Spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善
  2. 轻轻松松几行代码,注解或者配置就完成了熔断、负载均衡、注册中心的各种平台功能
  3. Spring Cloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案
  4. 服务拆分粒度更细,耦合度比较低,有利于资源重复利用,有利于提高开发效率
  5. 可以更精准的制定优化服务方案,提高系统的可维护性
  6. 减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发
  7. 微服务可以是跨平台的,可以用任何一种语言开发
  8. 适于互联网时代,产品迭代周期更短

同样也有下列几个缺点

  1. 微服务过多,治理成本高,用的机器也多了
  2. 分布式开发带来的挑战性,比如,分布式事物,容错

Spring Cloud 系统架构

在这里插入图片描述

主要项目

Spring Cloud 的子项目,大致可以分成两类,一类是对现有框架"Spring Boot" 的封装和抽象,也是数量最多的项目,第二类开发了分布式系统的基础设施的实现,如Spring Cloud Stream扮演者就是Kafka,ActiveMQ这样的角色。

Spring Cloud Config

集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。

Spring Cloud Netflix

Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。

  • Eureka: 服务治理组建,包括服务端的注册中心和客户端的服务发现
  • Ribbon: 负载均衡的服务调用组件,具有多种负载均衡调用策略
  • Hystrix: 服务容错组件,实现断路器模式,为依赖的服务出错和延迟提供了容错能力
  • Feign: 基于Ribbon和 Hystrix 的声明式服务调用组件
  • Zuul: Api网关,对请求提供路由及其过滤策略

Spring Cloud Bus

用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置
可以在不重启微服务的情况下,更新配置文件,让其立刻生效。

Spring Cloud Consul

基于Hashicorp Consul的服务治理组件。

Spring Cloud Security

安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持

Spring Cloud Sleuth

Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。

Spring Cloud Stream

轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。

Spring Cloud Task

用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。

Spring Cloud Zookeeper

基于Apache Zookeeper的服务治理组件。

Spring Cloud Gateway

API网关组件,对请求提供路由及过滤功能。

Spring Cloud OpenFeign

基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在Spring Cloud 2.0中已经取代Feign成为了一等公民。

Spring Cloud和SpringBoot版本对应关系

Spring Cloud VersionSpringBoot Version
Hoxton2.2.x
Greenwich2.1.x

和Spring Boot的关系

  1. Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具。Spring -> Spring Boot > Spring Cloud 这样的关系。
  2. Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系
  3. Spring Boot专注于快速、方便集成的单个个体微服务,Spring Cloud是关注全局的服务治理框架
  4. Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,可以不基于Spring Boot吗?不可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值