JAVA面试题:微服务篇

1.spring cloud 5大组件有哪些?

一代:

eureka:注册中心

ribbon:负载均衡

feign:远程调用

hystrix:服务熔断

getway:网关

二代阿里云:

nacos:注册中心/配置中心

ribbon:负载均衡

feign:远程调用

sentinel:服务保护

getway:网关

2.服务注册和服务发现什么意思?spring cloud如何实现服务注册发现?

spring cloud实现服务主要有三部分内容:

服务注册:服务提供者向注册中心注册自己的信息,由注册中心来保存这些信息。

服务发现:服务消费者在注册中心拉取服务提供者所存贮的列表信息,如果服务有集群,则采用负载均衡选择一个服务发起调用。

服务监控:服务提供者每隔一段时间向注册中心发送一次心跳,如果在指定时间内没有收到服务提供者发送的心跳,则从注册中心剔除。

3.nacos与eureka的区别?

nacos相比于eureka而言,他除了支持注册中心,还支持配置中心,而且nacos还可以主动监测服务提供者,临时实例采用心跳监测,非临时实例采用主动监测。

4.你们项目的负载均衡如何实现?

我们的项目中的负载均衡是通过ribbon实现的,feign的底层已经实现的ribbon所以使用起来非常简单,在拉取服务列表信息的时候,如果是集群则用负载均衡,按照一定的路由策略发起调用,这种策略一般是选择轮询。

5.ribbon负载均衡策略有哪些?

轮询,随机,按权重选择响应时间越长权重越小,区域敏感策略(就近原则)。

6.如果想自定义负载均衡策略如何实现?

有两种方式:

第一种是通过iRual接口实现,这个是对全局生效的。

第二种是可以通过客户端配置文件,配置一个服务的负载均衡策略,这个只对单个服务有效。

7.什么是服务雪崩怎么解决这个问题?

服务雪崩指的是,一个服务不可用,导致调用这个服务服务的服务也不可用,从而导致整个链路的服务不可用。

解决服务雪崩有两种方式:

服务降级:他是服务自我保护的一种方式,或者说是保护下游服务的一种方式,他的主要作用是不会受请求突增影响,而变得不可用,保证服务不会崩溃。

服务熔断:他默认是关闭的需要手动打开,在一定时间内服务请求失败超过一定的阈值,就会开启服务熔断,然后每个一段时间重新请求微服务,如果请求可达,则关闭熔断,如果服务还是不可达,则继续走熔断机制。

8.你们的微服务是怎么监控的?

我们采用的是运维的监控系统skywalking进行监控的,他可以监控接口,服务,物理实例的一些状态。我们还设置了警告装置,当服务上线出现问题后,skywalking可以给相关负责人发送邮件。

9.你们项目有没有做过限流?怎么做的?

我们当时使用nginx限流,nginx里面有一种漏桶算法,他可以让请求以固定的频率处理请求,可以应对突发请流量请求。

10.限流的常见算法有哪些?

漏桶算法:将请求放入一个漏桶中,按照一定的频率处理请求。

令牌桶:将令牌放入一个桶中,按照一定频率生成令牌,每个请求需要先申请令牌,申请到令牌后才能够处理。

11.什么是CAP理论?

cap分别对应的是一致性,可用性,和分区容错性。

一致性:在同一时间保存的数据必须完全一致。

可用性:系统提供的服务必须一直保持在可用状态。

分区容错性:指的是分布式系统在遇到任何网络分区故障时,都能够保持一一致性和可用性的服务。除非整个网络环境都发生故障。

12.为什么分布式系统中无法同时保证一致性和可用性?

因为分布式系统必须保持分区容错性,所以只能从一致性和可用性之间进行取舍,满足一致性就不能够满足可用性,反之也成立,所以只能在偏向CP和偏向AP之间进行取舍。

13.什么是BASE理论?

也是一种分布式设计理论,他是分布式方案中AP方案的延伸,AP方案就是无法保证一致性,但是BASE理论是即使无法做到强一致性但要保证最终一致性,他的思想包含三个方面:

1.基本可用:系统发生故障时,允许损失部分可用性,但不代表整体不可用。

2.软状态:允许存在中间状态

3.最终一致性:保证数据最终能够达到一致的状态。

14.你们采用哪种分布式事务解决方案?

采用seata的at模式来解决分布式方案。

15.分布式事务接口幂等性如何设置?

我们在健康之源项目中有一个下单的操作,我们当时使用的是token+redis实现的,流程是这样的:

1.用户点击打开这个页面时,前端会生成一个唯一token发送到后端,存入到redis中,同时把这个token返回给前端。

2,。当用户点击下单操作后,会携带这个token进入后端reids中,产看这个token是否存在,如果存在则继续进行后需操作,如果不存在就停止下单返回服务。

16.xxl-job路由 策略有哪些?

xxl-job提供的路由策略有很多,我们平时用的比较多的就是:轮询,故障转移,分片广播。

17.xxl-job任务执行失败怎么解决?

1.可以使用故障转移策略,使用健康的实例执行任务。

2.创建任务时可以设置重置重新次数。

18.如果有大数据量的任务同时需要执行该怎么解决?

部署多个实例共同去执行这些任务,路由策略选择分片广播。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 微服务面试题可以包括多个方面的问题。其中一些常见的问题包括测试微服务时面临的挑战,过渡到微服务时的常见错误,以及为什么在微服务中需要报告和仪表板。在测试微服务时,测试人员需要全面了解所有入站和出站过程,并且在独立的团队开发不同功能时,协作可能会变得困难。此外,随着微服务数量的增加,系统的复杂性也会增加,测试人员需要确保组件之间的内部通信没有中断。\[1\]过渡到微服务时的常见错误包括没有充分了解微服务架构的优点,以及在部署和管理微服务时遇到的挑战。\[2\]微服务的优点包括可以轻松适应其他框架或技术,单个进程的失败不会影响整个系统,为大企业和小型团队提供支持,以及可以在相对较短的时间内独立部署。\[2\]康威定律与微服务的关系是另一个可能被问到的问题。康威定律指出,组织的通信结构会影响到设计的系统的结构。微服务架构中的松散耦合的API正是康威定律的体现,它使得组织在重组工作流程时更加灵活。\[3\]此外,面试中还可能会问到如何配置Spring Boot应用程序的日志记录。配置Spring Boot应用程序的日志记录可以通过在application.properties或application.yml文件中设置相关属性来实现。\[3\] #### 引用[.reference_title] - *1* *2* *3* [29个你必须掌握的微服务面试问题(含答案解析)](https://blog.csdn.net/chiquanzhe9768/article/details/100934283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值