Spring Cloud 学习笔记一:Spring Cloud 概述

目录

Spring Cloud 简介

Spring Cloud 组件

五大核心组件

其他组件


Spring Cloud 简介
Spring Cloud为开发人员提供了快速构建分布式系统中常见模式的工具(例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态)。分布式系统的协调产生了模板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发者自己的笔记本电脑、裸机数据中心以及云计算等托管平台。最重要的是,基于SpringBoot,会让开发微服务架构非常方便。

传统单体架构在微小企业中比较常见,典型代表就是一个应用、一个数据库、一个 web 容器就可以运行一个项目,里面集成了所有的功能。这在小型项目里面是比较好维护的,功能不多,也不复杂,但扩展性和可靠性较差。因为所有功能集成在一个服务或者一个 war 包中,修改某个功能时,需要整个服务一起打包。前期开发较快,后期维护比较困难。

后面出现了服务化架构,也称之为 SOA 架构,SOA 代表面向服务的架构,将应用根据不同的指责分为不同的模块,不同的模块通过特定的协议和接口进行交互。这样整个系统切分成很多个组件来完成请求,当流量过大时通过水平扩展响应的组件来支撑,所有的组件通过交互来满足整体的业务需求。

SOA 服务的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是 SOA 的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚、服务之间低耦合。一般使用Dubbo来进行服务的治理,没有使用 Spring Cloud 之前,基本都是使用 Dubbo 来拆分服务,进行服务之间的调用。

简单来说,微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。微服务架构强调业务系统需要彻底的组件化和服务化,一个组件就是一个产品,可以独立对外提供服务,微服务不再强调传统 SOA 架构里面比较重的 ESB 企业服务总线。微服务强调每个微服务都有自己独立的运行空间,包括数据库资源。微服务架构本身来源于互联网的思路,因此组件对外发布的服务强调了采用 HTTP Rest API 的方式来进行,微服务的切分粒度会更小。

微服务的好处有:服务独立、扩展性好、可靠性强,但同时,也面临一些新的问题,比如运维复杂性,分布式复杂性、监控复杂性等等。

 

Spring Cloud 组件
五大核心组件
Eureka:服务注册中心,同其他服务注册中心(Zookeeper、Consul、Nacos)一样,支持高可用配置。如果 Eureka 以集群模式部署,当集群中有分片出现故障时,那么 Eureka 就转入自我保护模式。它允许在分片故障期间继续提供服务的发现和注册,当故障分片恢复运行时,集群中其他分片会把它们的状态再次同步回来。每一个服务中心都会有一个 Eureka Client 组件,这个组件负责将这个服务的信息注册到 Eureka Server 中。Eureka Server 是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号。

Ribbon:Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡器,它可以在通过客户端中配置的。ribbonServerList 服务端列表去轮询访问以达到服务均衡的作用。当 Ribbon 和 Eureka 联合使用时,Ribbon 的服务实例清单 RibbonServerList 会被 DiscoveryEnabledNIWSServerList 重写,扩展成从 Eureka 注册中心中获取服务端列表。同时它也会用 NIWSDiscoveryPing 来取代 IPing ,它将职责委托给 Eureka 来去确定服务端是否已经启动。

Feign:建立服务连接请求,首先,对某个接口定义了 @FeginClient 注解,Fegin 就会针对这个接口创建一个动态代理,接着调用接口的时候,本质就是调用 Fegin 创建的动态代理,Fegin 的动态代理会根据在接口上的 @RequestMapping 等注解,来动态构造要请求的服务的地址,针对这个地址,发起请求、解析响应。

Hystrix:在微服务架构中,存在着那么多的服务单元,若一个单元出现故障,就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定。为了解决这样的问题,产生了断路器等一系列的服务保护机制。在分布式架构中,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。Hystrix 具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能,Hystrix 使用舱壁模式实现线程池的隔离,它会为每一个依赖服务创建一个独立的线程池,这样就算某个依赖服务出现延迟过高的情况,也只是对该依赖服务的调用产生影响,而不会拖慢其他的依赖服务。

Zuul:微服务网关。这个组件是负责网络路由的。Zuul 提供了一套过滤器机制,可以支持在 API 网关无附上进行统一调用来对微服务接口做前置过滤,已实现对微服务接口的拦截和校验。

 

其他组件
Config:分布式配置管理。Spring Cloud Config 为分布式系统中的外部化配置提供了服务器和客户端支持。有了Config Server,就有了一个中心位置来管理所有环境中的应用程序的外部属性。客户机和服务器上的概念都映射到 Spring 环境和 PropertySource 抽象上,因此它们非常适合 Spring 应用程序,但也可以用于以任何语言运行的任何应用程序。当应用程序通过部署管道从开发到测试并进入生产时,可以管理它们之间的配置。

Sleuth:服务跟踪。

Stream:构建消息驱动的微服务应用程序的框架。

Bus:消息代理的集群消息总线。

还有 Cli、Task等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值