1. 初始认识 Spring Cloud

1. 初始认识 Spring Cloud

@

目录
  • 1. 初始认识 Spring Cloud
  • 前言
  • 2. Spring Cloud 基本介绍
  • 3. 系统架构的演变过程
    • 3.1 单机架构
    • 3.2 动静分离架构:静态缓存 + 文件存储
    • 3.3 分布式架构:业务拆分 + 负载均衡
    • 3.4 微服务架构:使用 Spring Cloud
  • 4. Spring Cloud 全面说明
    • 4.1 Spring Cloud 和 Spring Boot 版本对应关系
    • 4.2 Spring Cloud 组件选型
  • 5. Spring Cloud Alibaba 基本介绍
  • 6. 分布式微服务技术选型
    • 6.1 Spring Cloud 原生组件的几大缺点
    • 6.2 Spring Cloud Alibaba 的优势
    • 6.3 分布式微服务技术选型建议
  • 8. 最后:


前言

  • 对应上一篇学习内容:🌟🌟🌟
  • 对应下一篇学习内容:🌟🌟🌟

2. Spring Cloud 基本介绍

Spring Cloud 官方文档地址:https://spring.io/projects/spring-cloud

在这里插入图片描述

在学习 Spring Cloud 微服务技术之前,我们可以先来思考一个问题:

如果没有微服务技术,是不是程序员就不能开发大型项目了?

答案是:可以的。我们可以对于大型项目进行模块化划分,对各个模块进行实现,模块之间更多的是通过 API 调用完成,耦合度较高 ,不利于扩展和维护,其实,在以前是没有微服务技术的时候,很多大型项目就已经使用了微服务的概念,只是当时不叫微服务 。但用的就是微服务的思想。随着时代的发展,微服务越来越重要,就被我们的 Spring 公司进行了一个开源的整合,定义的行业的规范,叫做为了现在的微服务技术

**目前典型的微服务技术是:“Spring Cloud”和“Spring Cloud alibaba” ** 。

标准的微服务解决方案:“Spring Cloud”和“Spring Cloud alibaba” 出现的原因和带来的价值:

  1. 微服务可以根据业务不同,将一个大项目,分解成**不同的服务(微服务:比如:{搜索服务,网关服务,配置服务,存储服务,发现服务等})
  2. 各个服务器通过分布式方式进行工作,从而可以高效,快速,稳定的 完成复杂的功能。
  3. 换句话说:就是将原来的大项目的某些模块,抽出形成微服务,配合分布式工作方式 ,从而高效,快速,稳定的完成复杂业务。

下面我们以搜狐的网站,构建绘制一个简单的理解的示意图:

在这里插入图片描述

根据上述示图情况;Spring 社区,大旗一挥,整合优质组件:

特别说明:Spring 整合的优质组件主要分为三大类:NetFlix,Alibaba,自己Spring社区开发的

  1. 在高并发时,解决服务熔断降级 问题,保证系统的高可用性
  2. 在服务器集群时,要解决负载均衡问题
  3. 在复杂的网络情况下,要保证数据存储的稳定性一致性
  4. 提供网关服务。
  5. 等等其它技术问题

在这里插入图片描述

3. 系统架构的演变过程

3.1 单机架构

简单是说:就是少量用户,单个服务器配置。

在这里插入图片描述

3.2 动静分离架构:静态缓存 + 文件存储

在这里插入图片描述

3.3 分布式架构:业务拆分 + 负载均衡

在这里插入图片描述

3.4 微服务架构:使用 Spring Cloud

在这里插入图片描述

img


4. Spring Cloud 全面说明

"微服务" 一词源于 Martin Fowler 的名为 Microservices 的博文,简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个 原本独立的系统拆分成多个小型服务 ,这些服小型服务都在各自独立的进程中运行,服务之间通过基于HTTPRESTful API 进行通信协作。

被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制。由于有轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写,但是这里我们进行学习的是使用Java语言

