专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 面试官经常被问到的分布式缓存面试题

面试官经常被问到的分布式缓存面试题

更新时间:2022-12-13 16:03:58 来源:赢咖4 浏览992次

Redis 相比memcached 有哪些优势?

(1)memcached所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型

(2)redis 的速度比 memcached 快很多

(3)redis 可以持久化其数据

Redis 支持哪几种数据类型?

String ListSetSorted Set hashes

Redis 集群方案应该怎么做?都有哪些方案?

1.twemproxy,大概概念是,它类似于一个代理方式,使用方法和普通 redis 无任何区别,设置好它下属的多个 redis 实例后,使用时在本需要连接 redis 的地方改为连接 twemproxy,它会以一个代理的身份接收请求并使用一致性 hash 算法,将请求转接到具体redis,将结果再返回 twemproxy。使用方式简便(相对 redis只需修改连接端口),对旧项目扩展的首选。 问题: twemproxy 自身单端口实例的压力,使用一致性 hash 后,对 redis 节点数量改变时候的计算值的改变,数据无法自动移动到新的节点。

分布式有哪些理论?

CAP、BASE。分布式 CAP 理论,任何一个分布式系统都无法同时满足 Consistency(一致性)、Availability(可用性)、Partitiontolerance(分区容错性)这三个基本需求。最多只能满足其中两项。而 Partition tolerance(分区容错性)是必须的,因此一般是 CP,或者AP。

你怎么理解分布式一致性?

数据一致性通常指关联数据之间的逻辑关系是否正确和完整。在分布式系统中,数据一致性往往指的是由于数据的复制,不同数据节点中的数据内容是否完整并且相同。

一致性还分为强一致性,弱一致性,还有最终一致性。强一致性就是马上就保持一致。

最终一致性是指经过一段时间后,可以保持一致。

你怎么理解分布式事务? 分布式事务的协议有哪些?

分布式事务是指会涉及到操作多个数据库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务类型:二阶段提交 2PC,三阶段提交3PC。

2PC:第一阶段: 准备阶段(投票阶段)和第二阶段: 提交阶段(执行阶段)。

3PC : 三个阶段: CanCommit 、PreCommit 、DoCommit。

问:分布式事务的解决方案有哪些?

分布式事务解决方案: 补偿机制 TCC、XA 、消息队列 MQ。

Dubbo的底层实现原理和机制

  • 高性能和透明化的RPC远程服务调用方案
  • SOA服务治理方案
  • Dubbo缺省协议采用单一长连接和NIO异步通讯,
  • 适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况

描述一个服务从发布到被消费的详细过程

首先先获取zk的配置信息,然后获取需要暴露的ur,然后调用registry.register方法将url注册到zookeeper上去。

分布式系统怎么做服务治理

针对互联网业务的特点,eg 突发的流量高峰、网络延时、机房故障等,重点针对大规模跨机房的海量服务进行运行态治理,保障线上服务的高SLA,满足用户的体验,常用的策略包括限流降级、服务嵌入迁出、服务动态路由和灰度发布等

接口的幂等性的概念

暴等的意思是同一个操作,重复执行多次,跟执行一次结果一致。消息暴等,即消息发送操作对于消息消费来说是暴等。也就是相同的消息发送多次,跟发送一次是一样的,这个消息只会被消费一次。

消息中间件如何解决消息丢失问题

为了解决消息丢失问题,我们引入了一些重发机制,但也带来的另外一个问题:消息重复,我们来看下都有哪些情况会导致消息重复:

消息发送超时,处于不确定状态,导致重试发送消息,有可能之前的消息已经发送成功,会出现消息重复的情况。解决的思路是,每个消息生成一个消息id,如果发送的消息Broker已经存在了,则丢弃。这种解决办法需要维护一个已经接收的消息的message id list。

消息在Broker中只有一份,但是consumer重启前,未及时更新offset,导致consumer重启之后重复消费消息。

上游业务给每个message 分配一个message D,下游业务在接收到message之后,执行业务并且保存message lD,而且要讲两部分放到同一个事务中,保证业务执行成功,message lD肯定保存,业务执行失败,message lD肯定不会保存下来,利用db中存储的message id来做暴等。我们可以重新封装producer client和consumer client,将这部分message D分配和判重的逻辑封装到client lib里面。

以上就是“面试官经常被问到的分布式缓存面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注赢咖4Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>