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、微服务有哪些特点?

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

13、微服务架构如何运作?

微服务架构具有以下组件:

微服务架构

  • 客户端 - 来自不同设备的不同用户发送请求。
  • 身份提供商 - 验证用户或客户身份并颁发安全令牌。
  • API 网关 - 处理客户端请求。
  • 静态内容 - 容纳系统的所有内容。
  • 管理 - 在节点上平衡服务并识别故障。
  • 服务发现 - 查找微服务之间通信路径的指南。
  • 内容交付网络 - 代理服务器及其数据中心的分布式网络。
  • 远程服务 - 启用驻留在 IT 设备网络上的远程访问信息。

14、微服务架构的优缺点是什么?

微服务架构的优点微服务架构的缺点
自由使用不同的技术增加故障排除挑战
每个微服务都侧重于单一功能由于远程呼叫而增加延迟
支持单个可部署单元增加了配置和其他操作的工作量
允许经常发布软件难以保持交易安全
确保每项服务的安全性艰难地跨越各种边界跟踪数据
多个服务是并行开发和部署的难以在服务之间进行编码

15、单片、SOA 和微服务架构有什么区别?

单片 SOA 和微服务之间的比较

  • 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。
  • 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
  • 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

16、在使用微服务架构时,面临哪些挑战?

开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。

  • 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。
  • 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。
  • 配置管理:有时在各种环境中维护组件的配置变得困难。
  • 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。

17、SOA 和微服务架构之间的主要区别是什么?

SOA 和微服务之间的主要区别如下:

SOA微服务
遵循 "尽可能多的共享" 架构方法遵循 "尽可能少分享" 的架构方法
重要性在于 "业务功能" 重用重要性在于 "有界背景" 的概念
它们有共同的治理和标准它们专注于人们的合作和其他选择的自由
使用企业服务总线(ESB)进行通信简单的消息系统
它们支持多种消息协议它们使用轻量级协议,如 HTTP / REST 等。
多线程,有更多的开销来处理 I / O单线程,通常使用 Event Loop 功能进行非锁定 I / O 处理
最大化应用程序服务可重用性专注于解耦
传统的关系数据库更常用现代关系数据库更常用
系统的变化需要修改整体系统的变化是创造一种新的服务
DevOps / Continuous Delivery 正在变得流行,但还不是主流专注于 DevOps / 持续交付

18、什么是凝聚力?

模块内部元素所属的程度被认为是凝聚力。


19、什么是耦合?

组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。


20、什么是 REST / RESTful 以及它的用途是什么?

Representational State Transfer(REST)/ RESTful Web 服务是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现。微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。


21、Spring Cloud 解决了哪些问题?

在使用 Spring Boot 开发分布式微服务时,我们面临的问题很少由 Spring Cloud 解决。

  • 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题。
  • 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。
  • 解决冗余问题 – 冗余问题经常发生在分布式系统中。
  • 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。
  • 减少性能问题 – 减少因各种操作开销导致的性能问题。

22、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试 Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。执行此单元测试时,不会启动所有其他控制器和映射。


23、什么是有界上下文?

有界上下文是域驱动设计的核心模式。DDD 战略设计部门的重点是处理大型模型和团队。DDD 通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型。


24、PACT 在微服务架构中的用途是什么?

PACT 是一个开源工具,允许测试服务提供者和消费者之间的交互,与合同隔离,从而提高微服务集成的可靠性。

微服务中的用法:

  • 用于在微服务中实现消费者驱动的合同。
  • 测试微服务的消费者和提供者之间的消费者驱动的合同。

25、什么是 OAuth?

OAuth 代表开放授权协议。这允许通过在 HTTP 服务上启用客户端应用程序(例如第三方提供商 Facebook,GitHub 等)来访问资源所有者的资源。因此,可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。


26、Web,RESTful API 在微服务中的作用是什么?

微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得 Web API 成为微服务的一个非常重要的推动者。RESTful API 基于 Web 的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。


27、Mock 和 Stub 有什么区别?

1、Mock

  • 一个虚拟对象,其中最初设置了某些属性。
  • 此对象的行为取决于 set 属性。
  • 也可以测试对象的行为。

例如:对于 Customer 对象,可以通过设置名称和年龄来模拟它。可以将 age 设置为 12,然后测试 isAdult() 方法,该方法将在年龄大于 18 时返回 true。因此,Mock Customer 对象适用于指定的条件。

2、Stub

  • 一个有助于运行测试的虚拟对象。
  • 在某些可以硬编码的条件下提供固定行为。
  • 永远不会测试存根的任何其他行为。

例如:对于空堆栈,可以创建一个只为 empty() 方法返回 true 的存根。因此,这并不关心堆栈中是否存在元素。


更新时间:2021-04-29 15:18:38

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×