什么是SpringCloud?可以用于干什么?

本文探讨了使用SpringBoot开发分布式微服务时面临的挑战,并介绍了SpringCloud作为解决方案的优势与不足。涵盖服务注册与发现、负载均衡、容错机制等内容,强调其在简化分布式系统开发中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用 Spring Boot 开发分布式微服务时,我们面临以下问题:

 (1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
 (2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
 (3)冗余-分布式系统中的冗余问题。
 (4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
 (5)性能-问题 由于各种运营开销导致的性能问题。
 (6)部署复杂性-Devops 技能的要求。
因此,当遇到该问题时需要用到SpringCloud

关于微服务技术栈:

维度(springcloud)
服务开发:springboot spring springmvc
服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
服务注册与发现:Eureka,Zookeeper
服务调用:Rest RPC gRpc
服务熔断器:Hystrix
服务负载均衡:Ribbon Nginx
服务接口调用:Fegin
消息队列:Kafka Rabbitmq activemq
服务配置中心管理:SpringCloudConfig
服务路由(API网关)Zuul
事件消息总线:SpringCloud Bus

什么是SpringCloud ?

基于 Spring Boot 的 Spring 集成应用程序,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,提供与外部系统的集成。 如服务注册与发现、配置中心、负载均衡、断路器、消息总线、数据监控等;换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。
Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
个人理解:
springcloud是一种架构,一种思想,分布式,云架构,不专注于CRUD;springcloud就相当于乐高积木
核心组件含:
Eureka:服务注册与发现。
Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。
Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。
Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。
Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。

使用SpringCloud的优缺点

在这里插入图片描述

根据上图:
优点:
(1)前后端分离开发,便于快速开发
(2)采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
(3)利于扩展模块,乐高积木一般
(4)Springcloud的节点不会影响另一个节点
(5)适于互联网时代,产品迭代周期更短,如果用来做电商网站的话,性能是非常好的
缺点: 配置复杂,节点多,涉及的知识点多,所以治理成本高,不利于维护系统,且对团队挑战大

SpringCloud常见问题

服务注册和发现是什么意思?Spring Cloud 如何实现?

在这里插入图片描述

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。
或者使用Nacos!!!!

SpringBoot和SpringCloud的区别?

(1)Springboot是单体个体的开发,Springcloud是分布式(多个)的开发
(2)SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系.
(3)SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

负载均衡的意义什么?

在这里插入图片描述

负载均衡里面提供了轮巡算法机制(默认),可以最大化吞吐量,优化资源的使用,最小化响应时间并避免任何单一资源的过载。可能会通过冗余来提高可靠性和可用性。
第二的话可以利用权重分配机制(就是根据服务器的性能来分配,提高资源的使用)
它的意义的话就是让请求均分到同一服务的每个节点上。
附:Feign接口的话就默认开启了Ribbon负载均衡(一般情况下,是用于一个服务的多个节点上才使用)

什么是 Hystrix?它如何实现容错?

Hystrix(英文意思为豪猪(带刺))是一个延迟和容错库
当出现故障是不可避免的故障时,
停止级联故障并在复杂的分布式系统中实现弹性。
主要用于服务降级,对响应慢的服务做超时快速失败处理,即熔断
如何实现容错:跳闸机制,资源隔离,监控,回退机制

什么是 Hystrix 断路器?我们需要它吗?

在微服务上我们是很需要Hystrix 断路器的
当我们的微服务有一个出问题时,就会造成很多请求等待
就会耗尽电脑的内存资源造成服务雪崩
我们使用了断路器后,请求就不是排队等待,从而加速失败判定。

什么是 Netflix Feign?它的优点是什么?

是远程调用技术;优点:实现了负载均衡,去中心化思想
附1:
feign是由Netflix开发出来的另外一种实现负载均衡的开源框架,它封装了Ribbon和RestTemplate,实现了WebService的面向接口编程,进一步的减低了项目的耦合度,因为它封装了Riboon和RestTemplate,所以它具有这两种框架的功能,可以实现负载均衡和Rest调用。
附2:
RestTemplate:需要手动开启负载均衡,手动写请求的URL,对于开发和变更不是很方便
FeignTemplate:默认开启负载均衡,写接口和服务名即可,便于升级和维护

什么是SpringCloudConfig?

是springcloud的配置中心,包括客户端和服务端两个部分;
(在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件)
附:
可以采用Eureka和Nacos作为配置中心,但是现在Eureka不开源了,所以现在用阿里巴巴的Nacos。另外Nacos还可以作为注册与发现使用。
Eureka:需要自己配置服务端
Nacos:自身就带配置中心的服务端;我们只需要添加配置项和阿里巴巴的访问项

什么是Spring Cloud Gateway?

是springcloud自身的组件,用于服务网关,所有微服务都是通过网关来访问,可以统一做限流日志、权限等操作;还可以配置路由(手动配置)
附:
限流就是限制流量,因为服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了),
限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击。在高并发的应用中,限流是一个绕不开的话题。

1


  1. 编写不易,如果有帮助到的话,可以关注,点赞和收藏哦~ ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值