您的位置:首页 > 财经 > 产业 > 建筑企业资质证书_青岛网络推广选哪家_seo外包服务专家_百度秒收录软件

建筑企业资质证书_青岛网络推广选哪家_seo外包服务专家_百度秒收录软件

2024/12/27 3:41:45 来源:https://blog.csdn.net/u010520146/article/details/144667277  浏览:    关键词:建筑企业资质证书_青岛网络推广选哪家_seo外包服务专家_百度秒收录软件
建筑企业资质证书_青岛网络推广选哪家_seo外包服务专家_百度秒收录软件

一 SpringCloud简介

1.1 SpringCloud是什么

SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。

SpringCloud利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等,他们都可以用5pringBoot的开发风格做到一键启动和部署。

SpringBoot并没有重复造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考研的服务框架组合起来,通过SpringBoot风格进行再封装,屏敝掉了复杂的配置和实现原埋,最终给开发者留出了一套简单易懂,易部署和易维护的分布式系统开发工具包。

SpringCloud 是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。

1.2 SpringCloud的核心理念与优势

SpringCloud的核心理念是通过标准化的API和易于使用的组件,加速微服务的开发和部署过程。它的优势包括:

  • 简化开发过程:提供了一整套组件和服务,降低了开发人员在不同技术间的切换成本。
  • 增强可维护性:通过统一的接口和抽象层,使得服务的管理和维护变得更加简单。
  • 提高可扩展性:灵活的架构设计让服务可以方便地进行水平扩展和故障恢复。
1.3 springCloud和SpringBoot关系
  • SpringBoot专注于快速方便的开发单个个体微服务。
  • SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竟选,分布式会话等等集成服务。
  • SpringBoot可以离开SpringCloud独立使用,开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。
  • SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架。

二 基础概念

2.1 服务发现与注册

服务发现是微服务架构中的关键组件,它允许某个服务知道其他服务所在的位置。
服务注册是服务将自己注册到一个注册中心的过程,以便其他服务可以发现它。

2.2 断路器

用于防止系统雪崩效应,当某个服务不稳定或不可用时,断路器可以提供回退机制。

2.3 路由

在微服务架构中,API网关作为单一入口点,可以根据请求的规则路由到不同的服务。

2.4 负载均衡

在多个服务实例之间分配请求,以优化资源使用、最大化吞吐量、减少延迟和防止任何单个资源的过载

2.5 微服务架构

微服务架构可以说是SOA架构的⼀种拓展,这种架构模式下它拆分粒度更⼩、服务更独⽴。把应⽤拆分成为⼀个个微⼩的服务,不同的服务可以使⽤不同的开发语⾔和存储,服务之间往往通过Restful等轻量级通信。微服务架构关键在于微⼩、独⽴、轻量级通信。微服务是在SOA上做的升华粒度更加细致,微服务架构强调的⼀个重点是“业务需要彻底的组件化和服务化。

三 Spring Cloud主要功能

SpringCloud的核心思想是将系统中的各个服务模块化,每个模块对外提供一组API接口,其他模块可以通过这些API接口来调用该模块提供的服务,在保证互不影响的同时完成各自的任务。Spring Cloud的主要功能如下:

3.1 配置中心

通过配置中心集中管理配置信息,实现动态调整分布式系统的配置,避免了重启服务的麻烦,使得分布式系统中的配置可以在不重启服务的情况下进行动态调整。

3.2 服务网关

作为整个系统的入口,统一处理外部请求,实现路由和过滤等功能。

3.3 服务注册与发现

允许服务在启动时注册自己的信息,并通过服务注册中心发现其他服务的位置,实现服务之间的通信。

3.4 路由

实现智能路由功能,根据条件将请求路由到不同的服务实例。

3.5 服务间调用

支持服务之间的相互调用。

3.6 负载均衡

在多个服务实例之间均衡地分发请求,提高系统性能和可靠性。

3.7 断路器

在微服务架构中,由于服务之间的调用可能会出现故障或超时,为了防止故障在系统间蔓延,断路器模式可以在服务出现故障时进行熔断,保护整个系统。

3.8 分布式消息队列

实现异步消息通信,解耦服务间的依赖,实现解耦和削峰填谷等功能。

微服务架构是Spring Cloud的背景之一。微服务架构将一个大型应用程序划分成一组小的服务,每个服务都可以独立部署和扩展,通过轻量级的通信机制相互协调和配合,从而提供最终价值给用户。Spring Cloud正是针对这种架构模式提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。

