**问:什么是Spring Cloud?
答:**Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration应用程序,提供与外部系统的集成。Spring Cloud Task。一种短命的微服务框架,用于快速构建执行有限数据处理的应用程序。
**问:使用Spring Cloud有哪些优势?
答:**使用Spring Boot开发分布式微服务时,我们面临以下问题 -
- 与分布式系统相关的复杂性 -
此开销包括网络问题,延迟开销,带宽问题,安全问题。 - 服务发现 -
服务发现工具管理群集中的进程和服务如何查找和相互通信。它涉及服务目录,在该目录中注册服务,然后能够查找和连接到该目录中的服务。 - 冗余 -
分布式系统中的冗余问题。 - Loadbalancing-
负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。 - 性能
问题 - 由于各种操作开销导致的性能问题。 - 部署复杂性 -
对Devops技能的要求。
问:服务注册和发现意味着什么?它是如何在Spring Cloud中实现的?
**答:**当我们启动项目时,我们通常会在属性文件中包含所有配置。随着越来越多的服务的开发和部署,添加和修改这些属性变得更加复杂。某些服务可能会停止运行,而某些服务可能会发生变化。手动更改属性可能会产生问题。
Eureka服务注册和发现在这种情况下有所帮助。由于所有服务都已注册到Eureka服务器并通过调用Eureka Server完成查找,因此无需处理服务位置的任何更改,并使用Netflix Eureka处理使用Spring云的微服务
注册和发现。
问:Load Balancing的含义是什么?它是如何在Spring Cloud中实现的?
**答:**在计算中,负载平衡可以改善跨多种计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器)的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
在SpringCloud中,可以使用Netflix Ribbon实现。
Spring Cloud- Netflix Eureka + Ribbon简单示例
**问:什么是Hystrix?它是如何实现Fault Tolerance的?
答:**Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和第三方库的访问点,停止级联故障,并在复杂的分布式系统中实现弹性,在这些系统中,故障是不可避免的。
通常,对于使用微服务架构开发的系统,涉及许多微服务。这些微服务相互协作。
考虑以下微服务 -
假设如果上图中的微服务9失败,那么使用传统方法我们将传播异常。但这仍然会导致整个系统崩溃。
随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达1000.这是hystrix进入图片的地方
我们将在这种情况下成为Hystrix的Fallback方法功能。我们有两个服务员工 - 消费者使用员工 - 生产者公开的服务。
简化图如下 -
现在假设由于某种原因,雇员生产者暴露的服务抛出异常。在这种情况下,使用Hystrix我们定义了一个回退方法。此回退方法应具有与公开的服务相同的返回类型。如果在公开的服务中出现异常,则回退方法将返回一些值。Spring Cloud- Netflix Hystrix后备方法简单示例
问:什么是Hystrix断路器?需要它吗?
**答:**由于某种原因,员工生产者暴露的服务会引发异常。在这种情况下,使用Hystrix我们定义了一个回退方法。如果在公开的服务中发生异常,则回退方法返回一些默认值。
如果在firstPage方法()中出现异常,则Hystrix电路将中断,员工消费者将一起跳过firtsPage方法并直接调用回退方法。断路器的目的是为第一页方法或firstpage方法可能调用的其他方法提供时间,并导致异常恢复。可能会发生在负载较少的情况下导致异常的问题有更好的恢复机会.
使用Netflix Hystrix的Spring Cloud- Circuit Breaker简单示例
问:什么是Netflix Feign?它的优点是什么?
答:Feign是一个受到Retrofit,JAXRS-2.0和WebSocket启发的java到http客户端绑定器。Feign的第一个目标是降低将Denominator统一绑定到http apis的复杂性,无论其是否安宁。员工 - 消费者中的先前示例我们使用REST模板使用员工生产者公开的REST服务
但是我们必须编写大量代码来执行以下操作 -
- 使用功能区进行负载均衡。
- 获取服务实例,然后获取基本URL。
- 使用REST模板来消费服务