中间件-面试题

这篇博客主要探讨了中间件的相关面试问题,涵盖了Dubbo的服务请求失败处理、负载均衡、服务感知,以及与SpringCloud的区别。此外,还介绍了Zookeeper的分布式锁和选举机制,Nacos的配置更新流程和与Zookeeper的对比,Mybatis的分页和缓存机制,以及ES、Docker和K8S的基本概念。最后提到了消息队列的概念和作用。
摘要由CSDN通过智能技术生成

一、Dubbo

1、Dubbo 的服务请求失败怎么处理

  • dubbo2默认重试次数2,dubbo3默认重试次数-1
  • 可以根据不同场景选择容错策略
    • 失败自动切换:当出现失败时,重试其它服务器
    • 失败自动恢复:后台记录失败请求,定时重发。这种策略通常用于消息通知操作
    • 失败安全策略,如果出现服务通信异常,直接把这个异常吞掉不做任何处理
    • 快速失败策略,服务消费者只发起一次请求,如果请求失败,就直接把错误抛出去。这种比较适合在非幂等性场景中使用

2、Dubbo负载均衡

  • 随机(默认)
  • 一致性hash:每次相同参数的请求都会访问固定服务器
  • 最小活跃数
  • 权重

3、Dubbo 是如何感知服务下线

  • Dubbo 默认采用ZK实现服务的注册与服务发现,即ZK维护Dubbo服务之间的通信地址。在ZK上,会采用树形结构的方式来维护Dubbo 服务提供端的协议地址,Dubbo 服务消费端会从Zookeeper Server 上去查找目标服务的地址列表,从而完成服务的注册和消费的功能。
  • ZK会通过心跳检测机制,来判断Dubbo 服务提供端的运行状态,来决定是否应该把这个服务从地址列表剔除。

4、Dubbo和SpringCloud区别

  • Dubbo 底层使用Netty-NIO 框架,是基于TCP 协议,配合以Hession 序列化完成RPC 通信。
  • SpringCloud 是基于Http 协议+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也会更多。但是REST 相比RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖。

5、RPC和HTTP的区别

  • 功能特性
    • http是一个属于应用层的超文本传输协议,是万维网数据通信的基础,主要服务在网页端和服务端的数据传输上。
    • RPC 是一个远程过程调用协议,目的是实现不同计算机应用之间的数据通信,屏蔽通信底层的复杂性,让开发者就像调用本地服务一样完成远程服务的调用。
  • 实现原理
    • http协议是一个已经实现并且成熟的应用层协议,它定义了通信的报文格式Request Body 和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值