三 SpringCloud常用组件

Spring Cloud是一套基于Spring Boot的微服务框架,它提供了许多用于构建分布式系统的工具和组件。在Spring Cloud中,有几个常用的组件,它们各自扮演着不同的角色,共同支撑起整个微服务架构。以下是这些常用组件及其作用:

3.1 服务注册与发现

服务注册与发现是微服务架构中的基础组件,用于管理服务实例的注册与发现。通过服务注册与发现,服务提供者将自己的服务实例注册到注册中心,而服务消费者则从注册中心获取可用的服务实例列表,实现动态的服务发现和负载均衡。Spring Cloud中常用的服务注册与发现组件包括Nacos、Eureka、Consul等。

3.2 熔断器

熔断器是微服务架构中用于处理分布式系统中的故障和异常的组件。当某个服务出现故障或延迟过高时,熔断器能够快速地中断流量,防止故障的进一步扩散。在Spring Cloud中,常用的熔断器组件是Hystrix。

3.3 负载均衡

负载均衡是微服务架构中用于分配请求流量的组件。通过负载均衡,可以将请求分发到多个服务实例上,实现负载均衡和高可用性。Spring Cloud中常用的负载均衡组件包括Ribbon和Nginx等。

3.4 API网关

API网关是微服务架构中用于统一管理和对外暴露微服务接口的组件。通过API网关,可以将多个微服务的接口统一管理和调度,实现路由、安全、限流等功能。Spring Cloud中常用的API网关组件包括Zuul和Spring Cloud Gateway等。
这些组件在微服务架构中的作用是不可或缺的。它们各自承担着不同的职责,共同保障了微服务架构的稳定性和可用性。在实际开发中,可以根据具体的业务需求选择合适的组件,以实现最佳的性能和可扩展性。同时,也需要不断学习和掌握新的技术和工具,以适应不断变化的业务需求和技术环境。

四 SpringCloud实践

4.1 创建springboot项目

在这里插入图片描述
如果在这边创建springboot的时候,提示无法连接到http://start.spring.io,可以把该地址改成国内镜像地址https://start.aliyun.com/,
然后创建2个模块,user-consumer与user-provider
在这里插入图片描述
创建完后,如下:
在这里插入图片描述
其中,根目录下的build.gradle如下

buildscript {ext {springBootVersion = '2.3.2.RELEASE'}repositories {maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }maven { url 'https://plugins.gradle.org/m2/' }}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")classpath "io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE"}
}
//所有模块/项目的通用配置
allprojects {group 'com.example'version '1.0-SNAPSHOT'apply plugin: 'idea'apply plugin: 'org.springframework.boot'apply plugin: "io.spring.dependency-management"
}//子模块/项目的统一配置
subprojects {apply plugin: 'java'apply plugin: "idea"java {sourceCompatibility = JavaVersion.VERSION_11}//指定编码格式[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'repositories {mavenLocal()maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }mavenCentral()jcenter()maven { url "https://repo.spring.io/snapshot" }maven { url "https://repo.spring.io/milestone" }}//包依赖管理dependencyManagement {dependencies {//spring boot 版本dependency("org.springframework.boot:spring-boot-starter-web:$springBootVersion")// JSONdependency("com.alibaba:fastjson:1.2.83")//commons-codecdependency("commons-codec:commons-codec:1.15")}}//全局依赖包dependencies {// Log4j2implementation("org.springframework.boot:spring-boot-starter-log4j2:$springBootVersion")implementation 'org.apache.logging.log4j:log4j-spring-boot:2.17.2'implementation 'org.apache.logging.log4j:log4j-api:2.17.2'implementation 'org.apache.logging.log4j:log4j-core:2.17.2'implementation 'org.apache.logging.log4j:log4j-jul:2.17.2'implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'implementation 'com.lmax:disruptor:3.4.4'}configurations {//移除spring boot 默认logger依赖all*.exclude module: 'spring-boot-starter-logging'}
}

子模块user-consumer的build.gradle如下

plugins {id 'java'id 'application'id 'io.spring.dependency-management'id 'org.springframework.boot'
}
group 'cn.qzzg'
version '1.0-SNAPSHOT'
mainClassName = 'cn.qzzg.patient.PatientInWebApplication'dependencies {implementation("com.alibaba:fastjson")implementation("org.apache.commons:commons-lang3")implementation("org.springframework.boot:spring-boot-starter-web")
}
#### 4.2

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com