SpringCloud

1、什么是 Spring Cloud?

Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。


2、使用 Spring Cloud 有什么优势?

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

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

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

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


4、Spring Cloud 和 dubbo 区别?

  • 服务调用方式,dubbo 是 RPC springcloud Rest Api。
  • 注册中心,dubbo 是 zookeeper,springcloud 是 eureka,也可以是 zookeeper。
  • 服务网关,dubbo 本身没有实现,只能通过其他第三方技术整合,springcloud 有 Zuul 路由网关,作为路由服务器,进行消费者的请求分发,springcloud 支持断路器,与 git 完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

5、SpringBoot 和 SpringCloud 的区别?

SpringBoot 专注于快速方便的开发单个个体微服务。

SpringCloud 是关注全局的微服务协调整理治理框架,它将 SpringBoot 开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务。

SpringBoot 可以离开 SpringCloud 独立使用开发项目,但是 SpringCloud 离不开 SpringBoot ,属于依赖的关系。

SpringBoot 专注于快速、方便的开发单个微服务个体,SpringCloud 关注全局的服务治理框架。


6、负载平衡的意义什么?

在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。


7、SpringCloud 断路器的作用

当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应。当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应) 断路器有完全打开状态:一段时间内达到一定的次数无法调用,并且多次监测没有恢复的迹象,断路器完全打开,那么下次请求就不会请求到该服务。

半开:短时间内有恢复迹象,断路器会将部分请求发给该服务,正常调用时断路器关闭。

关闭:当服务一直处于正常状态能正常调用。


8、什么是 SpringCloudConfig?

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在 Spring Cloud 中,有分布式配置中心组件 spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程 Git 仓库中。在 spring cloud config 组件中,分两个角色, 一是 config server,二是 config client。


9、Spring Cloud Gateway?

Spring Cloud Gateway 是 Spring Cloud 官方推出的第二代网关框架,取代 Zuul 网关。

网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

使用了一个 RouteLocatorBuilder 的 bean 去创建路由,除了创建路由 RouteLocatorBuilder 可以添加各种 predicates 和 filters。

predicates 断言的意思,顾名思义就是根据具体的请求的规则,由具体的 route 去处理, filters 是各种过滤器,用来对请求做各种判断和修改。


10、对微服务的了解:

微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些s细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。

微服务的蜂窝表示

这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。 此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。


11、微服务架构有哪些优势?

  • 独立开发 - 所有微服务都可以根据各自的功能轻松开发。
  • 独立部署 - 基于其服务,可以在任何应用程序中单独部署它们。
  • 故障隔离 - 即使应用程序的一项服务不起作用,系统仍可继续运行。
  • 混合技术堆栈 - 可以使用不同的语言和技术来构建同一应用程序的不同服务。
  • 粒度缩放 - 单个组件可根据需要进行缩放,无需将所有组件缩放在一起。

12、微服务有哪些特点?

  • 解耦 - 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建、更改和扩展。
  • 组件化 - 微服务被视为可以轻松更换和升级的独立组件。
  • 业务能力 - 微服务非常简单,专注于单一功能。
  • 自治 - 开发人员和团队可以彼此独立工作,从而提高速度。
  • 持续交付 - 通过软件创建、测试和批准的系统自动化,允许频繁发布软件。
  • 责任 - 微服务不关注应用程序作为项目。相反,它们将应用程序视为它们负责的产品。
  • 分散治理 - 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的