资料库

SpringCloud面试题.pdf

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
SpringCloud面试题
1、什么是Spring Cloud?
Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用
2、Spring Cloud和Dubbo的区别
Dubbo关注的领域是Spring Cloud的一个子集。Dubbo专注于服务治理,其在服务治理、灰
Dubbo使用RPC调用效率高一些,Spring Cloud使用HTTP调用效率低,使用更简单。
3、REST和RPC的区别
REST风格的系统交互更方便,RPC调用服务提供方和调用方式之间依赖太强。
REST调用系统性能较低,RPC调用效率比REST高。
REST的灵活性可以跨系统跨语言调用,RPC只能在同语言内调用。
REST可以和Swagger等工具整合,自动输出接口API文档。
4、SpringCloud如何实现服务的注册和发现
服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者
这一过程是springcloud自动实现 只需要在main方法添加@EnableDisscovery
调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign
5、什么是服务熔断和服务降级?
熔断机制是应对雪崩效应的一种微服务链路保护机制。当某个微服务不可用或者响应时间太长时,会进行服务降级
服务降级,一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一
Hystrix相关注解:
@EnableHystrix:开启熔断
@HystrixCommand(fallbackMethod=”XXX”):声明一个失败回滚处理函数
6、什么是Hystrix?它如何实现容错?
Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故
通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。
随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达1000.这是hystrix出现的地
7、什么是Hystrix断路器?我们需要它吗?
由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我
如果firstPage method() 中的异常继续发生,则Hystrix电路将中断,并且员工使用
8、项目中zuul常用的功能
提供动态路由
提供安全、鉴权处理
跨域处理
全局动态路由的hystrix(熔断、降级、限流)处理
9、服务网关的作用
简化客户端调用复杂度,统一处理外部请求。
数据裁剪以及聚合,根据不同的接口需求,对数据加工后对外。
多渠道支持,针对不同的客户端提供不同的网关支持。
遗留系统的微服务化改造,可以作为新老系统的中转组件。
统一处理调用过程中的安全、权限问题。
Spring Cloud中的网关有:Zuul和Spring Cloud Gateway,最新版本中推
10、ribbon和feign区别
Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonCli
feign添加maven依赖 spring-starter-feign 服务提供方提供对外接口 调用
Ribbon和Feign的区别:
Ribbon和Feign都是用于调用其他服务的,不过方式不同。
启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的@EnableFe
服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方
调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate
Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成
不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。
11、ribbon的负载均衡策略
RoundRobinRule: 轮询策略,Ribbon以轮询的方式选择服务器,这个是默认值。所以示例
RandomRule: 随机策略,也就是说Ribbon会随机从服务器列表中选择一个进行访问;
BestAvailableRule: 最大可用策略,即先过滤出故障服务器后,选择一个当前并发请求数最
WeightedResponseTimeRule: 带有加权的轮询策略,对各个服务器响应时间进行加权
AvailabilityFilteringRule: 可用过滤策略,先过滤出故障的或并发请求大于阈值
ZoneAvoidanceRule: 区域感知策略,先使用主过滤条件(区域负载器,选择最优区域)对所
12、简述什么是CAP,并说明Eureka包含CAP中的哪些?
CAP理论:一个分布式系统不可能同时满足C (一致性),A(可用性),P(分区容错性).由于分区容错
Eureka 遵守 AP
Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,神域的节点依然可以提供注册和查询
而Eureka的客户端在向某个Eureka 注册或查询是如果发现连接失败,则会自动切换至其他节点,只
13、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
Zookeeper保证了CP(C:一致性,P:分区容错性)
Eureka保证了AP(A:高可用)
当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不
Eureka保证了可用性,Eureka各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节
Eureka不在从注册列表中移除因为长时间没有收到心跳而应该过期的服务。
Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上(即保证当前节点仍然可用)
当网络稳定时,当前实例新的注册信息会被同步到其他节点。
因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样
14、什么是 Spring Cloud Bus?我们需要它吗?
Spring Cloud Bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置
考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而 Spri
15、链路跟踪Sleuth
当我们项目中引入Spring Cloud Sleuth后,每次链路请求都会添加一串追踪信息,格式是[
server-name:服务结点名称。
main-traceId:一条链路唯一的ID,为TraceID。
sub-spanId:链路中每一环的ID,为SpanID。
SpringCloud 面试题 1、什么是 Spring Cloud? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集 成,更专注于服务治理。Spring cloud Task,一个生命 周期短暂的微服务框架,用于快速构建执行有限数据 处理的应用程序。 2、Spring Cloud 和 Dubbo 的区别 Dubbo 关注的领域是 Spring Cloud 的一个子集。 Dubbo 专注于服务治理,其在服务治理、灰度发布、 流量分发方面比 Spring Cloud 更全面。Spring Cloud 覆 盖整个微服务架构领域。 Dubbo 使用 RPC 调用效率高一些,Spring Cloud 使 用 HTTP 调用效率低,使用更简单。 3、REST 和 RPC 的区别 REST 风格的系统交互更方便,RPC 调用服务提供 方和调用方式之间依赖太强。
REST 调用系统性能较低,RPC 调用效率比 REST 高。 REST 的灵活性可以跨系统跨语言调用,RPC 只能 在同语言内调用。 REST 可以和 Swagger 等工具整合,自动输出接口 API 文档。 4、SpringCloud 如何实现服务的注册和发现 服务在发布时 指定对应的服务名(服务名包括了 IP 地址和端口) 将服务注册到注册中心(eureka 或者 zookeeper)。 这一过程是 springcloud 自动实现 只需要在 main 方法添加@EnableDisscoveryClient 同一个服务修改 端口就可以启动多个实例。 调用方法:传递服务名称通过注册中心获取所有 的可用实例 通过负载均衡策略调用(ribbon 和 feign) 对应的服务。 5、什么是服务熔断和服务降级?
熔断机制是应对雪崩效应的一种微服务链路保护 机制。当某个微服务不可用或者响应时间太长时,会 进行服务降级,进而熔断该节点微服务的调用,快速 返回“错误”的响应信息。当检测到该节点微服务调用 响应正常后恢复调用链路。在 SpringCloud 框架里熔断 机制通过 Hystrix 实现,Hystrix 会监控微服务间调用的 状况,当失败的调用到一定阈值,缺省是 5 秒内调用 20 次,如果失败,就会启动熔断机制。 服务降级,一般是从整体负荷考虑。就是当某个 服务熔断之后,服务器将不再被调用,此时客户端可 以自己准备一个本地的 fallback 回调,返回一个缺省 值。这样做,虽然会出现局部的错误,但可以避免因 为一个服务挂机,而影响到整个架构的稳定性。 Hystrix 相关注解: @EnableHystrix:开启熔断 @HystrixCommand(fallbackMethod=”XXX”):声明 一个失败回滚处理函数 XXX,当被注解的方法执行超 时(默认是 1000 毫秒),就会执行 fallback 函数,返 回错误提示。
6、什么是 Hystrix?它如何实现容错? Hystrix 是一个延迟和容错库,旨在隔离远程系统, 服务和第三方库的访问点,当出现故障是不可避免的 故障时,停止级联故障并在复杂的分布式系统中实现 弹性。 通常对于使用微服务架构开发的系统,涉及到许 多微服务。这些微服务彼此协作。 随着微服务数量的增加,这个问题变得更加复杂。 微服务的数量可以高达 1000.这是 hystrix 出现的地方 我们将使用 Hystrix 在这种情况下的 Fallback 方法功能。 我们有两个服务 employee-consumer 使用由 employee-consumer 公开的服务。 7、什么是 Hystrix 断路器?我们需要它吗? 由于某些原因,employee-consumer 公开服务会 引发异常。在这种情况下使用 Hystrix 我们定义了一个 回退方法。如果在公开服务中发生异常,则回退方法 返回一些默认值。
如果 firstPage method() 中的异常继续发生,则 Hystrix 电路将中断,并且员工使用者将一起跳过 firtsPage 方法,并直接调用回退方法。断路器的目的 是给第一页方法或第一页方法可能调用的其他方法留 出时间,并导致异常恢复。可能发生的情况是,在负 载较小的情况下,导致异常的问题有更好的恢复机 会 。 8、项目中 zuul 常用的功能 提供动态路由 提供安全、鉴权处理 跨域处理 全局动态路由的 hystrix(熔断、降级、限流)处理 9、服务网关的作用 简化客户端调用复杂度,统一处理外部请求。 数据裁剪以及聚合,根据不同的接口需求,对数 据加工后对外。
多渠道支持,针对不同的客户端提供不同的网关 支持。 遗留系统的微服务化改造,可以作为新老系统的 中转组件。 统一处理调用过程中的安全、权限问题。 Spring Cloud 中的网关有:Zuul 和 Spring Cloud Gateway,最新版本中推荐使用后者。 10、ribbon 和 feign 区别 Ribbon 添加 maven 依赖 spring-starter-ribbon 使 用@RibbonClient(value="服务名称") 使用 RestTemplate 调用远程服务对应的方法。 feign 添加 maven 依赖 spring-starter-feign 服务提 供方提供对外接口 调用方使用 在接口上使用 @FeignClient("指定服务名") Ribbon 和 Feign 的区别: Ribbon 和 Feign 都是用于调用其他服务的,不过 方式不同。
启动类使用的注解不同,Ribbon 用的是 @RibbonClient,Feign 用的@EnableFeignClients。 服务的指定位置不同,Ribbon 是在@RibbonClient 注解上声明,Feign 则是在定义抽象方法的接口中使用 @FeignClient 声明。 调用方式不同,Ribbon 需要自己构建 http 请求, 模拟 http 请求然后使用 RestTemplate 发送给其他服务, 步骤相当繁琐。 Feign 则是在 Ribbon 的基础上进行了一次改进, 采用接口的方式,将需要调用的其他服务的方法定义 成抽象方法即可, 不需要自己构建 http 请求。不过要注意的是抽象 方法的注解、方法签名要和提供服务的方法完全一致。 11、ribbon 的负载均衡策略 RoundRobinRule: 轮询策略,Ribbon 以轮询的方 式选择服务器,这个是默认值。所以示例中所启动的 两个服务会被循环访问;
RandomRule: 随机策略,也就是说 Ribbon 会随机 从服务器列表中选择一个进行访问; BestAvailableRule: 最大可用策略,即先过滤出故 障服务器后,选择一个当前并发请求数最小的; WeightedResponseTimeRule: 带有加权的轮询策 略,对各个服务器响应时间进行加权处理,然后在采 用轮询的方式来获取相应的服务器; AvailabilityFilteringRule: 可用过滤策略,先过滤出 故障的或并发请求大于阈值的一部分服务实例,然后 再以线性轮询的方式从过滤后的实例清单中选出一 个; ZoneAvoidanceRule: 区域感知策略,先使用主过 滤条件(区域负载器,选择最优区域)对所有实例过 滤并返回过滤后的实例清单,依次使用次过滤条件列 表中的过滤条件对主过滤条件的结果进行过滤,判断 最小过滤数(默认 1)和最小过滤百分比(默认 0), 最后对满足条件的服务器则使用 RoundRobinRule(轮 询方式)选择一个服务器实例。
分享到:
收藏