Spring Cloud 全面说明:

  1. Spring Cloud 来源于 Spring ,是更高层次的,架构视角的综合性大型项目,目标宗旨在 “在构建一套标准化的微服务解决方案,让架构师在使用微服务理念构建系统时,面对各个环节的问题都可以找到相应的组件来处理”
  2. Spring Cloud 是 Spring 社区为为微服务架构提供的一个 “全家桶” 套餐。套餐中各个组件之间的配合,可以减少在组件的选型和整合上花费的精力,可以快速构建起基础的微服务架构系统,是微服务架构的最佳落地方案。
  3. Spring Cloud 天然支持 Spring Bood(各自之间都存在对应的要求的版本),使用门槛较低
  4. 解决与分布式系统相关的复杂性:网络问题,延迟开销,贷款问题,安全问题。
  5. 处理服务发现的能力:服务发现允许集群中的进程和服务找到彼此并进行通信
  6. 解决冗余问题:冗余问题经常发生在分布式系统中
  7. 解决负载平衡:改进跨多个计算资源:例如:计算机资源,网络连接,中央处理单元的工作负载分布。

Spring Cloud 核心组件图: 官网文档地址:https://spring.io/projects/spring-cloud

在这里插入图片描述

在这里插入图片描述

Spring Cloud Alibaba 文档地址: https://github.com/alibaba/spring-cloud-alibaba

在这里插入图片描述

Spring Cloud Alibaba 中文版文档地址: https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/README-zh.md

在这里插入图片描述

Spring Cloud Netflix 官网地址: https://github.com/Netflix

在这里插入图片描述

Spring Cloud 核心组件:

在这里插入图片描述

在这里插入图片描述

Spring Cloud 分布式示意图:

Spring Cloud 分布式示意图:官网地址:https://spring.io/microservices

在这里插入图片描述

Spring Cloud 是微服务的落地

Spring Cloud 体现了微服务的弹性设计

微服务的工作方式一般式基于分布式的

Spring Cloud 仍然是 Spring 家族一员,可以解决微服务的分布式工作方式带来的各种问题

Spring Cloud 提供很多组件,比如:服务发现,负载均衡,链路中断,分布式追踪和监控,甚至提供 API gateway 功能。

4.1 Spring Cloud 和 Spring Boot 版本对应关系

关于 Spring Cloud 和 Spring Boot 版本对应关系的,官方地址如下:https://spring.io/projects/spring-cloud

在这里插入图片描述

4.2 Spring Cloud 组件选型

特别说明:对应打上了 ✔️ 的表示,推荐使用的组件,而对应打上 ❌ 的,则是表名不建议使用该组件。换一种。

在这里插入图片描述

5. Spring Cloud Alibaba 基本介绍

Spring Cloud Alibaba 的官方文档:https://github.com/alibaba/spring-cloud-alibaba

在这里插入图片描述

Spring Cloud Alibaba 的官方中文文档:https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/README-zh.md

在这里插入图片描述

Spring Cloud Alibaba 主要的功能如下:

  • 服务限流降级:默认支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
  • 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成对应 Spring Cloud 版本所支持的负载均衡组件的适配。
  • 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
  • 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
  • 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
  • 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
  • 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

6. 分布式微服务技术选型

6.1 Spring Cloud 原生组件的几大缺点

  1. Spring Cloud 部分组件停止维护和更新,给开发带来不便。
  2. Spring Cloud 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制。
  3. Spring Cloud 配置复杂,难以上手

6.2 Spring Cloud Alibaba 的优势

  1. 阿里使用过的组件经历了考验高并发,高性能,高可用 ,性能强悍,设计合理,现在开源出来供大家使用。
  2. 搭配完善的可视化界面,给开发运维带来极大的便利搭建简单,学习曲线低。

6.3 分布式微服务技术选型建议

  1. Spring Cloud Alibaba 组件为主
  2. Spring Cloud 为辅,比如:
    1. SpringCloud-Ribbon:负载均衡
    2. SpringCloud-OpenFeign:调用远程服务
    3. SpringCloud-GateWay:API网关
    4. SpringCloud-Sleuth:调用链监控等

8. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

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

相关文章

请问有哪些好用的项目管理工具?做个项目经理需要哪些能力?

常用的项目管理工具: 项目管理工具种类繁多,适用于不同规模和类型的项目。以下是一些常见且功能强大的项目管理工具: 1. Trello特点:看板式任务管理工具,简单易用,适合小型项目或团队。任务通过卡片和列表进行管理,可以灵活拖动和更新进度。 适用场景:适合小团队、创业…

