什么是Spring Cloud项目,我把它讲清楚了
mhr18 2025-03-25 15:24 17 浏览 0 评论
@Author : Runsen
最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。
微服务
讲起springcloud之前,我们需要了解一下什么是微服务。
简单来说,微服务就是一种将一个单一应用程序拆分为一组小型服务的方法,拆分完成后,每一个服务都运行在独立的进程中,服务于服务之间采用轻量级的通信机制来进行沟通(Spring Cloud 中采用基于 HTTP 的 RESTful API)。
我们先认识下应用架构的变迁,下面是应用架构的变迁历史
单体架构
早期, 企业的对外提供的服务比较单一, 客户流量也相对不足。 因此将所有的模块,代码打包在一个项目中,集中部署一台机器上。
就像学校里面做的项目,搞定前端,数据库,部署到服务器,把WEB应用 APP做出来就是以前的单体架构。
其实就是给你用的,基本部署到一个云服务器。没有任何的实用,企业的客户会越来越多, 流量越来越大, 单单一台服务器对外提供服务, 哪里撑得住啊, 不分分钟被搞挂掉才怪。
遇到并发和大流量,基本就Over了。
SOA架构
应用软件over了,企业损失惨重,你也可以滚蛋了。一台最垃圾云服务器1G运行内存加50G空间,虽然垃圾,但是我几个服务器一起上。一个挂了,还有几个撑着,然后我们赶紧把挂的重启,这样不就可以顶住了吗,这就是SOA架构,全面就是Service-Oriented Architecture。简称SOA,翻译过来面向服务的架构,下图就是SOA架构图
- 将所有的服务提供者注册到注册中心。
- 客户端向注册中心订阅服务
- 注册中心向客户端推送有效的服务信息
- 客户端得到所有可调用服务的信息后, 根据需求,按负载均衡算法, 进行调用, 获取数据。
下面用百度百科把SOA说得高大上点。
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。(百度百科)
比如,阿里巴巴的Dubbo数据源就是一个非常好的服务治理SOA框架,
微服务
微服务可以理解为是 SOA 的一个传承,一个本质的区别是微服务是一个真正分布式、去中心化的,微服务的拆分比 SOA 更加彻底。
微服务架构的系统是一个分布式的系统,每个微服务基本是一个能独立发布的应用服务,因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也较小,每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发,甚至整个团队的组织架构也会更精简,因此沟通成本低、效率高。
比如,一个项目出了问题。哪里出了问题,难道将整个项目从头到尾看一遍吗,就算你肯,老板也不肯啊。你把企业都有的私密的源码都知道了,万一你突然间要挟涨薪。这时候,就将一个项目分成几个小项目。一个小项目负责一个功能实现,再整合起来,不就是一个大项目。
每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,订单服务、支付服务、物流服务、会员服务等等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。在采用微服务之后,我们的项目不再拘泥于一种语言,可以 Java、Go、Python、PHP 等等,混合使用,这在传统的 应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建 工具进行构建。
比如,今日头条APP。推荐算法可能是用Python,处理并发可能用go,注册功能可能是Java。所以一个上百万的用户的项目,绝对耗上亿资金完成的。如果出毛病了,就让那个负责这个模块的人去处理。
SpringCloud
那SpringCloud和微服务有什么关系?Spring Cloud 可以理解为微服务这种思想在 Java 领域的一个具体落地。Spring Cloud 在发展之初,就 借鉴了微服务的思想,同时结合 Spring Boot,Spring Cloud 提供了组件的一键式启动和部署的能力, 极大的简化了微服务架构的落地。
这也是Java为什么是老大的原因。
学任何东西都先访问官方文档,我们先访问SpringCloud官方文档:
https://spring.io/projects/spring-cloud/
Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的一些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。
SpringCloud版本
不同于其他的框架,Spring Cloud 版本名称是通过 A(Angel)、B(Brixton)、C(Camden)、 D(Dalston)、E(Edgware)、F(Finchley)。这样来明明的,这些名字使用了伦敦地铁站的名 字,目前最新版是 H (Hoxton)版。
官方图为证
Spring Cloud 中,除了大的版本之外,还有一些小版本,小版本命名方式如下: M ,M 版是 milestone 的缩写,所以我们会看到一些版本叫 M1、M2 RC,RC 是 Release Candidate,表示该项目处于候选状态,这是正式发版之前的一个状态,所以 我们会看到 RC1、RC2 SR,SR 是 Service Release ,表示项目正式发布的稳定版,其实相当于 GA(Generally Available) 版。所以,我们会看到 SR1、SR2 SNAPSHOT,这个表示快照版
Spring Cloud体系
下面总结下重点的(来源:江南一点雨 松哥)
- Spring Cloud Netflix,这个组件,在 Spring Cloud 成立之初,立下了汗马功劳。但是, 2018 年 的断更,也是 Netflix 掉链子了。
- Spring Cloud Config,分布式配置中心,利用 Git/Svn 来集中管理项目的配置文件
- Spring Cloud Bus,消息总线,可以构建消息驱动的微服务,也可以用来做一些状态管理等
- Spring Cloud Consul,服务注册发现
- Spring Cloud Stream,基于 Redis、RabbitMQ、Kafka 实现的消息微服务
- Spring Cloud OpenFeign,提供 OpenFeign 集成到 Spring Boot 应用中的方式,主要解决微服务 之间的调用问题 - Spring Cloud Gateway,Spring Cloud 官方推出的网关服务
- Spring Cloud Cloudfoundry,利用 Cloudfoundry 集成我们的应用程序
- Spring Cloud Security,在 Zuul 代理中,为 OAuth2 客户端认证提供支持 Spring Cloud AWS ,快速集成亚马逊云服务
- Spring Cloud Contract,一个消费者驱动的、面向 Java 的契约框架
- Spring Cloud Zookeeper,基于 Apache Zookeeper 的服务注册和发现
- Spring Cloud Data Flow,在一个结构化的平台上,组成数据微服务
- Spring Cloud Kubernetes,Spring Cloud 提供的针对 Kubernetes 的支持 Spring Cloud Function Spring Cloud Task,短生命周期的微服务
Spring Cloud和 Spring Boot 版本关系
初学spring cloud的朋友可能不知道,其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误。所以,你需要把SpringBoot看一看学一学。
spring-cloud-dependencies 版本列表可查看:
https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
spring-boot-starter-parent 版本列表可查看:
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent
下面总结Spring Cloud和 Spring Boot 版本关系(来源:江南一点雨 松哥)
相关推荐
- Java培训机构,你选对了吗?(java培训机构官网)
-
如今IT行业发展迅速,不仅是大学生,甚至有些在职的员工都想学习java开发,需求量的扩大,薪资必定增长,这也是更多人选择java开发的主要原因。不过对于没有基础的学员来说,java技术不是一两天就能...
- 产品经理MacBook软件清单-20个实用软件
-
三年前开始使用MacBookPro,从此再也不想用Windows电脑了,作为生产工具,MacBook可以说是非常胜任。作为产品经理,值得拥有一台MacBook。MacBook是工作平台,要发挥更大作...
- RAD Studio(Delphi) 本月隆重推出新的版本12.3
-
#在头条记录我的2025#自2024年9月,推出Delphi12.2版本后,本月隆重推出新的版本12.3,RADStudio12.3,包含了Delphi12.3和C++builder12.3最...
- 图解Java垃圾回收机制,写得非常好
-
什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用...
- Centos7 初始化硬盘分区、挂载(针对2T以上)添加磁盘到卷
-
1、通过命令fdisk-l查看硬盘信息:#fdisk-l,发现硬盘为/dev/sdb大小4T。2、如果此硬盘以前有过分区,则先对磁盘格式化。命令:mkfs.文件系统格式-f/dev/sdb...
- 半虚拟化如何提高服务器性能(虚拟化 半虚拟化)
-
半虚拟化是一种重新编译客户机操作系统(OS)将其安装在虚拟机(VM)上的一种虚拟化类型,并在主机操作系统(OS)运行的管理程序上运行。与传统的完全虚拟化相比,半虚拟化可以减少开销,并提高系统性能。虚...
- HashMap底层实现原理以及线程安全实现
-
HashMap底层实现原理数据结构:HashMap的底层实现原理主要依赖于数组+链表+红黑树的结构。1、数组:HashMap最底层是一个数组,称为table,它存放着键值对。2、链...
- long和double类型操作的非原子性探究
-
前言“深入java虚拟机”中提到,int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,这样就会造成错误数据的出现。其实这里的某些jvm是指...
- 数据库DELETE 语句,还保存原有的磁盘空间
-
MySQL和Oracle的DELETE语句与数据存储MySQL的DELETE操作当你在MySQL中执行DELETE语句时:逻辑删除:数据从表中标记为删除,不再可见于查询结果物理...
- 线程池—ThreadPoolExecutor详解(线程池实战)
-
一、ThreadPoolExecutor简介在juc-executors框架概述的章节中,我们已经简要介绍过ThreadPoolExecutor了,通过Executors工厂,用户可以创建自己需要的执...
- navicat如何使用orcale(详细步骤)
-
前言:看过我昨天文章的同鞋都知道最近接手另一个国企项目,数据库用的是orcale。实话实说,也有快三年没用过orcale数据库了。这期间问题不断,因为orcale日渐消沉,网上资料也是真真假假,难辨虚...
- 你的程序是不是慢吞吞?GraalVM来帮你飞起来性能提升秘籍大公开
-
各位IT圈内外的朋友们,大家好!我是你们的老朋友,头条上的IT技术博主。不知道你们有没有这样的经历:打开一个软件,半天没反应;点开一个网站,图片刷不出来;或者玩个游戏,卡顿得想砸电脑?是不是特别上火?...
- 大数据正当时,理解这几个术语很重要
-
目前,大数据的流行程度远超于我们的想象,无论是在云计算、物联网还是在人工智能领域都离不开大数据的支撑。那么大数据领域里有哪些基本概念或技术术语呢?今天我们就来聊聊那些避不开的大数据技术术语,梳理并...
- 秒懂列式数据库和行式数据库(列式数据库的特点)
-
行式数据库(Row-Based)数据按行存储,常见的行式数据库有Mysql,DB2,Oracle,Sql-server等;列数据库(Column-Based)数据存储方式按列存储,常见的列数据库有Hb...
- AMD发布ROCm 6.4更新:带来了多项底层改进,但仍不支持RDNA 4
-
AMD宣布,对ROCm软件栈进行了更新,推出了新的迭代版本ROCm6.4。这一新版本里,AMD带来了多项底层改进,包括更新改进了ROCm的用户空间库和AMDKFD内核驱动程序之间的兼容性,使其更容易...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)