SpringCloud
笔记
【SpringCloud
官网】https://spring.io/projects/spring-cloud
【Spring
中文网】https://springdoc.cn/docs/
一、简介
1.1、基本介绍
SpringCloud
架构图:
开发分布式系统充满挑战。复杂性从应用层转移到了网络层,要求服务之间有更多的交互。让代码成为 "云原生 "意味着要处理 12 个因素的问题,如外部配置、无状态、日志记录和连接到支持服务。Spring Cloud
项目套件包含了许多在云中运行应用程序所需的服务。
SpringBoot
专注于快速、方便的开发单个个体微服务,SpringCloud
关注全局的服务治理框架。
1.2、Dubbo
和SpringCloud
对比
Dubbo
和SpringCloud
的对比:
最大区别:SpringCloud
抛弃了Dubbo
的RPC
通信,采用的是基于HTTP
的REST
方式。
严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了原生RPC
带来的问题。而且REST
相比RPC
更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
1.3、使用方式
- 导入相关依赖
- 编写相关配置
- 添加注解
@EnableXXX
二、组件详解
2.1、Eureka
服务注册与发现
【官网介绍】https://docs.spring.io/spring-cloud-netflix/reference/spring-cloud-netflix.html
【Github
链接】https://github.com/Netflix/eureka
Eureka
是Netflix
的一个子模块,也是核心模块之一。Eureka
是一个基于REST
的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo
的注册中心,比如Zookeeper
。相比而言,在CAP
原则中,Eureka
侧重AP
,而Zookeeper
侧重CP
。
2.2、Ribbon
负载均衡
【Github
链接】https://github.com/Netflix/ribbon
Spring Cloud Ribbon
是基于Netflix Ribbon
实现的一套客户端负载均衡的工具。简单的说,Ribbon
是Netflix
发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix
的中间层服务连接在一起。Ribbon
的客户端组件提供一系列完整的配置项,如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer
(负载均衡,LB
)后面所有的机器,Ribbon
会自动地基于某种规则(如简单轮询、随机连接等)去连接这些机器。我们也很容易使用Ribbon
实现自定义的负载均衡算法。
2.3、Feign
声明式客户端
【Github
链接】https://github.com/OpenFeign/feign
Spring Cloud OpenFeign
是一种基于Spring Cloud
的声明式REST
客户端,它简化了与HTTP
服务交互的过程。它将REST
客户端的定义转化为Java
接口,并且可以通过注解的方式来声明请求参数、请求方式、请求头等信息,从而使得客户端的使用更加方便和简洁。同时,它还提供了负载均衡和服务发现等功能,可以与Eureka、Consul
等注册中心集成使用。Spring Cloud OpenFeign
能够提高应用程序的可靠性、可扩展性和可维护性,是构建微服务架构的重要工具之一。
2.4、Hystrix
服务熔断
【Github
链接】https://github.com/Netflix/Hystrix/wiki
在分布式环境中,许多服务依赖关系中不可避免地会出现一些故障。Hystrix
是一个库,通过添加延迟容错和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix
通过隔离服务间的访问点、阻止服务间的级联故障并提供回退选项来实现这一点,所有这些都能提高系统的整体恢复能力。Hystrix
提供了服务熔断、服务降级、服务监控等功能。
2.5、Zuul
路由网关
【Github
链接】https://github.com/Netflix/zuul/wiki
Zuul
包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul
和Eureka
进行整合,将Zuul
自身注册为Eureka
服务治理下的应用,同时从Eureka
中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul
跳转后获得。
2.6、Config
外部配置
【Github
链接】https://github.com/spring-cloud/spring-cloud-config
Spring Cloud Config
是一个分布式配置管理系统,它提供了一个中心化的配置服务器来管理应用程序的配置信息。它允许开发人员将应用程序的配置信息存储在一个集中的位置,并将这些配置信息分发给多个应用程序实例。Spring Cloud Config
支持多种后端存储,包括Git、SVN、
本地文件系统等。它还提供了一组REST API
,可以用于动态获取配置信息,以便应用程序能够及时更新自己的配置。通过使用Spring Cloud Config
,开发人员可以轻松地管理和更新应用程序的配置信息,从而提高应用程序的可维护性和可扩展性。
评论区