目 录CONTENT

文章目录

SpringCloud 学习笔记

Nicholas
2024-09-27 / 0 评论 / 0 点赞 / 8 阅读 / 4584 字

SpringCloud笔记

SpringCloud官网】https://spring.io/projects/spring-cloud

Spring 中文网】https://springdoc.cn/docs/

一、简介

1.1、基本介绍

SpringCloud架构图:

20240927110101_286282.png

开发分布式系统充满挑战。复杂性从应用层转移到了网络层,要求服务之间有更多的交互。让代码成为 "云原生 "意味着要处理 12 个因素的问题,如外部配置、无状态、日志记录和连接到支持服务。Spring Cloud 项目套件包含了许多在云中运行应用程序所需的服务。

SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架。

1.2、DubboSpringCloud对比

DubboSpringCloud的对比:

20240927110101_313837.png

最大区别:SpringCloud抛弃了DubboRPC通信,采用的是基于HTTPREST方式。

严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了原生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

EurekaNetflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper。相比而言,在CAP原则中,Eureka侧重AP,而Zookeeper侧重CP

2.2、Ribbon负载均衡

Github 链接】https://github.com/Netflix/ribbon

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,RibbonNetflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将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包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。ZuulEureka进行整合,将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,开发人员可以轻松地管理和更新应用程序的配置信息,从而提高应用程序的可维护性和可扩展性。

0

评论区