[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生态的一部分。
阅读全文