[db:标题]
摘要:什么是SpringCloud Spring Cloud 是一个基于 Spring Framework 的开源微服务架构工具集,用于简化和快速构建分布式系统。它提供了一套完整的微服务解决方案,基于 Spring Boot 框架,它像是一个&a
什么是SpringCloud
Spring Cloud 是一个基于 Spring Framework 的开源微服务架构工具集,用于简化和快速构建分布式系统。它提供了一套完整的微服务解决方案,基于 Spring Boot 框架,它像是一个"大的容器",将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。
我们在做后端服务时,单体应用使用Spring,需要快速构建,简化开发使用SpringBoot,构建分布式、微服务应用,使用SpringCloud。
SpringCloud的核心价值在于:
简化分布式系统开发
提供微服务架构的完整套件
通过集成成熟的技术组件,减少开发成本
提供开箱即用的微服务解决方案
SpringCloud有哪些组件
Eureka注册中心
Eureka是服务发现和注册中心,可以帮助服务消费者自动发现和调用服务提供者。
作用:服务提供者将自己注册到注册中心,服务消费者通过查询注册中心获取服务实例列表。
原理:Eureka 由 Service Provider(服务提供方)、Service Consumer(服务消费方)和 Eureka Server(服务注册中心)组成。
特点:Eureka 通过心跳检测、健康检查与客户端缓存机制,提高系统的灵活性与可用性。
Spring Boot 3.x移除了对 Java EE(Jakarta EE)|AP|(如 javax包)的支持,而 Eureka仍然依赖javax.xml.bind 等API,另一方面,Netflix 整个套件(Eureka/Ribbon/Hystrix/Zuul)进入维护模式,Spring Cloud 2020.x 起用自研组件替换Eureka。
可替代Eureka的方案有Zookeeper、Nacos、Consul。
Zookeeper是最早流行的开源分布式协调服务框架之一,同时也提供了分布式配置中心的功能。Zookeeper以高可用、一致性和可靠性著称,但是需要用户自己来开发实现分布式配置的功能。
Nacos是阿里巴巴开源的服务注册中心和配置中心。与Zookeeper不同的是,Nacos自带了配置中心功能,并提供了更多的可视化配置管理工具。Nacos的目标是成为一个更全面的云原生服务发现、配置和管理平台。
Consul是HashiCorp开源的服务注册中心和配置中心,提供了服务发现、健康检查、KV存储和多数据中心功能。Consul提供了更丰富的健康检查和路由功能,同时也提供了丰富的API和Web Ul。
Ribbon负载均衡组件
Ribbon是负载均衡组件,可以帮助客户端在多个服务提供者之间进行负载均衡。
功能:实现客户端负载均衡。
作用:基于某种负载均衡算法,自动帮助服务消费者请求。
特点:与 Zuul 默认集成,完成请求到后端实例的分发。
Spring Cloud 2020.0 (Ilford)起移除 Ribbon,默认使用 spring-cloud-loadbalancer;Netflix Ribbon 进入维护模式。
Ribbon的具体实现原理可以看我之前写过的文章:你都用过SpringCloud的哪些组件,它们的原理是什么?
Feign/OpenFeign:声明式HTTP客户端,可以帮助开发人员更容易地编写HTTP调用代码。
Feign的作用与特点如下
简化HTTP客户端开发:通过声明式接口,Feign自动生成HTTP请求代码,减少重复的样板代码。开发者只需定义接口方法,Feign就会将其映射到HTTP请求上。
支持多种注解:Feign原生支持Feign注解和JAX-RS注解,让HTTP请求的定义更加简洁。
整合负载均衡与服务发现:Feign默认与Ribbon(客户端负载均衡器)和Eureka(服务注册中心)整合,能自动实现服务地址解析和请求分发,提高系统的可扩展性和可靠性。
可扩展性强:支持多种HTTP客户端实现(如OkHttp、Apache HttpClient),开发者可以灵活切换底层库以适应不同性能需求。
支持自定义拦截器:可以通过实现Request.Interceptor或Response.Interceptor接口,对HTTP请求和响应进行拦截处理,例如添加认证信息、修改请求数据、记录日志等。
但是从Spring Cloud 2020版本开始,官方宣布Feign将不再维护和支持,推荐使用OpenFeign作为替代方案。
OpenFeign是Spring Cloud对Feign进行的二次封装和增强。
Feign和OpenFeign的区别:
所属生态:Feign是Netflix的独立开源项目,而OpenFeign是Spring Cloud生态的一部分。
