java Spring Cloud面试题----持续补充

主文章(我总结的面试题的索引目录—进不去就说明我还没写完)
https://blog.csdn.net/grd_java/article/details/122357831

1. Spring Cloud5大组件和作用

什么是springCloud

  1. 用来治理各种使用spring boot开发的微服务的工具,提供了一站式服务。spring cloud是一个集成者,集成了世界上许多优秀的组件进行封装,例如Netflix的产品Eureka、Ribbon、Hystrix、Feign都被集成到SpringCloud,并进行封装,可以让我们方便的使用它们。
  2. 它规定了服务提供者(spring boot开发的服务)、服务消费者(使用服务的群体)、注册中心(注册服务,这样消费者就可以通过注册中心找到服务提供者提供的服务)
  3. 每个微服务启动时,将自己的信息注册到注册中心,服务消费者会从注册中心找信息,然后调用对应服务
  4. 有很多东西,例如Eureka已经不在维护,虽然还有大部分公司再用,但是免不了被淘汰,相应的,产生了很多优秀的替代产品,例如Spring Cloud Alibaba Nacos注册中心。

Spring Cloud有哪些组件,作用是什么?

  1. zuul网关:充当微服务的网关,也是微服务。使得用户发起请求时,只需要请求网关的ip和端口,网关会解析用户请求url,转发到相应的微服务
  2. Eureka注册中心:提供服务注册和发现功能,每个微服务都可以注册到注册中心,想要调用微服务时,就可以去注册中心寻找,就是服务发现。
  3. Ribbon:提供负载均衡和服务远程调用功能,当某一个微服务是一个集群,那么Ribbon提供多种算法,例如轮询的让每一台服务器轮流处理请求,也可以通过RestTemplate来远程调用其它服务
  4. Hystrix:服务熔断和降级,避免雪崩的发生,当服务出现问题,计算进行熔断处理或降级处理(就是功能无法正常提供时的补救策略,可以是一个类,或者一个响应页面,给一些友好的提示)
  5. Feign:封装了Ribbon、Hystrix,可以更方便的实现负载均衡,以及微服务远程调用,并且提供了熔断降级功能
  6. spring cloud config:配置中心,也是一个微服务。可以让我们将配置配置到云端,而不是写死在本地,例如共有的配置(数据库连接等)

Eureka注册中心的注册部分

  1. Eureka Server:注册中心,Eureka Client会注册到这里
  2. Eureka Client:服务提供者,Eureka Client连接Eureka Server完成注册

Ribbon的负载均衡策略

  1. 轮询:默认策略,集群每台服务器,轮流处理请求
  2. 随机策略:随机到每一台,整体来看,也是负载均衡的

Ribbon与Feign的区别

  1. Feign封装了Ribbon和Hystrix
  2. Ribbon向其它服务发起请求,需要构建http请求,通过restTemple.getForObject(http请求,Class)
    在这里插入图片描述
  3. Feign无需手动创建http请求,通过声明式接口调用业务即可访问其它服务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2. 微服务的通信

同步通讯和异步通讯的区别

  1. 同步通讯,就是一步一步来,异步通讯就是两件事一起执行,互不影响
  2. 比如Java 只有main方法一个线程执行或者并发执行时,一个线程必须等待另一个线程停止,才能继续执行,都是同步通讯。
  3. 而例如Ajax前后端交互,线程并发执行时,一个线程无需等待另一个线程执行结束,就是异步通讯。
  4. 另外,异步都是针对人类而言,像Linux系统等等计算机层面而言,所有的异步都是假异步。都是通过同步实现的。

前后端交互,Ajax同步和异步的区别

  1. 这道题也可以作为《同步通讯和异步通讯的区别》这道题的例子讲解
  2. 假设我第一个Ajax请求,请求成功,发送第二个Ajax请求,类似这样的一个请求结束,才能进行下一个请求,在发送请求的视角下,就是同步的。ajax底层依然是异步
  3. 假设,当我进入某一页面,需要连续发送3个ajax请求,没有嵌套,那么它们不会第一个执行完才执行第二个,而是异步的,几乎一起向后端发送请求。每个ajax请求,都不会互相影响。

微服务之间如何通信

  1. 可以通过Http的方式进行通讯
  2. spring Cloud封装的Ribbon和Feign组件可以实现http远程微服务通信
  3. 通过http请求,前往注册中心,进行远程调用,使用Ribbon时,http地址中指定要调用的微服务在注册中心的名字
  4. Feign需要通过注解,指定要远程调用的微服务的名字@FeignClient()

3. 必问

Spring Cloud的优势

  1. spring boot分布式微服务有很多问题,而Spring Cloud很好的解决了他们
  2. 与分布式系统相关的复杂性:网络问题、延迟、带宽问题、安全问题的开销
  3. 服务注册发现:服务间想要交互,如何找到服务?涉及一个服务目录,目录中需要注册服务,然后能查找并连接该目录中的服务。
  4. 冗余:分布式系统中的冗余问题,例如配置文件,以及一些交互手段,都可以抽象一层出来,就是spring Cloud
  5. 负载均衡:服务集群中每台设备如何均衡的处理业务,总不能10台服务器,9台打酱油,就一个干活吧
  6. 性能:各种运营开销,使用各种组件,例如Netflix原生的组件维护等导致的性能问题
  7. 部署复杂:部署虽然是Devops运维人员负责的事,但是使用统一的Spring Cloud可以方便的快速部署项目

什么是服务注册与发现,Spring Cloud如何实现

  1. 当服务开发和部署越来越多时,服务间交互,需要在属性文件中进行配置(相当于将微服务进行注册,记录成一张表),而添加、修改这些配置将越来越复杂,手动修改可能会产生问题。而发现就是,服务消费者,通过表找到服务提供者,然后和它获取服务。
  2. Spring Cloud提供的Eureka服务注册中心概念,可以帮助我们完成上面的事,所有服务都可以在Eureka或其它注册中心进行注册。并通过注册中心服务器完成查找。无需我们手动维护

什么是负载均衡

  1. 当某一服务请求量太大,一台服务器无法承担时,往往可以使用集群部署(多台服务器提供相同服务)
  2. 那么如何保证这些服务器,均衡的完成工作呢,如何保证,不出现有的机器工作量大,有的机器甚至没活可干的情况呢?就是通过负载均衡
  3. 负载均衡通常涉及专业软件或硬件,或者组合形式。例如多层交换机或域名系统服务进程。或者nginx等提供请求转发,负载均衡的http服务器,或者Spring Cloud提供的Ribbon、Feign等组件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值