Python 官方文档:入门教程 => 点击学习
目录一、SpringCloud1.1、什么是springCloud1.2、SprinGCloud缺点二、什么是微服务架构2.1、什么是微服务2.2、微服务有什么优点2.3、微服务面临
SpringCloud不同于其他 Spring 的优秀项目, 它不再是 像SpringSecurity、springMVC... 的一个基础框架
, 而是一个更高层次的、 架构视角的综合性大型项目, 他的目标是构建一套标准化的微服务解决方案
。让架构师、 开发者在使用微服务理念构建应用系统的时候, 面对各个环节的问题都可以找到相应的组件来处理。
引用网友戏称的一个比喻:Spring Cloud 可以说是 Spring 社区为微服务架构提供的一个 “ 全家桶 ” 套餐。 由于 “ 套餐 ” 中的组件通过一个社区进行包装与整合, 使得 “ 套餐 ” 中各个组件之间的配合变得更加和谐, 这可以有效减少我们在组件的选型和整合上花费的精力
, 所以它可以帮助我们快速构建起基础的微服务架构系统。
Spring Cloud因其涵盖的内容非常广泛,因此对于很多初学者来说就像被专业名词轰炸了一样, 入门的难度也就大大提高了。 同时, 中文文档与资料的匮乏,以及官方文档的内容对于使用描述并不够细致等问题, 也直接提升了使用者的学习门槛。
“微服务 ”是在2014年3月名字叫Martin Fowler
所提出的
微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务
,这些小型服务都在各自独立的进程中运行,服务之间通过基于Http的RESTful api进行通信协作。由于有了轻量级的通信协作基础, 所以这些微服务可以使用不同的语言来编写。
微服务就是将单个应用拆分为了多个应用(这里的应用可以理解为jar包或war包),然后通过框架提供的网关、服务治理、服务发现、服务熔断等等,给人的感觉就会像是一个应用,主要目的是拆分多个应用,一旦并发、cpu、内存达到一定的瓶颈,可以采取多机部署,分担服务器压力。
往往一个庞大的高并发的业务系统都会采用微服务。同时微服务给人的感觉就是专业的人干专业的事,订单模块就是负责订单业务,用户模块就是负责用户相关业务,这样做的好处就是项目比较好维护。
在实施微服务之前, 我们必须要知道, 微服务虽然有非常多吸引人的优点, 但是也因为服务的拆分引发了诸多原本在单体应用中没有的问题。
只是从单体应用中的代码依赖变为了服务间的通信依赖
。 而当我们对原有接口进行了一些修改, 那么交互方也需要协调这样的改变来进行发布, 以保证接口的正确调用。 我们需要更完善的接口和版本管理, 或是严格地遵循开闭原则
。网络延迟、 分布式事务、 异步消息
等。一旦使用微服务意味着项目会有很多个,我们不可能再使用传统的方式使用Tomcat来部署了。 tomcat部署缺点:一旦有一个服务更新就需要重启tomcat 这时候就需要打jar包,使用java -jar命令来启动项目了,使用java -jar启动项目一旦有很多的话不容易维护, 于是便引进了Docker部署,docker可以和jenkins相结合 来完成
微服务的自动化部署
,同时这也是现在很流行的技术体系。
下面这张图代表的是我们的思想一直在不断变化,从刚开始的ORM对象关系映射,到后面的mvc分层,rpc远程调用,最后到现在流行的SOA面向服务开发。
不断扩大的需求会使得单体应用变得越来越腕肿。单体应用的问题就逐渐凸显出来, 由于单体系统部署在一个进程内, 往往我们修改了一个很小的功能, 为了部署上线会影响其他功能的运行。随着系统的发展, 维护成本会变得越来越大, 且难以控制。
每个小应用各自都有自己独立的、完整的可运行的一套系统。
目前我接手的几个项目都是用的这个架构,服务之间调用并没有用注册中心。
应用之间交互不可避免,将核心业务抽取出来,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
应用越来越多,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率
使用springcloud必然离不开springboot,这两个框架的版本可不是随便一选就能搭配使用的,假如用的版本不对,可能会出现各种问题。
springboot官网:https://spring.io/projects/spring-boot
springboot的git源码地址:https://GitHub.com/spring-projects/spring-boot
通过官网可以发现:截至目前springboot最稳定的版本是2.7.0
依稀记着我上家公司springboot版本是用的1.5.9
版本,项目是比较老的,已经有三四年了并且是个大项目。官网也明确说明了,强烈建议升级到2.0
及以上版本。
springcloud官网:https://spring.io/projects/spring-cloud springcloud的git源码地址:https://github.com/spring-cloud
SpringCloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。为了管理SpringCloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个SpringCloud版本对应的子项目版本。
为了避免SpringCloud版本号与子项目版本号混淆,SpringCloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。例如Angel是第一个版本, Brixton是第二个版本。
当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本。
目前我们公司有一个项目就是用的 Hoxton.SR4版本的SpringCloud + 2.2.5.RELEASE(RELEASE代表是发行版)版本的SpringBoot
截止目前官网最新可使用的版本是2021.0.3
:
GA:General Availability: 正式发布的版本,官方推荐使用此版本。在国外都是用GA来说明release版本的。CURRENT:当前推荐的版本PRE:里程碑版/预览版本SHAPSHOT:快照
这里只是一个标识,方便大家在使用的时候,进行选择版本,我们一般选择是CURRENT和GA版本
官网提供了cloud和springboot的版本对应。
更详细的查看:https://start.spring.io/actuator/info
这个是官网提供的,会给我们返回更详细的版本对应关系,如果我们不知道版本怎么选择,可以看这个网站 ,网站返回的是JSON,我们需要格式化一下。
在线json格式化:https://www.sojson.com/
现在要是学习最新的SpringCloud和SpringBoot应该用哪个版本?
这张图是两年前springcloud的所有组件,其中有很多组件已经不再更新,不再更新不代表不能用,只能说不建议再用了,当下最流行的组件是Spring Cloud Alibaba
。
Netflix(Nasdaq NFLX) 美国奈飞公司,是一家会员订阅制的流媒体播放平台。由于微服务的快速发展,Netflix公司的微服务又相对比较成熟,于是在技术上毫无保留的把一整套微服务架构核心技术栈开源了出来,叫做Netflix OSS,也正是如此,在技术上依靠开源社区的力量不断的壮大。
Pivotal在Netflix开源的一整套核心技术产品线的同时,做了一系列的封装,就变成了Spring Cloud;Spring Cloud只是集成Netflix的各个组件,实现了各种starter,例如Eureka-starter、Zuul-starter,可以理解成简化Netflix微服务的使用,但是底层仍然是引用的Netflix
,封装过后同时又可以和其他Spring Cloud产品进行无缝集成。
Netflix的各个组件在2018年是最火的一年,而后面相对来说他的很多产品已经基本上不再使用,原因就是Netflix的部分组件已经停更。再加上由于他的停更,Alibaba就采取了他的思想,研究出了Spring Cloud Alibaba,而对于现在而言Spring Cloud Alibaba基本上完全可以取代Netflix组件。
Netflix源码社区:https://github.com/Netflix
Spring Cloud Netflix的五大组件(神兽):
Spring Cloud Netflix的其他组件:
Spring Cloud Alibaba组件:
spring-cloud-starter-alibaba-nacos-discovery
:服务发现是微服务架构中的关键组件之一。在这样的架构中,手动为每个客户端配置服务列表可能是一项艰巨的任务,并且使动态扩展变得极其困难。Nacos Discovery 帮助您将服务自动注册到 Nacos 服务器
,Nacos 服务器会跟踪服务并动态刷新服务列表
。此外,Nacos Discovery 将服务实例的一些元数据,如主机、端口、健康检查 URL、主页等注册到 Nacos。spring-cloud-starter-alibaba-nacos-config
:使用 Spring Cloud Alibaba Nacos Config 基于 Spring Cloud 的编程模型快速接入 Nacos 配置管理能力。spring-cloud-starter-alibaba-sentinel
。spring-cloud-starter-dubbo
,对dubbo进行的封装,主要是为了让我们更好的让dubbo和Cloud其他组件进行集成使用。spring-cloud-starter-stream-RocketMQ
,帮我们在cloud当中很方便的集成RocketMQ。spring-cloud-starter-alicloud-ans
,ANS(Application Naming Service)是EDAS的一个组件。Spring Cloud 阿里云 ANS 提供符合 Spring Cloud 规范的商业版服务注册和发现,让您可以在本地开发应用,在云端运行。spring-cloud-starter-alicloud-acm
,Spring Cloud阿里云ACM是Spring Cloud客户端商用产品ACM (Application Configuration Management)的一个实现,是免费的。spring-cloud-starter-alicloud-oss
,OSS(Object Storage Service)是阿里云上的存储产品。alicloud-oss提供符合 Spring Cloud 规范的商业化存储服务。提供易于使用的 API,并支持在 Spring 框架中集成 Resource。spring-cloud-starter-alicloud-schedulerX
提供了符合 Spring Cloud 规范的分布式作业调度。SchedulerX提供高精度秒级、高稳定性、高可用性的定时作业调度服务,支持简单的单服务器作业、简单的多主机作业、脚本作业、网格作业等多种作业类型。spring-cloud-starter-alicloud-sms
提供了一个更易用的API,用于快速访问阿里云的短信服务。企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )、HSF 等微服务运行环境,助力您的各类应用轻松上云。
1. eureka停更:
eureka目前已经在Netflix社区明确声明不在更新!而springcloud当中的eureka的starter仍然在更新,但是他更新只是为了兼容springcloud版本,并改变不了eureka已经停更的事实。
就好比假如
Mysql版本不再更新了,而navcat客户端还在不断更新,我们天天跟Navicat打交道,以至于很多人不知道其实项目已经是个死项目了,没有发展前途了。
Netflix的eureka社区:https://github.com/Netflix/eureka/wiki
2. Hystrix停更不停用:
NetfLix官网明确声明:Hystrix 不再处于积极开发阶段,目前处于维护模式。Hystrix(版本 1.5.18)足够稳定,可以满足 Netflix 对我们现有应用程序的需求。
3. Feign停更:
Feign是在2019就已经不再更新了,通过Maven网站就可以看出来,随之取代的是OpenFeign,从名字上就可以知道,他是Feign的升级版。
maven网站:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign
4. Ribbon停更:
项目处于维护状态 ,已经好久没有更新过了。 https://github.com/Netflix/ribbon
5. Config:
Config没用停更,只不过现在大部分人都采用nacos来做配置中心。
6. Archaius停更:
Netflix下的Archaius在2018年就已经停更。
7. Bus:
SpringCloud原生的服务总线组件,现在风头也被Nacos抢了。
到此这篇关于关于SpringCloud的使用以及现状的文章就介绍到这了,更多相关SpringCloud详解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 关于SpringCloud的微服务以及组件详解
本文链接: https://lsjlt.com/news/214290.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0