微服务应用与开发知识点练习【Gateway,OpenFeign,Dubbo,RocketMQ和RabbitMQ,JPA,Redis,Mycat】

一、选择题

【Gateway】

1.Spring Cloud Gateway与Nacos整合实现负载均衡时,路由配置中的URI前缀应该是?(A )

A. lb://

B. nacos://

C. http://

D. discovery://

Spring Cloud Gateway与Nacos整合实现负载均衡时,路由配置中的URI前缀应该是 lb://。这是因为 lb 是 Spring Cloud LoadBalancer 的简称,它表示这个URI是一个基于服务名的负载均衡地址。Spring Cloud Gateway会利用Spring Cloud LoadBalancer来实现对Nacos注册中心中服务实例的负载均衡调用。


其他选项含义如下:

  • B. nacos://:这个前缀没有直接用于指定服务负载均衡的约定,Nacos作为注册中心时,通常与Spring Cloud LoadBalancer结合使用,通过lb://实现负载均衡。

  • C. http://:直接指定HTTP协议的URL,不会自动进行服务发现和负载均衡,适用于直接访问固定地址的场景,而不是动态从服务发现组件中选择实例。

  • D. discovery://:这个前缀在早期的Spring Cloud版本中用于服务发现,但现代实践中更多是使用lb://前缀来配合服务发现与负载均衡,尤其是在与Spring Cloud LoadBalancer集成的场景下。

