大厂面试系列(九):MQ和分布式事务

微信扫一扫,分享到朋友圈

大厂面试系列(九):MQ和分布式事务

MQ和分布式事务

MQ

  • 项目中RabbitMQ实现了at least once,包括mq反馈provider,消息持久化,consumer主动反馈mq.线程池消费防止消息积压等
  • mq 通知时,消费者没消费到怎么办
  • 简单聊聊消息中间件?
  • 你了解那些具体的消息中间件产品?
  • mq的消费端是怎么处理的? 整理一下你的消费端的整个处理逻辑流程,然后说说你的ack是在哪里返回的。按照你这样画的话,如果数据库突然宕机,你的消息该怎么确认已经接收? 那如果发送端的服务是多台部署呢?你保存消息的时候数据库就一直报唯一性的错误?
  • rocketmq用在什么场景。 如果消费者组A下面有两个消费者组A1,A2,问消费者A1和A2能否消费不同的topic ?rocketmq如何保证的事务。
  • kafka,activemq,rabbitmq,rocketmq都有什么优点,缺点啊?
  • 如果让你写一个消息队列,该如何进行架构设计啊?说-下你的思路
  • 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗 ?MQ系统的数据如何保证不丢失
  • mq 通知时,消费者没消费到怎么办
  • mq的p2p模式
  • mq消息的幂等性如何保证? mq如何保证顺序消费?
  • MQ怎样保证消息的可靠性以及当时如何做消息幂等处理的
  • 如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息? 如何避免消息重复投递或重复消费? 消息基于什么传输? 消息如何分发? 消息怎么路由? 如何确保消息不丢失? 使用RabbitMQ有什么好处? rabbitmq的集群。 mq的缺点

分布式事务

首先来一个具体的解决方案的示例

*  1、两阶段提交(2PC) 第一阶段:事务协调器要求每个涉及到事务的数据库预提交(precommit)此操作,并反映是否可以提交. 第二阶段:事务协调器要求每个数据库提交数据。 优点: 尽量保证了数据的强一致,适合对数据强一致要求很高的关键领域。(其实也不能100%保证强一致) 缺点: 实现复杂,牺牲了可用性,对性能影响较大,不适合高并发高性能场景,如果分布式系统跨接口调用,目前 .NET 界还没有实现方案。
* 2、补偿事务(TCC) 针对每个操作,都要注册一个与其对应的确认和补偿(撤销)。Try、Confirm、Cancel 优点: 跟2PC比起来,实现以及流程相对简单了一些,但数据的一致性比2PC也要差一些 缺点: 缺点还是比较明显的,在2,3步中都有可能失败。TCC属于应用层的一种补偿方式,所以需要程序员在实现的时候多写很多补偿的代码,在一些场景中,一些业务流程可能用TCC不太好定义及处理。
* 3、本地消息表(异步确保) 核心思想是将分布式事务拆分成本地事务进行处理,消息生产方,需要额外建一个消息表,并记录消息发送状态。消息表和业务数据要在一个事务里提交,也就是说他们要在一个数据库里面。然后消息会经过MQ发送到消息的消费方。如果消息发送失败,会进行重试发送。 优点: 一种非常经典的实现,避免了分布式事务,实现了最终一致性。在 .NET中 有现成的解决方案。 缺点: 消息表会耦合到业务系统中,如果没有封装好的解决方案,会有很多杂活需要处理。
* 4、MQ事务消息 RocketMQ支持,RabbitMQ 和 Kafka 都不支持,一次发送消息和一次确认消息,生产方需要实现一个check接口(确认消息或者回滚) 优点: 实现了最终一致性,不需要依赖本地数据库事务。 缺点: 实现难度大,主流MQ不支持,没有.NET客户端,RocketMQ事务消息部分代码也未开源。
* 5、Sagas事务模型 长时间运行的事务,该模型其核心思想就是拆分分布式系统中的长事务为多个短事务,或者叫多个本地事务,然后由 Sagas 工作流引擎负责协调,如果整个流程正常结束,那么就算是业务成功完成,如果在这过程中实现失败,那么Sagas工作流引擎就会以相反的顺序调用补偿操作,重新进行业务回滚。
  • 分布式事务了解吗?有哪些处理方法?
  • 项目中有分布式事务处理吗?有哪些常见的分布式事务处理方式?说一下你们在项目中怎么用的。
  • 分布式情况下如何保证事务。 如何设计实现一个分布式事务
  • 分布式事务的各种方案及你的最佳方案
  • 分布式事务是什么
  • 什么是分布式事务?分布式事务如何保证数据一致性?
  • 分布式事务知道吗?你们怎么解决的?TCC?那若出现网络原因,网络连不通怎么办啊
  • 对分布式事务的理解
  • 分布式事务的原理,如何使用分布式事务
  • 多个服务之间调用的数据一致性问题,A服务中调用B服务 、C服务,B成功 C失败怎么解决? 其实归根到底就是分布式事务的数据一致性解决方案,失败了数据怎么回滚
  • 分布式事务的实现方式,分布式锁,分布式一致性,redis分布式锁;
  • 分布式事务了解吗?你们项目中都用到了哪些分布式事务?都有哪些优缺点?
  • 简单实现分布式事务

欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】

错过预售不要急 索尼PS5将在GameStop和沃尔玛线上开售

上一篇

PEP 333:Python Web服务器Gateway接口 v1.0

下一篇

你也可能喜欢

大厂面试系列(九):MQ和分布式事务

长按储存图像,分享给朋友