java-微服务相关面试题

本文深入探讨了微服务的相关概念,包括集群、负载均衡和分布式的基本理解,以及微服务架构的优势和挑战。详细阐述了微服务中的核心组件如Eureka、Ribbon、Spring Cloud等的原理和工作流程,还涵盖了服务注册、服务发现、负载均衡、服务降级、熔断、分布式事务等关键技术。同时,提到了在实际项目中如何集成和使用这些组件,以及如何解决分布式系统中的问题。
摘要由CSDN通过智能技术生成

微服务部分

相关概念

什么是集群

集群使将应用复制成多个相同的应用,一起来工作,从而提高工作能力。即将多个应用程序分散在不同的服务器,每个服务器都独立运行相同的代码。可以分散服务器压力解决高并发的问题,同时也能预防单节点故障,即一台服务器故障不影响其他服务器正常运行,但没有解决单体应用代码臃肿,业务复杂,维护性差等等问题

什么是负载均衡

使用了集群后,解决高并发同时有一个新的问题,就是客户端的请求如何分配到多台服务。因此需要通过负载均衡器,比如Nginx,使用负载均衡算法比如轮询、权重、随机等等将请求路由到不同的服务器

什么是分布式

分布式是将应用按照业务类型拆分成多个子应用,每个子应用部署在不同的服务器上单独运行,子应用之间通过API相互调用。

可以分散服务器压力解决高并发问题,同时可以解决单体应用代码臃肿、业务复杂、维护性差等等问题,但是不能防止单节点故障,比如一个子应用故障,整个应用就能不完整运行

集群和分布式的区别,分别解决什么问题

集群是将一个应用程序复制多份,部署在多台服务器上,每个服务器中的程序都是完整的,可以独立运行

分布式是将一个应用程序拆分成多个子程序,分别部署在多台服务器上,每个服务器中的程序都是不完整的,所有服务器需要相互通信相互协调才能完成最终的业务

集群能解决高并发问题,同时能防止单节点故障,即一台服务器宕机不影响其他服务器的正常运行

分布式也能解决高并发问题,但不能防止单节点故障,即一台服务器宕机了,整体业务就无法完成

集群无法解决项目本身的代码臃肿、业务复杂等等问题,分布式能降低模块之间的耦合

实际应用中,我们可以将分布式和集群相结合,比如分布式某个子程序的负载很高,可以单独对这个子程序做集群

说一下你理解的微服务

微服务也是一个分布式系统,它将单体应用进行细粒度拆分,形成多个微服务,每个服务独立运行,每个服务也都可以有自己的数据库,服务之间使用HTTP通信,互相协调完成整个系统的业务。

它的优点是服务之间解耦合,不同的服务可以有不同的编程语言,技术选型多元化,支持敏捷开发

他的缺点是分布式事务很复杂,部署麻烦,技术成本高,服务间通信对性能也有一定的损耗

什么是CAP理论 , 哪些技术用到AP,哪些用到CP

CAP理论指的是,在一个分布式系统中,一致性,可用性,分区容错性,三个要素最多只能同时实现两点。

分区容错性是分布式系统的内在要求,因此我们通常会在一致性和可用性之间做取舍。

满足CP,也就是满足一致性和容错性,舍弃可用性,如果系统允许有段时间失效就可以考虑。常见的如Redis,Nacos,ZooKeeper

满足AP,也就是满足可用性和容错性,舍弃一致性,如果系统允许出现短暂时间的不一致可以考虑。常见的如MySQL,Eureka

什么是强一致性和最终一致性

强一致性是只数据在多个副本中总数实时同步的,如果能容忍数据在多个副本中在一定的延迟时间内同步,则是弱一致性

最终一致性则不要求数据什么时候同步,但是最终会同步即可。通常情况下我们在分布式领域选择会牺牲了强一致性,会采用最终一致性

什么是Base理论

Base指的是基本可用,软状态,最终一致性。它是对CAP中的AP的扩展,意思是说当出现故障部分服务不可用时,要保证核心功能可用,允许在一段时间内数据不一致,但最终要保证一致性。满足Base理论的事务也叫柔性事务

SpringCloud

讲一下你们公司微服务解决方案

我司正在使用的是第一代微服务方案,Springcloud Netflix全家桶。

它是使用Eureka做服务注册与发现,也就是解决服务之间通信问题,

使用Ribbon/OpenFeign做客户端的负载均衡,也就是解决将请求路由到微服务集群的问题,

使用Hystrix断路器的熔断、降级来解决单节点故障,

使用Zuul做服务网关,将它作为整个微服务的大门,来实现登录、权限检查等业务,

使用Config分布式配置中心,来统一管理配置所有微服务的配置文件,

使用Bus消息总线给各个微服务广播消息,可以实现各个微服务配置的自动刷新,

使用Sleuth链路追踪,来实时监控各个微服务建的调用关系,快速定位故障节点

说一说Spring Cloud有哪些常用组件

Eureka:做服务注册与发现,用来解决服务之间通信问题,

Ribbon/OpenFeign:用做客户端的负载均衡,也就是解决将请求路由到微服务集群的问题,

Hystrix:断路器,它的熔断、降级策略用来解决单节点故障,

Zuul:做服务网关,它是整个微服务的大门,可以用来实现登录、权限检查等业务,

Config:分布式配置中心,用来统一管理配置所有微服务的配置文件,

Bus:消息总线,用来给各个微服务广播消息,可以实现各个微服务配置的自动刷新,

Sleuth:链路追踪,用来实时监控各个微服务建的调用关系,快速定位故障节点

Spring Cloud的优缺点?

微服务相对单体应用来说

优点

  • 服务之间无耦合,代码简单方便开发维护,服务之间升级维护互不影响
  • 轻量级HTTP通信机制,不同的服务可以采用不同的编程语言
  • 有极强的扩展能力,业务量大的服务可以再次拆分服务,或者也可以集群部署
  • 支持时下流行的敏捷开发并做了优化

缺点

  • 分布式事务繁琐
  • 部署麻烦,开发人员的学习成本高
  • 技术成本高,开发人员需要花更多的时间学习相关技术
  • 微服务间的通信存在对性能的损耗问题

什么是服务注册

Eureka是一个服务组测与发现的组件,翻译成人话就是管理所有微服务的通讯录的组件。它包含注册中心,客户端两部分组成。客户端在启动的时候会向注册中心发送一条自我介绍信息,比如端口,ip等等,在注册中心就会保存一张所有微服务的通讯录。这就叫服务注册

什么是服务发现

微服务会定期的从客户端拉取一份微服务通讯录,到本地缓存起来,默认是30s一次。当一个微服务向另一个微服务发起调用,直接根据本地的通讯录找到对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值