2.Spring Cloud Gateway的主要作用是什么?( C

A. 数据存储

B. 日志管理

C. 路由转发和过滤

D. 配置管理

Spring Cloud Gateway是Spring Cloud生态中的一个微服务网关组件,其主要作用是提供一种统一的API路由管理方式,并在请求转发之前或之后执行一些自定义的过滤逻辑。这意味着它能够实现请求路由到不同的微服务、聚合多个服务的响应以及添加各种跨切面功能,如安全检查、日志记录、流量控制等,而不仅仅是数据存储、日志管理或配置管理。

  1. Spring Cloud Gateway中的Filter主要用于?(D )

A. 路由转发

B. 负载均衡

C. 日志记录

D. 请求和响应的过滤处理

Spring Cloud Gateway中的Filter(过滤器)主要用于请求和响应的过滤处理。这些过滤器可以在请求被路由到下游微服务前后执行,允许开发者实现各种功能,如身份验证、限流、日志记录、修改请求或响应内容等。

4.在Spring Cloud Gateway中,配置路由时使用的关键字是?(C )

A. gateway

B. router

C. routes

D. path

在Spring Cloud Gateway中,配置路由时使用的关键字是routes。在YAML配置文件中,通常会有一个spring.cloud.gateway.routes的列表,用于定义一系列的路由规则。每个路由规则都包含目标URI、匹配路径(path)、过滤器等信息。


  • A. gateway:这是指整个Spring Cloud Gateway组件或者作为配置文件中根级别的关键字,但不是直接用于配置路由的关键字。
  • B. router:在某些上下文中,"router"一词可能被用来描述路由的概念,但在Spring Cloud Gateway的具体配置中,我们更倾向于使用routes来定义路由集合。
  • D. path:path是在路由配置中用于定义匹配请求URL路径的属性关键字,它确实是路由配置的一部分,用于指定当请求的路径满足什么条件时应用该路由规则,但它本身不是配置路由的顶层关键字,而是路由规则内部的一个属性。
  1. 在Spring Cloud Gateway中使用Sentinel进行限流,需要引入哪个依赖?( A)

A. spring-cloud-starter-alibaba-sentinel

B. spring-cloud-starter-gateway-sentinel

C. spring-cloud-starter-netflix-ribbon

D. spring-cloud-starter-config

在Spring Cloud Gateway中集成Sentinel进行限流,需要引入spring-cloud-starter-alibaba-sentinel依赖。这个starter包含Spring Cloud Alibaba项目中Sentinel组件的相关集成,使得Spring Cloud Gateway应用能够利用Sentinel提供的流量控制、熔断降级等功能。


其他选项:

  • B并不是官方的标准starter名称;
  • C是Netflix Ribbon的starter,与限流无关;
  • D是用于Spring Cloud Config Server的客户端starter,用于配置管理,与限流无关。

6.Gateway中定义全局过滤器时,应该实现哪个接口?( )

A. GlobalFilter

B. GatewayFilter

C. PreFilter

D. PostFilter

在Spring Cloud Gateway中,定义全局过滤器时应该实现GlobalFilter接口。这个接口提供了单一的filter方法,该方法会在每个请求上执行,允许你对所有进入网关的请求和响应进行统一的处理,比如日志记录、鉴权、异常处理等。


相比之下

  • GatewayFilter接口更常用于定义针对特定路由的过滤逻辑;
  • PreFilterPostFilter并非Spring Cloud Gateway中标准的过滤器接口名称。

【OpenFeign】

7.【单选题】 (2分) 使用OpenFeign调用服务时,接口方法上需要使用哪个注解来映射HTTP请求?( D)

A. @RequestMapping

B. @GetMapping

C. @PostMapping

D. 以上皆可

OpenFeign允许使用Spring MVC的注解来映射HTTP请求,因此根据不同的HTTP方法,需要选择不同的注解

  • A. @RequestMapping:这是一个通用注解,可以用来处理任何HTTP方法(GET, POST, PUT, DELETE等),通过method属性来指定。
  • B. @GetMapping:专门用于映射HTTP GET请求。
  • C. @PostMapping:专门用于映射HTTP POST请求。

8.【单选题】 (2分) 在OpenFeign中,如果要设置修改默认的连接超时时间,需要配置哪个属性?(B )

A. feign.client.timeout

B. feign.client.config.default.connectTimeout

C. feign.client.connectTimeout

D. feign.timeout

在OpenFeign中,要修改默认的连接超时时间和读取超时时间,可以通过配置文件进行设置。正确的配置格式通常是将超时时间设置在特定客户端配置下,默认客户端配置可以通过default指定。所以,正确配置连接超时时间的方式是:

feign.client.config.default.connectTimeout

其中connectTimeout指连接超时时间,单位通常是毫秒。


  • A. feign.client.timeout:这个配置项并不是OpenFeign标准配置的一部分,因此使用它是错误的。
  • C. feign.client.connectTimeout:这个选项格式接近正确,但缺少了指定客户端配置的部分(如.default),直接这样配置在很多情况下可能不被正确解析或不生效,因为通常需要明确指出是针对哪个客户端配置的。正确的做法是包含客户端的命名空间,如feign.client.config.default.connectTimeout
  • D. feign.timeout:这个配置同样不是OpenFeign标准配置的正确形式,没有明确区分连接超时和读取超时,并且缺少客户端配置的上下文。在实际应用中,这样的配置通常不会被识别并应用于OpenFeign的超时设置。

9.在Spring Cloud中,启用OpenFeign需要使用的注解是?(B )

A. @EnableDiscoveryClient

B. @EnableFeignClients

C. @EnableCircuitBreaker

D. @EnableHystrix

在Spring Cloud中,要启用OpenFeign,需要在启动类或者配置类上添加@EnableFeignClients注解。这个注解会启动Feign的扫描机制,自动发现并创建标记了@FeignClient注解的接口的实现,从而实现服务间调用的简化。


其他选项中:

  • @EnableDiscoveryClient用于启用服务发现客户端
  • @EnableCircuitBreaker@EnableHystrix(已废弃,推荐使用@Resilience4j相关的注解)用于启用断路器模式,尽管它们在微服务架构中也非常重要,但直接启用OpenFeign的注解是@EnableFeignClients

10.在使用OpenFeign时,定义客户端接口需要使用的注解是?(A )

A. @FeignClient

B. @RestController

C. @Service

D. @Component

在使用OpenFeign时,为了定义一个客户端接口,需要在接口上使用@FeignClient注解。这个注解告诉OpenFeign该接口是一个远程服务的客户端代理,应该根据注解中的属性(如name或value)去查找对应的服务实例。


其他选项如@RestController@Service@Component分别是用于标注控制器、业务服务层组件和通用组件的注解,与定义Feign客户端接口无关。

11.OpenFeign默认支持的负载均衡策略是?(B )

A. 随机策略

B. 轮询策略

C. 最少连接策略

D. 权重策略

OpenFeign默认支持的负载均衡策略是轮询策略(Round Robin)。这意味着在没有特别配置的情况下,OpenFeign会按照顺序依次将请求分配给各个可用的服务实例。虽然Ribbon(OpenFeign早期版本中常用的客户端负载均衡器)支持多种负载均衡策略,包括随机、轮询、重试等,但OpenFeign集成了Ribbon时,默认采用的是轮询策略。

  1. 在Spring Cloud项目中使用OpenFeign时,需要在主应用类上添加什么注解?( B)

A. @SpringBootApplication

B. @EnableFeignClients

C. @EnableEurekaClient

D. @EnableZuulProxy

在Spring Cloud项目中使用OpenFeign时,需要在主应用类(通常是带有@SpringBootApplication的类)上添加@EnableFeignClients注解。这个注解用于开启对Feign客户端的扫描,使得应用能够识别并自动创建标记了@FeignClient的接口,从而实现服务间调用的简化。


其他选项中:

  • @SpringBootApplication是启动Spring Boot应用的基本注解
  • @EnableEurekaClient用于启用Eureka客户端(服务发现)
  • @EnableZuulProxy用于启用Zuul作为API网关

【Dubbo】

13.在Dubbo中,服务调用者引用远程服务的注解是?(B )

A.@Service

B.@Reference

C.@Dubbo

D.@DubboRefer

在Dubbo框架中,几个相关的注解含义如下:

  • A. `@Service`:这个注解用于标记一个类作为服务提供者。当你在一个类上使用`@Service`注解时,Dubbo会将这个类发布为一个服务,使其能够被其他服务消费者发现和调用。这个注解等同于在Spring配置文件中声明一个服务Bean。
  • B. `@Reference`:这是用于服务消费者的注解,用来引用远程服务。当你在一个接口上使用`@Reference`,Dubbo会自动创建该接口的实现类代理,透明地调用远程服务。这意味着你不需要自己管理网络通信的细节,直接像调用本地方法一样调用远程服务方法。
  • C. `@Dubbo`:这不是一个标准的Dubbo注解。可能是想指代某个特定的配置或用途,但按照Dubbo的标准实践,直接使用`@Service`和`@Reference`来标记服务提供者和服务消费者是更常见的做法。
  • D. `@DubboRefer`:这也是一个不准确的注解名称。正确的应该是没有这个注解的,正确的用法是`@Reference`来进行服务引用。

总结来说,如果需要在Dubbo中调用远程服务,应该使用`@Reference`注解来引用那个服务。而提供服务则使用`@Service`注解。

  1. Dubbo服务的默认通信协议是?( A)C

A. HTTP

B. RMI

C. Dubbo

D. Hessian

Dubbo 是阿里巴巴公司开源的一个高性能、分布式的服务框架,它提供了高性能的RPC远程调用能力。Dubbo 自身实现了一套RPC通信协议,默认使用的就是Dubbo协议。该协议默认使用Netty作为其网络传输层,具有较高的性能和灵活性,特别适合构建高性能、高可用的分布式系统。因此,在Dubbo服务中,默认的通信协议就是Dubbo协议。其他选项如HTTP、RMI、Hessian等虽可在Dubbo中配置使用,但不是其默认选择。


Dubbo的通信协议官方解答传送门:

通信协议 | Apache Dubbohttps://cn.dubbo.apache.org/zh-cn/overview/core-features/protocols/

15.在Dubbo配置文件中,配置注册中心的标签是?( A)

A. dubbo.registry.address

B. dubbo.reference

C. dubbo.service

D. dubbo.protocol

在Dubbo的配置文件中,配置注册中心的地址通常是通过dubbo.registry.address这个属性来完成的。不过,更准确地讲,在XML配置文件中会使用<dubbo:registry address="..." />这样的标签形式来配置注册中心的信息。这里"address"属性指出了注册中心的位置。


  • B. dubbo.reference - 这不是一个有效的配置标签。在配置服务消费者时,通常会使用<dubbo:reference id="serviceId" interface="com.example.ServiceInterface" />来引用远程服务,这里并没有直接出现"dubbo.reference"作为标签名。
  • C. dubbo.service - 同样,这不是一个直接的配置标签。配置服务提供者时,会使用<dubbo:service interface="com.example.ServiceInterface" ref="serviceBean" />来暴露服务,其中通过"interface"指定服务接口,"ref"指定实现该接口的Bean。正确的理解应为配置服务时涉及的元素,但直接的标签名表述不准确。
  • D. dubbo.protocol - 这个选项指向了配置协议的部分,在XML配置中,确实会使用<dubbo:protocol name="dubbo" port="20880" />来指定服务使用的协议及其相关属性,比如端口。"name"属性指定了使用的协议类型,默认是Dubbo协议。

16.Dubbo的主要作用是什么?( B)

A. 数据存储

B. 远程过程调用(RPC)

C. 日志管理

D. 配置管理

Dubbo是一个高性能、轻量级的开源Java RPC框架,它主要的作用是提供了一套高性能、透明化的远程服务调用方案,实现了服务提供者和服务消费者的远程通信和自动发现。Dubbo通过其丰富的服务治理功能,如负载均衡、服务路由、服务监控等,帮助开发人员更容易地构建分布式系统。


  • A. 数据存储:这个选项通常涉及数据库或数据存储系统,如关系型数据库管理系统(RDBMS)、NoSQL数据库、云存储服务等,它们负责保存和管理应用程序的数据。
  • C. 日志管理:日志管理涉及记录、处理、存储以及分析应用程序运行时产生的日志数据。这包括日志收集、日志分析工具、日志存储解决方案等,对于故障排查、性能监控、安全审计等方面至关重要。
  • D. 配置管理:配置管理是指在软件开发和IT运维中,对系统配置的标识、版本控制、变更管理等活动。它确保了团队能有效管理和追踪应用程序和基础设施的配置状态,常涉及配置文件的存储、版本控制、环境变量管理以及配置推送等功能。例如,Spring Cloud Config、Consul、Vault等工具就提供了配置管理的能力。

17.下列关于Dubbo的描述,正确的是?( D)

A. Dubbo组件是属于Spring Cloud Alibaba体系下的

B. Dubbo组件能以二进制数据流的方式传输数据

C. Dubbo组件能向远端方法调用者屏蔽远端主机名和网络传输协议等调用细节

D. 以上都正确

【RocketMQ,RabbitMQ】

18.在Spring Cloud Stream中,定义消息通道的注解是?(A )

A. @EnableBinding

B. @StreamListener

C. @Input

D. @Output

在Spring Cloud Stream中,@EnableBinding注解是用来定义消息通道的入口点。它是一个类级别的注解,用来绑定接口,这些接口定义了与消息中间件交互的输入和输出通道。因此,正确的选项是A。


  • 选项B,@StreamListener,是用来标记在消息通道上监听消息的方法的注解。
  • 选项C,@Input,和选项D,@Output,这两个注解通常用在由@EnableBinding绑定的接口方法上,分别用来标记消息的输入通道和输出通道,但它们本身不直接定义消息通道,而是与@EnableBinding配合使用来具体定义通道。

19.Spring Cloud Stream中,使用RocketMQ时需要引入哪个依赖?(C )

A. spring-cloud-starter-stream-rabbit

B. spring-cloud-starter-stream-kafka

C. spring-cloud-starter-stream-rocketmq

D. spring-cloud-starter-stream-mqtt

在Spring Cloud Stream中,要使用RocketMQ作为消息中间件,需要引入特定的starter依赖,即spring-cloud-starter-stream-rocketmq。这个依赖包含了集成RocketMQ所需的所有自动配置和绑定功能,使得开发者能够方便地在Spring Cloud Stream应用中使用RocketMQ来发送和接收消息。其他选项分别对应于RabbitMQ、Kafka和MQTT,与题目要求不符。

  1. Spring Cloud Stream中,与++消息接收者项目++直接相关的注解是?(C )

A. @EnableBinding和@Output

B. @EnableBinding和@Input

C. @EnableBinding和@StreamListener

D. @EnableBinding和@Autowired

在Spring Cloud Stream中:

|-----------------------------------------------------------------------------------------------------------------------------|
| @EnableBinding注解用于启用绑定功能,它标记在配置类上,用来声明该应用将要与哪些消息通道(input或output)进行交互。 |
| 而@StreamListener注解则是用于标记在方法上,表明该方法将作为消息处理器,监听指定的输入通道(input channel)上的消息。 |
| 因此,与消息接收者项目直接相关的注解组合是@EnableBinding@StreamListener。其他选项中,@Output通常与消息生产者相关,而@Autowired虽然在注入bean时常用,但并不直接关联于消息接收逻辑。 |


21.Spring Cloud Stream中,与++消息发送者项目++直接相关的注解是?(A )

A. @EnableBinding和@Output

B. @EnableBinding和@Input

C. @EnableBinding和@StreamListener

D. @EnableBinding和@Autowired

|---------------------------------------------------------------------------------------------------------------------|
| 在Spring Cloud Stream中,@EnableBinding注解用于启动绑定功能,它允许应用与消息通道(即输入通道@Input和输出通道@Output)建立连接。 |
| 与消息发送者项目直接相关的注解组合是@EnableBinding搭配@Output,因为@Output注解用于标记在接口方法上,表示该方法用于发送消息到指定的输出通道上。因此,选项A是正确的,它反映了消息发送者的配置。 |
| 其他选项中,@Input用于接收消息,@StreamListener用于监听输入通道的消息,而@Autowired虽常用但不是Stream特有,与消息发送者直接相关的注解组合不符。 |

22.Spring Cloud Stream框架的主要作用是什么?( C)

A. 数据存储

B. 远程过程调用(RPC)

C. 消息驱动微服务

D. 配置管理

Spring Cloud Stream框架的主要作用是提供一套用于构建基于消息传递的微服务的简化模型,支持以声明式的方式连接微服务应用与消息中间件。它允许开发者通过简单的配置来实现消息的发布与订阅,从而构建松耦合、可扩展的消息驱动架构,而不必直接处理底层消息中间件的复杂性。

23.Spring Cloud Stream中,使用RabbitMQ时需要引入哪个依赖?( A)

A. spring-cloud-starter-stream-rabbit

B. spring-cloud-starter-stream-kafka

C. spring-cloud-starter-stream-rocketmq

D. spring-cloud-starter-rabbitmq

在Spring Cloud Stream中,如果要使用RabbitMQ作为消息中间件,需要引入spring-cloud-starter-stream-rabbit依赖。这个starter包含了与RabbitMQ集成所需的自动配置和依赖,使得开发者可以轻松地在应用中使用RabbitMQ进行消息的发布和订阅。其他选项分别对应于Kafka、RocketMQ和其他非Stream相关的RabbitMQ配置,与题目要求不符。

【JPA,Redis,Mycat】

24.Spring Data JPA中,使用哪个注解定义主键?( A)

A. @Id

B. @PrimaryKey

C. @Key

D. @Column

在Spring Data JPA中,用来定义实体类的主键的注解是@Id。这是Java Persistence API (JPA) 标准中定义的注解,用于标记一个字段作为数据库表的主键。


  • B. @PrimaryKey - 这不是一个标准的JPA或Spring Data JPA注解。在JPA中,直接使用@Id来标记主键字段。可能你在这里是想指某种特定框架或自定义注解的用法,但按照标准来说,并没有@PrimaryKey来定义主键。
  • C. @Key - 同样,这不是JPA或Spring Data JPA中的标准注解。在定义实体类的主键时,正确的注解是@Id
  • D. @Column - 这个注解用于映射实体类的属性到数据库表的列。它可以用来指定列名、是否可为空(nullable)、唯一性(unique)等多种属性,但它本身不用于定义主键。要定义一个字段为主键并且映射到数据库表的主键列,你需要同时使用@Id@Column(可选,如果不指定,则默认映射),如果需要额外的列属性配置时@Column才会和@Id一起使用。

25.在Spring Data JPA中,使用哪个注解定义实体类?( B)

A. @Table

B. @Entity

C. @Column

D. @PrimaryKey

在Spring Data JPA中,使用@Entity注解来定义一个实体类,表示这个类将映射到数据库中的一个表。这个注解是JPA规范中用于实体映射的核心注解之一。


其他选项中:

  • @Table用于指定表名和表的元数据
  • @Column用于标注实体类中的属性映射到数据库表的列
  • @PrimaryKey并不是一个标准的JPA注解,应为@Id来标记实体类中的主键属性

26.在Spring Boot中整合JPA需要添加哪个依赖?( A)

A. spring-boot-starter-data-jpa

B. spring-boot-starter-data-redis

C. spring-boot-starter-cache

D. spring-boot-starter-web

在Spring Boot中整合Java Persistence API (JPA) 需要添加spring-boot-starter-data-jpa依赖。这个starter包含了使用JPA进行数据库操作所需的一切,包括Hibernate等JPA实现、事务管理以及其他Spring Data JPA的特性。


其他选项中,

  • B项用于集成Redis缓存
  • C项是Spring Cache抽象的起步依赖
  • D项是用于构建Web应用的基础起步依赖,与JPA整合无关。

27.在Spring Boot中整合Redis缓存需要添加哪个依赖?( B)

A. spring-boot-starter-data-jpa

B. spring-boot-starter-data-redis

C. spring-boot-starter-cache

D. spring-boot-starter-web

在Spring Boot中整合Redis作为缓存服务,需要添加spring-boot-starter-data-redis依赖。这个starter包含了连接Redis服务器所需的所有依赖,并提供了自动配置支持,使得开发者可以很容易地在应用中使用Redis进行数据缓存。


其他选项说明:

  • A. spring-boot-starter-data-jpa:这个starter用于集成Java Persistence API (JPA) 和对象关系映射(ORM)框架,如Hibernate,主要用于数据库操作,而非Redis缓存。
  • C. spring-boot-starter-cache:虽然这个starter提供了Spring Framework的缓存抽象的支持,但它本身并不包含具体缓存实现,如Redis。要使用Redis作为缓存后端,除了这个依赖外,还需要添加spring-boot-starter-data-redis
  • D. spring-boot-starter-web:这是用于构建Web应用的基础Starter,包含Tomcat和Spring MVC等,与Redis缓存无关。

28.在使用MyCat组件时,关于以下配置文件的说法,正确的是?(D )

A. server.xml配置对外提供服务的信息,比如工作端口,连接用户名和密码等

B. schema.xml配置分库信息

C. rule.xml配置分库规则

D. 以上都正确

在使用MyCat组件时,以下关于配置文件的说法都是正确的:

  • A. server.xml 配置文件主要负责定义MyCat服务器自身的运行配置信息,包括监听端口、用户权限认证(用户名和密码)、日志配置等。
  • B. schema.xml 配置文件用于定义逻辑库(逻辑表)与物理库(物理表)之间的映射关系,即分库信息。通过这个文件,可以配置MyCat如何将一个逻辑库拆分到多个物理库上。
  • C. rule.xml 配置文件用于定义数据分片规则,即分库分表的策略。这里可以定义如何根据某个字段的值进行数据分布,例如范围分片、哈希分片等。

29.MyCat主要用于解决哪种数据库问题?(B )

A. 数据库高可用

B. 数据库分库

C. 数据库备份

D. 数据库安全

MyCat是一个开源的分布式数据库系统,主要用于解决数据库分库分表、读写分离的问题,以支持海量数据存储和高并发访问。虽然它也可以通过与相关技术结合间接提升数据库的高可用性和安全性,但其主要设计目的是为了解决单个数据库因数据量大、访问压力高而带来的扩展性问题。

30.在使用MyCat组件时,关于以下配置文件的说法,正确的是?(A )

A. server.xml配置对外提供服务的信息,比如工作端口,连接用户名和密码等

B. schema.xml配置分库规则

C. rule.xml配置分库信息

D. 以上都正确

在MyCat配置中,server.xml确实用于配置MyCat服务的基本信息,比如监听端口、管理用户名和密码等。而B和C选项的描述有误,实际上,schema.xml用于配置逻辑库和数据节点(即分库信息),rule.xml则是用来配置分片规则(即如何分表)。因此,最准确的说法是A选项。其他选项中关于schema.xml和rule.xml的描述颠倒了它们的功能。

二、判断题

【Gateway】

38.【判断题】 (2分) Spring Cloud Gateway可以作为API网关处理请求。(T )

Spring Cloud Gateway正是设计用于作为API网关的组件,它能够处理微服务架构中的所有外部请求,并提供路由、过滤、负载均衡等多种功能。通过Spring Cloud Gateway,开发者可以实现请求的预处理、路由到不同微服务、聚合多个服务的响应以及实施安全策略等,是微服务架构中API管理与请求处理的关键组件。

39.【判断题】Spring Cloud Gateway只能通过代码配置路由,不能通过配置文件配置。(F )

Spring Cloud Gateway支持通过配置文件(如application.yml或application.properties)来配置路由规则,这是其灵活性和易用性的一个重要体现。实际上,很多Spring Cloud Gateway的应用场景都会利用YAML或Properties文件来定义路由规则,而不仅限于代码配置。

40.【判断题】 (2分) 通过Spring Cloud Gateway配置的路由可以实现负载均衡。( T)

通过Spring Cloud Gateway配置的路由确实可以实现负载均衡。Spring Cloud Gateway内置了对Spring Cloud LoadBalancer的支持,这意味着它可以透明地将请求路由到后端服务的多个实例上,实现负载均衡。只要后端服务实例注册到了服务发现组件中(如Eureka、Consul或Nacos),Spring Cloud Gateway就能利用这些信息来进行智能的负载均衡决策。

41.【判断题】 (2分) 在Spring Cloud Gateway中,所有过滤器都必须是全局过滤器。(F )

在Spring Cloud Gateway中,过滤器不仅可以是全局过滤器,也可以是路由级别的过滤器。全局过滤器会对所有路由的请求或响应进行处理,而路由级别过滤器仅作用于特定路由。开发者可以根据需要灵活配置,既可以定义影响全局的过滤逻辑,也能针对特定路由设定个性化的处理规则。因此,并非所有过滤器都必须是全局过滤器。

42.【判断题】 (2分) Spring Cloud Gateway的Filter只能在请求之前执行。( F)

Spring Cloud Gateway的Filter不仅可以实现在请求之前执行,还能在请求之后、响应之前以及响应之后执行。Spring Cloud Gateway的过滤器链分为多个阶段(如PRE、ROUTING、POST等),允许开发者在请求处理的不同阶段插入自定义逻辑。因此,Filter不仅能用于请求之前的预处理,还能够用于处理请求后的响应或是完成其他类型的处理逻辑。

50.【判断题】 (2分) 在Spring Cloud Gateway中,路由的定义必须包含id、uri和filters三个属性。( F)

在Spring Cloud Gateway中,路由的定义至少需要包含iduri两个属性,filters属性是可选的。id用于唯一标识一个路由,uri指定了请求要转发到的目标地址。filters属性用于定义路由级别的过滤器链,用于修改进入和离开该路由的请求和响应,但并不是每次定义路由时都必须提供。因此,说路由定义必须包含idurifilters三个属性是不准确的。

【OpenFeign】

32.【判断题】 (2分) OpenFeign中的@FeignClient注解只能用于类,不能用于接口。( F)

实际上,@FeignClient注解在Spring Cloud的OpenFeign中是用来标记一个接口的,而不是用于类。这个注解会告诉Spring Cloud该接口应该被Feign实现,以透明地进行HTTP请求调用。因此,它通常被用在定义服务调用接口的地方,而非实现类。所以,正确的说法应该是@FeignClient注解主要用于接口,而不是不能用于接口。

33.【判断题】 (2分) OpenFeign不支持负载均衡和服务降级。( F)

OpenFeign支持负载均衡和服务降级。当OpenFeign与Spring Cloud集成时,它能够利用Spring Cloud的负载均衡功能(通常是Ribbon或Spring Cloud LoadBalancer),实现对服务实例的自动选择,即负载均衡。同时,通过与Spring Cloud Circuit Breaker(如Hystrix、Resilience4j)集成,OpenFeign还能够支持服务降级策略,确保在服务不可用时提供回退机制,保证系统的稳定性和可靠性。

43.【判断题】 (2分) OpenFeign的客户端接口方法支持多种HTTP请求类型,例如GET、POST等。( T)

OpenFeign的客户端接口方法确实支持多种HTTP请求类型,包括但不限于GET、POST、PUT、DELETE等。通过在接口方法上使用对应的Spring MVC注解,如@GetMapping、@PostMapping等,开发者可以定义接口方法对应的具体HTTP请求行为。

【Dubbo】

34.【判断题】 (2分) Dubbo的服务注册中心只支持Zookeeper。( F)

Dubbo作为一个分布式服务框架,支持多种服务注册中心,除了Zookeeper之外,它还支持但不限于以下几种服务注册中心:

  • Nacos
  • Eureka
  • Consul
  • Redis
  • Etcd

47.【判断题】 (2分) Dubbo支持多种协议,如Dubbo、RMI、HTTP等。( T)

Dubbo是一个分布式服务框架,它确实支持多种通信协议,以便于在不同的环境下进行服务间通信。Dubbo默认使用的是自己设计的Dubbo协议,这是一种高性能、面向连接的二进制RPC通信协议。此外,Dubbo还支持包括但不限于RMI(Java远程方法调用)、HTTP、Hessian、Thrift等协议,以满足多样化的集成需求和兼容性要求。

48.【判断题】 (2分) Dubbo集成Sentinel后,可以实现熔断和限流功能。(T )

Dubbo集成Apache Sentinel后,确实可以实现服务的熔断和限流功能。Sentinel作为一个强大的流量控制组件,提供了丰富的流量控制、断路器、系统自适应保护等能力。当Dubbo与Sentinel结合使用时,开发者可以通过Sentinel对Dubbo服务调用进行细粒度的流量控制和熔断策略配置,以增强微服务架构的稳定性和弹性。

【Spring Cloud Stream】

35.【判断题】 在Spring Cloud Stream中,@StreamListener注解用于监听消息并处理。(T )

在Spring Cloud Stream框架中,@StreamListener注解确实用于标记在方法上,以声明该方法用于监听来自消息通道(input channel)的消息并进行相应的处理。当消息到达指定的通道时,该注解标记的方法会被自动调用,从而实现了消息的异步处理逻辑。

44.【判断题】 (2分) Spring Cloud Stream是一个用于构建消息驱动微服务的框架。( T)

Spring Cloud Stream确实是一个用于构建消息驱动微服务的框架。它提供了一种声明式的模型来连接微服务应用与消息中间件,支持消息的发布与订阅,简化了消息处理逻辑的编写,使得开发者可以更加专注于业务逻辑,而不是消息传递的细节。

45.【判断题】 (2分) Spring Cloud Stream只能与RabbitMQ整合,不能与RocketMQ整合。( F)

Spring Cloud Stream并不局限于与RabbitMQ整合,它也支持与RocketMQ等其他消息中间件的整合。Spring Cloud Stream的设计理念之一就是提供与消息中间件之间的抽象层,使其能够灵活地适配不同的消息平台。因此,除了RabbitMQ之外,Spring Cloud Stream还支持包括RocketMQ、Kafka在内的多种消息中间件。

【JPA,Redis,Mycat】

46.【判断题】 (2分) Spring Data JPA可以自动生成基本的CRUD操作。( T)

Spring Data JPA的一大特点是能够根据定义的接口自动生成基本的CRUD(创建Create、读取Retrieve、更新Update、删除Delete)操作的实现代码。开发者只需要定义一个扩展了Spring Data JPA提供的Repository接口的接口,并不需要手动编写SQL语句或具体的实现方法,Spring Data JPA会自动为这些接口方法提供实现,从而简化了数据访问层的开发工作。

31.【判断题】 (2分) 在Spring Boot中,Redis缓存的过期时间不能设置。( F)

在Spring Boot中使用Redis作为缓存时,可以通过相应的配置来设置Redis缓存的过期时间。例如,可以使用@Cacheable注解的expire属性来为特定的缓存操作指定过期时间,或者直接在Redis命令中设置key的生存时间(TTL, Time To Live)。因此,Redis缓存的过期时间是可以设置的。

49.【判断题】 (2分) 在Spring Boot中,Redis的缓存配置必须在配置文件中完成,不能通过注解配置。( F)

在Spring Boot中,Redis的缓存配置既可以在配置文件(如application.yml或application.properties)中完成,也可以通过注解进行配置。例如,可以使用@CacheConfig注解在类级别定义缓存的默认配置,而@Cacheable@CachePut@CacheEvict等注解可以在方法级别详细控制缓存行为,包括缓存的名称、key的生成策略、过期时间等。

36.【判断题】 (2分) MyCat可以用于多个数据库的读写分离。(T )

MyCat确实可以用于实现多个数据库的读写分离。它是基于MySQL协议的中间件,能够实现数据库的分库分表、读写分离等功能,以提高数据库的处理能力和扩展性。通过配置,MyCat可以将读操作路由到从数据库(Slave),而写操作则路由到主数据库(Master),从而实现读写分离,提高系统的并发处理能力和数据安全性。

37.【判断题】 (2分) MyCat只能与MySQL数据库配合使用。( F)

MyCat虽然最初设计时主要针对MySQL数据库进行分库分表和读写分离,但它并不局限于仅与MySQL配合使用。理论上,只要数据库兼容MySQL协议,MyCat都可以尝试与其集成。实际上,MyCat已经支持包括但不限于MySQL、MariaDB、Percona Server等数据库。此外,通过定制和适配,MyCat还有可能与其他遵循MySQL协议的数据库系统一起工作。

相关推荐
DT辰白8 小时前
如何解决基于 Redis 的网关鉴权导致的 RESTful API 拦截问题?
后端·微服务·架构
老猿讲编程10 小时前
技术发展历程:从 CORBA 到微服务
微服务·云原生·架构
白开水23311 小时前
Apache RocketMQ 5.1.3安装部署文档
apache·rocketmq
浩哲Zhe13 小时前
RabbitMQ
java·分布式·rabbitmq
BothSavage13 小时前
Knife4j在Gateway下的URI优化以及热刷新
windows·gateway
Allen Bright14 小时前
RabbitMQ中的Topic模式
分布式·rabbitmq
time_silence15 小时前
微服务——服务通信与接口设计
微服务
Allen Bright17 小时前
Spring Boot 整合 RabbitMQ:手动 ACK 与 QoS 配置详解
spring boot·rabbitmq·java-rabbitmq
一路狂飙的猪17 小时前
RabbitMQ的工作模型
分布式·rabbitmq