1. 初始认识 Spring Cloud
1. 初始认识 Spring Cloud
@
前言
- 对应上一篇学习内容:🌟🌟🌟
- 对应下一篇学习内容:🌟🌟🌟
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” 出现的原因和带来的价值:
- 微服务可以根据业务不同,将一个大项目,分解成**不同的服务(微服务:比如:{搜索服务,网关服务,配置服务,存储服务,发现服务等})
- 各个服务器通过分布式方式进行工作,从而可以高效,快速,稳定的 完成复杂的功能。
- 换句话说:就是将原来的大项目的某些模块,抽出形成微服务,配合分布式工作方式 ,从而高效,快速,稳定的完成复杂业务。
下面我们以搜狐的网站,构建绘制一个简单的理解的示意图:
根据上述示图情况;Spring 社区,大旗一挥,整合优质组件:
特别说明:Spring 整合的优质组件主要分为三大类:NetFlix,Alibaba,自己Spring社区开发的 。
- 在高并发时,解决服务熔断降级 问题,保证系统的高可用性 。
- 在服务器集群时,要解决负载均衡问题
- 在复杂的网络情况下,要保证数据存储的稳定性和一致性。
- 提供网关服务。
- 等等其它技术问题
3. 系统架构的演变过程
3.1 单机架构
简单是说:就是少量用户,单个服务器配置。
3.2 动静分离架构:静态缓存 + 文件存储
3.3 分布式架构:业务拆分 + 负载均衡
3.4 微服务架构:使用 Spring Cloud
4. Spring Cloud 全面说明
"微服务" 一词源于 Martin Fowler 的名为 Microservices 的博文,简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个 原本独立的系统拆分成多个小型服务
,这些服小型服务都在各自独立的进程中运行,服务之间通过基于HTTP 的 RESTful API
进行通信协作。
被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制。由于有轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写,但是这里我们进行学习的是使用Java语言 。
Spring Cloud 全面说明:
- Spring Cloud 来源于 Spring ,是更高层次的,架构视角的综合性大型项目,目标宗旨在 “在构建一套标准化的微服务解决方案,让架构师在使用微服务理念构建系统时,面对各个环节的问题都可以找到相应的组件来处理” 。
- Spring Cloud 是 Spring 社区为为微服务架构提供的一个 “全家桶” 套餐。套餐中各个组件之间的配合,可以减少在组件的选型和整合上花费的精力,可以快速构建起基础的微服务架构系统,是微服务架构的最佳落地方案。
- Spring Cloud 天然支持 Spring Bood(各自之间都存在对应的要求的版本),使用门槛较低
- 解决与分布式系统相关的复杂性:网络问题,延迟开销,贷款问题,安全问题。
- 处理服务发现的能力:服务发现允许集群中的进程和服务找到彼此并进行通信
- 解决冗余问题:冗余问题经常发生在分布式系统中
- 解决负载平衡:改进跨多个计算资源:例如:计算机资源,网络连接,中央处理单元的工作负载分布。
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 原生组件的几大缺点
- Spring Cloud 部分组件停止维护和更新,给开发带来不便。
- Spring Cloud 部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制。
- Spring Cloud 配置复杂,难以上手
6.2 Spring Cloud Alibaba 的优势
- 阿里使用过的组件经历了考验高并发,高性能,高可用 ,性能强悍,设计合理,现在开源出来供大家使用。
- 搭配完善的可视化界面,给开发运维带来极大的便利搭建简单,学习曲线低。
6.3 分布式微服务技术选型建议
- Spring Cloud Alibaba 组件为主
- Spring Cloud 为辅,比如:
- SpringCloud-Ribbon:负载均衡
- SpringCloud-OpenFeign:调用远程服务
- SpringCloud-GateWay:API网关
- SpringCloud-Sleuth:调用链监控等
8. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”