欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > SpringCloud(一)--SpringCloud简介

SpringCloud(一)--SpringCloud简介

2025/1/5 14:05:07 来源:https://blog.csdn.net/qq_59670390/article/details/144896435  浏览:    关键词:SpringCloud(一)--SpringCloud简介

一. 引言

​ 在微服务架构日益盛行的今天,Spring Cloud凭借其简单易用、功能强大的特性,成为了众多开发者的首选。本文仅为学习所用,联系侵删。

二. SpringCloud概述

2.1 定义

​ Spring Cloud是一系列框架的有序集合,它巧妙地利用了Spring Boot的开发便利性来简化分布式系统基础设施的开发。在微服务架构中,许多复杂且繁琐的分布式系统问题,如服务发现注册、配置中心、消息总线、负载均衡、熔断机制以及数据监控等,通过Spring Cloud都可以以Spring Boot的开发风格进行快速实现,并做到一键启动和部署。这使得开发者能够更专注于业务逻辑的实现,而无需在底层技术上花费过多精力。

​ “微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。

​ 简而言之,微服务体系结构是一种将单个应用程序开发为一组小型服务的方法,每个应用程序在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务的集中管理最少,可能以不同的编程语言编写,并使用不同的数据存储技术。

2.2 特点

Spring Cloud之所以能够在微服务领域占据一席之地,与其鲜明的特点密不可分:

集成性:Spring Cloud深度集成了Netflix开源组件,这些组件在微服务领域有着广泛的应用和认可。通过集成这些组件,Spring Cloud为开发者提供了一套完整且经过实践检验的微服务解决方案。

易用性:Spring Cloud遵循Spring Boot的开发风格,使得开发者能够快速地理解和上手。同时,它提供了丰富的文档和社区支持,帮助开发者解决在使用过程中遇到的问题。

灵活性:Spring Cloud允许开发者根据项目的实际需求选择适合的组件进行集成,这使得它能够满足不同规模和复杂度的微服务应用的需求。

扩展性:随着业务的发展,微服务应用可能需要不断地进行扩展。Spring Cloud提供了良好的扩展性,使得开发者能够轻松地对应用进行水平或垂直扩展。

可靠性:Spring Cloud通过一系列机制,如熔断器、负载均衡等,确保微服务应用的稳定性和可靠性。即使在面对高并发、故障转移等复杂场景时,也能保持良好的性能表现。

说明:

  • 微服务架构只是一个样式,一个风格。
  • 将一个完成的项目,拆分成多个模块去开发。
  • 每一个模块都是独立运行在自己的容器中的。
  • 每一个模块都是需要相互通讯的(HTTP、RPC、MQ)。
  • 每一个模块之间是没有依赖关系的,可以单独部署。
  • 可以使用多种语言去开发不同的模块。
  • 可以使用MySQL数据库、redis、ES去存储数据,也可以使用多个使用MySQL数据库。
  • 总结:将复杂臃肿的单体应用进行细粒度的划分,没个拆分出来的服务各自打包部署。

三. SpringCloud的主要模块

3.1架构图

如图:

image

img

3.2 实践指南:

下面将通过一个具体的案例来介绍如何使用Spring Cloud实现服务拆分、注册与发现、负载均衡以及容错处理等核心功能。

1. 服务拆分

首先,我们需要将单体应用拆分成多个微服务。假设我们有一个电商应用,可以将其拆分为用户服务、商品服务、订单服务等。

每个服务都是一个独立的Spring Boot应用,具有自己的pom.xml文件,并引入相应的Spring Cloud依赖。

用户服务 pom.xml 示例:

<dependencies>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  </dependency>  <!-- 其他依赖 -->  
</dependencies>

image.gif

2. 注册与发现

使用Eureka作为服务注册中心,每个微服务启动时都会向Eureka注册,并在Eureka的管理界面上展示。其他服务可以通过Eureka发现其他服务的地址。

启用Eureka客户端:

在每个服务的application.propertiesapplication.yml文件中,配置Eureka客户端的相关属性。

eureka:  client:  service-url:  defaultZone: http://localhost:8761/eureka/

image.gif

在商品服务的业务逻辑中,可以通过注入UserClient来调用用户服务的方法,而不需要关心具体的服务地址和负载均衡策略。

3. 容错处理

Spring Cloud提供了Hystrix作为容错处理组件。通过在方法上添加@HystrixCommand注解,可以指定熔断、降级等策略。

商品服务中调用用户服务的容错处理示例:

@Service  
public class ProductService {  @Autowired  private UserClient userClient;  @HystrixCommand(fallbackMethod = "getUserByIdFallback")  public User getUserById(Long userId) {  return userClient.getUserById(userId);  }  public User getUserByIdFallback(Long userId, Throwable e) {  // 降级逻辑,例如返回默认用户或记录日志等  return new User(); // 示例:返回一个空用户对象  }  
}

image.gif

在这个示例中,如果调用userClient.getUserById(userId)方法失败(例如网络问题或用户服务不可用),则会执行getUserByIdFallback方法作为降级逻辑。

四. 参考资料

070016)]

在这个示例中,如果调用userClient.getUserById(userId)方法失败(例如网络问题或用户服务不可用),则会执行getUserByIdFallback方法作为降级逻辑。

四. 参考资料

  1. Spring Cloud:一文读懂其原理与架构-阿里云开发者社区

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com