大家做项目管理时都用的什么工具?

在项目管理中,常用的工具涵盖了从任务分配、团队协作、资源管理、时间追踪到进度跟踪等各个方面。下面我将介绍一些项目经理和团队常用的工具,按功能类别进行分类: 1. 任务管理和项目进度跟踪 这些工具帮助团队规划任务、设置优先级,并跟踪任务进度。Trello:基于看板的工具…

IDEA -去除 mapper.xml 中的 SQL 语句黄色下划线

问题描述 当我们使用idea开发java项目时,经常会与数据库打交道,一般在使用mybatis的时候需要写一大堆的mapper.xml以及SQL语句,每当写完SQL语句的时候总是有黄色下划线,看着很不舒服。 解决方案: setting---Editor----Inspections-----SQL 打开后找到图中的两个配置项,去…

项目管理有哪些常用的方法和工具?

在项目管理中,有许多方法和工具可以帮助项目经理有效地规划、执行和控制项目,确保项目按时、按预算和按质量标准完成。以下是一些常用的项目管理方法和工具: 1. 项目管理方法 1.1 瀑布法 (Waterfall)概述:瀑布法是一种传统的项目管理方法,它遵循线性、顺序的流程,每个阶段…

解决goland 导入项目后import里的包报红问题

1.Goland--->Preferences...--->Go--->GOPATH--->Project GOPATH下添加命令行go env下的GOPATH值,自行修改自己的Project GOPATH2.正常情况下我们不需要自己去处理外部包的代理,但是也有可能就是你不经意之间做了修改,这边也是通过setting进行配置:补充:GOLAN…

记录---前端Vue使用ffmpeg压缩视频再上传

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣保姆级操作步骤,从我实际运行中的项目中摘取的所有相关代码展示如下:1.Vue项目中安装插件ffmpeg 1.1 插件版本依赖配置 两个插件的版本 "@ffmpeg/core": "^0.10.0", "@ffmpeg/ffmpeg": &…

静电纺丝机PLC采集监控系统 —— 智能化生产利器

在现代化的工业生产中,数据采集与监控是提高效率、确保质量的关键。上海数采物联网科技有限公司凭借其在工业物联网数据采集领域的深厚底蕴,隆重推出静电纺丝机PLC采集监控系统,为纺织行业的智能化升级提供了强大动力。 一、产品优势高效数据采集:系统采用先进的PLC技术,…

工作任务管理有好用的工具推荐吗?

市场上有很多好用的工作任务管理工具,可以帮助提高个人和团队的生产力。不同的工具适用于不同的工作需求,比如任务跟踪、团队协作、项目管理等。以下是一些比较受欢迎的工作任务管理工具,供你参考: 1. 禅道 (ZenTao)特点:禅道是一款基于 Web 的项目管理工具,支持需求、任…

小白必看:2024年项目经理常犯的错误有哪些?

作为一名项目经理,无论是刚入职的新人还是经验丰富的老手,在项目管理过程中都可能遇到各种挑战。特别是对于新手来说,某些常见的错误可能会影响项目的顺利推进。以下是2024年项目经理常犯的一些错误以及如何避免这些错误的建议,帮助你在项目管理过程中更高效、专业。 1. 缺…

Nuxt.js 应用中的 vite:extendConfig 事件钩子详解

title: Nuxt.js 应用中的 vite:extendConfig 事件钩子详解 date: 2024/11/12 updated: 2024/11/12 author: cmdragon excerpt: vite:extendConfig 钩子允许开发者在 Vite 项目中扩展默认配置。这使得开发者可以根据特定需求自定义 Vite 的构建和开发行为,增强开发体验。 cate…

ElasticSearch 知识梳理笔记

ElasticSearch 是什么? ElasticSearch 是一个分布式的、基于 Lucene 的搜索引擎和数据分析引擎(服务器) ElasticSearch 提供了 RESTful 风格的操作 API,是用 java 语言编写的开源软件,可以提供 PB 级别的数据存储与搜索ElasticSearch 基本概念 ElasticSearch 是面向文档型…