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:一文读懂其原理与架构-阿里云开发者社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

庐山派K230学习日记2 MicroPython基础

MicroPython文档&#xff1a; https://docs.micropython.org/ MicroPython是编程语言 Python3 的精简高效实现&#xff0c;语法和 Python3 保持一致&#xff0c;但只实现了 Python 标准库的一小部分&#xff0c;并且经过优化&#xff0c;适用于物联网 (IoT)、消费电子和嵌入式…

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天&#xff0c;p177-p177 总结&#xff0c;总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;年份、省份、地方财政一般预算支出 4、范围&#xff1a;31省 指标解释&#xff1a;地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…

python小项目:给复制出来的段落前添加星号

给复制出来的段落前添加星号 最终效果二、实现步骤2.1 编写python脚本2.2 批处理脚本2.3 运行脚本 三、用到知识3.1 pyperclip 模块 最终效果 说明&#xff1a;复制四段内容&#xff08;段落实际不做限制&#xff09;&#xff0c;在windows终端输入 bulletPointAdder&#xff0…

【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数

二分查找 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置寻找旋转排序数组中的最小值搜索旋转排序数组寻找两个正序数组的中位数&#xff08;hard&#xff09; 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并…

后端java开发路由接口并部署服务器(四)

一、安装IntelliJ IDEA&#xff0c;安装包下载 1、官网下载 2、网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 打开IntelliJ IDEA&#xff0c;输入网盘资源文件内容 三、汉化处理 插件搜索chinese&#xff0c;就会找到相应的插件安装重启软件即可 四、新建后端j…

Vue.js 表单验证实战:一个简单的登录页面

修改日期备注2025.1.2初版 一、前言 Vue.js 学习第一天——学会一个带有简单表单验证的登录页面。通过这个项目&#xff0c;会对 Vue.js 的核心概念有了更深入的理解&#xff0c;加深掌握如何运用 Vue 的一些强大特性来实现动态交互和数据处理。 二、项目的基本结构 首先&a…

国产文本编辑器EverEdit - 批量转码转换行符

1 批量转码&转换行符 1.1 应用场景 如果用户批量在Windows编辑文件&#xff0c;要上传到异构系统&#xff0c;如&#xff1a;Linux&#xff0c;则需要批量转换编码和换行符&#xff0c;此时可以使用EverEdit的批量转码功能。 1.2 使用方法 选择主菜单文档 -> 批量转码…

Java实现下载excel模板,并实现自定义下拉框

GetMapping("excel/download")ApiOperation(value "模板下载")public void getUserRecordTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {OutputStream outputStream response.getOutputStream();InputStream…

成立一家无人机培训机构需要哪些基础配置

成立一家无人机培训机构&#xff0c;需要一系列基础配置来确保教学质量、学员安全以及机构的正常运营。以下是根据公开发布的信息整理出的关键基础配置&#xff1a; 一、场地配置 1. 飞行场&#xff1a;提供一个安全、宽敞的室外飞行环境&#xff0c;面积最好大于三千平米&…

读“将计算性能调高到极致的基点秘诀”的尝试

看到一篇文章&#xff0c;说最近阅读LAMMPS源码&#xff0c;悟出了很多道理。在计算性能优化这块&#xff0c;源代码作者很多写法我最初不以为意&#xff0c;后来发现是作者有意为之&#xff0c;就是为了把计算性能优化到极致。做计算仿真软件&#xff0c;也特别需要注意这些吧…

端口被占用

端口8080被占用 哈哈哈&#xff0c;我是因为后端项目跑错了&#xff0c;两个项目后端名称太像了&#xff1b; &#xff08;1&#xff09;netstat -aon | findstr 8080&#xff0c;找到占用8080端口的进程号&#xff0c;获取对应的进程号pid&#xff1b; &#xff08;2&#…

文件本地和OSS上传

这里写目录标题 前端传出文件后端本地存储阿里云OSS存储上传Demo实现上传ConfigurationProperties 前端传出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传文件</title> </head&g…

[人工智能] 结合最新技术:Transformer、CLIP与边缘计算在提高人脸识别准确率中的应用

随着人工智能的快速发展&#xff0c;特别是深度学习和自然语言处理领域的革命性技术&#xff0c;越来越多的前沿技术被应用于人脸识别中。Transformer架构、CLIP模型以及边缘计算的结合&#xff0c;正成为提升人脸识别准确率和应用效能的关键技术路径。特别是在多样化场景下&am…

Vue3 + ElementPlus动态合并数据相同的单元格(超级详细版)

最近的新项目有个需求需要合并单元列表。ElementPlus 的 Table 提供了合并行或列的方法&#xff0c;可以参考一下https://element-plus.org/zh-CN/component/table.html 但项目中&#xff0c;后台数据返回格式和指定合并是动态且没有规律的&#xff0c;Element 的示例过于简单&…

关于AI面试系统2025年趋势评估!

在快速发展的科技浪潮中&#xff0c;AI技术正以前所未有的速度渗透到各行各业。企业招聘领域&#xff0c;作为人才选拔的关键环节&#xff0c;也不例外地迎来了AI面试系统的广泛应用和持续创新。2025年&#xff0c;AI面试系统不仅成为企业招聘的主流工具&#xff0c;更在智能化…

MySQL 01 02 章——数据库概述与MySQL安装篇

一、数据库概述 &#xff08;1&#xff09;为什么要使用数据库 数据库可以实现持久化&#xff0c;什么是持久化&#xff1a;数据持久化意味着将内存中的数据保存到硬盘上加以“固化”持久化的主要作用是&#xff1a;将内存中的数据存储在关系型数据库中&#xff0c;当然也可以…

Vue3 组件

文章目录 Vue3 组件概述根组件定义和使用组件样式控制全局样式局部样式深度样式 Vue3 组件 概述 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行单独的思考。在实际应用中&#xff0c;组件常常被组织成层层嵌套的树状结构&#xff1a; 根…

怎么在家访问公司服务器?

在日常工作中&#xff0c;特别是对信息技术从业者而言&#xff0c;工作往往离不开公司的服务器。他们需要定期访问服务器&#xff0c;获取一些关键的机密文件或数据。如果您在家办公&#xff0c;并且需要处理未完成的任务&#xff0c;同时需要从公司服务器获取所需的数据&#…

IP-Guard对SolidWorks PDM 加密授权说明

SolidWorks PDM 加密授权说明 一、简介 该功能主要实现了,在SolidWorks Enterprise PDM环境下,可以正常"检入"和"检出" 加密文件,并可以正常预览加密文件。 二、操作说明 2.1 设置加密授权 安装客户端后,登录控制台,选择客户端计算机或组右键选择“…