当前位置: 首页 > article >正文

关于“你对SpringCloud的理解”

看看普通人和高手是如何回答这个问题的?

普通人

Spring Cloud 是一套微服务解决方案

它包括配置中心、RPC 通信、服务注册、服务熔断等组件

高手

Spring Cloud 是一套

分布式微服务的技术解决方案

它提供了快速构建分布式系统的

常用的一些组件

比如说配置管理、服务的注册与发现、

服务调用的负载均衡、资源隔离、熔断降级等等

不过 Spring Cloud 只是 Spring 官方提供的

一套微服务标准定义

而真正的实现

目前有两套体系用的比较多

一个是 Spring Cloud Netflix

一个是 Spring Cloud Alibaba

Spring Cloud Netflix 是基于 Netflix 这个公司的开源组件集成的一套微服务解决方案,其中的组件有

  1. Ribbon——负载均衡

    Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的。

    在这里插入图片描述

  2. Hystrix——服务熔断

    ①Hystrix是一个用于处理分布式系统的延迟和容错的开源库,可以保证一个服务出现故障时,不会导致整个系统出现雪崩效应,以提高分布式系统弹性;

    ②作为“断路器”,在一个服务出现故障时,可以通过短路器监控,返回一个可以处理的响应结果,保证服务调用线程不会长时间被占用,避免故障蔓延。

    在这里插入图片描述
    在这里插入图片描述

  3. Zuul——网关

    Zuul是spring cloud中的微服务网关。网关:是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。

    Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。

    Zuul网关不是必要的。是推荐使用的。

    使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。
    在这里插入图片描述

  4. Eureka——服务注册与发现

    服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。

    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。

    Eureka服务治理体系如下:

    在这里插入图片描述

  5. Feign——服务调用

    Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

    在这里插入图片描述

Spring Cloud Alibaba 是基于阿里巴巴开源组件集成的一套微服务解决方案,其中包括

  1. Dubbo——消息通讯

  2. Nacos——服务注册与发现

  3. Seata——事务隔离

  4. Sentinel——熔断降级

有了 Spring Cloud 这样的技术生态

使得我们在落地微服务架构时不用去考虑第三方技术集成带来额外成本,只要通过配置组件来完成架构下的技术问题

从而可以让我们更加侧重性能方面

以上这些就是我对 Spring Cloud 的个人理解!

好的,关于普通人与高手的回答

谁的回答较好,大家心中自有定论

那么还有哪些组件是在文章中没有提到?

可以在评论区补充留言!


http://www.kler.cn/a/158850.html

相关文章:

  • Python中的正则表达式教程
  • 三周精通FastAPI:42 手动运行服务器 - Uvicorn Gunicorn with Uvicorn
  • yum工具的学习
  • 基于Java的旅游类小程序开发与优化
  • MCU的时钟体系
  • LeetCode题解:18.四数之和【Python题解超详细】,三数之和 vs. 四数之和
  • TrustZone之虚拟地址空间
  • Python sorted函数及用法以及如何用json模块存储数据
  • 【精选】SpringDI依赖注入及注解实现SpringIoC
  • 对抗生成网络-G与D的loss异常问题
  • CoreDNS实战(十)-kubernetes插件
  • 怎么让CMake不使用VS作为构建工具,而是使用gcc
  • VMware安装Debian12.2作为服务器(无桌面)
  • 微信小程序生成二维码并保存到本地方法
  • 【MySQL】基本安装配置
  • 单片机开发常见问题集合
  • 【“C++ 精妙之道:解锁模板奇谭与STL精粹之门“】
  • SpringBoot JprotoBuf序列化与反序列化的实现
  • Springboot项目启动成功后可通过五种方式继续执行
  • QLineEdit 的 InputMask掩码
  • vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略
  • 使用Redis构建简易社交网站(1)-创建用户与动态界面
  • 【渗透+取证】博客传送门(持续更新中)
  • lv11 嵌入式开发 RTC 17
  • LeetCode22. 括号生成
  • 从一个简单的实际例子看并行处理