常见面试题
文章平均质量分 73
Pray_Lucky
这个作者很懒,什么都没留下…
展开
-
Redis的分布式锁详解
(3)为了有效解决既保证锁完全有效性 和 性能高效问题:antirez又提出了“延迟重启”的概念,redis同步到磁盘方式保持默认的每秒1次,在redis崩溃单机后(无论是一个还是所有),先不立即重启它,而是等待TTL时间后再重启,这样的话,这个节点在重启前所参与的锁都会过期,它在重启后就不会对现有的锁造成影响,缺点是在TTL时间内服务相当于暂停状态;redisson在获取锁之后,会维护一个看门狗线程,在每一个锁设置的过期时间的1/3处,如果线程还没执行完任务,则不断延长锁的有效期。原创 2024-09-02 14:49:36 · 1427 阅读 · 0 评论 -
MYSQL中并发事务带来的问题及解决方法
使用合适的事务隔离级别: 将数据库的事务隔离级别设置为合适的级别,如可重复读(Repeatable Read)或串行化(Serializable),这样可以确保一个事务在读取数据时,不会受到其他事务的更新或删除操作的影响,从而避免不可重复读问题的发生。死锁可能会造成系统的停滞,影响系统的性能和可用性。使用合适的事务隔离级别: 将数据库的事务隔离级别设置为合适的级别,如串行化(Serializable),这样可以确保一个事务在读取数据时,不会受到其他事务的插入、更新或删除操作的影响,从而避免幻读问题的发生。原创 2024-09-02 13:13:29 · 803 阅读 · 0 评论 -
Spring Boot之事务(事务传播机制、嵌套事务、事务隔离机制详解)
student表无数据插入。因为内外层方法在同一个事务中,内层只要抛出了异常,这个事务就会被设置成rollback-only,即使外层try-catch内层的异常,该事务也会回滚。因为内外层方法在同一个事务中,内层只要抛出了异常,这个事务就会被设置成rollback-only,即使外层try-catch内层的异常,该事务也会回滚。1.脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。网上有些文章的例子给错了!原创 2024-09-02 10:08:53 · 845 阅读 · 0 评论 -
RabbitMQ如何避免消息重复投递或重复消费?
这些插件可以在消息发送时自动进行去重操作,根据消息的内容生成唯一的消息ID,并在发送之前检查是否已存在相同ID的消息,从而避免重复发送。使用数据库或缓存来记录已经发送的消息的标识,每次发送消息之前先查询是否已存在相同标识的消息,如果存在则不发送。消费者确认:消费者在处理完消息后,可以发送确认消息给RabbitMQ,告知消息已经被正确处理。RabbitMQ收到确认消息后,会将该消息从队列中删除,避免消息的重复消费。消息全局ID或唯一标识:每次消费消息之前,根据消息ID去判断该消息是否已消费过。原创 2024-08-23 11:01:07 · 728 阅读 · 0 评论 -
MQ如何保证消息不丢失?
如果rabbitmq没能处理这个消息,会回调你一个nack接口,告诉你这个消息失败了,你可以进行重试。所以comfirm机制其实是一个异步监听的机制,是为了保证系统的高吞吐量,这样就导致了还是不能够100%保障消息不丢失,因为即使加上了confirm机制,消息在MQ内存中还没有刷盘到磁盘就宕机了,还是没法处理。而且持久化可以跟生产的confirm机制配合起来,只有消息持久化到了磁盘之后,才会通知生产者ack,这样就算是在持久化之前rabbitmq挂了,数据丢了,生产者收不到ack回调也会进行消息重发。原创 2024-08-23 10:55:23 · 1091 阅读 · 0 评论 -
MQ怎么处理消息积压
综上所述,解决消息队列中大量消息堆积的问题需要综合考虑消费者数量、消费者逻辑优化、消息队列容量、消息过期设置、监控报警机制等多个方面,根据具体情况选择合适的解决方案来解决问题。增加消息队列的容量:增加消息队列的容量可以存储更多的消息,缓解消息堆积的压力。设置消息过期时间:对于一些长时间未被消费的消息,可以设置消息的过期时间,使其在一定时间后自动过期并被丢弃,从而避免消息长时间堆积。增加消费者数量:增加消费者数量可以提高消息消费的速度,缩短消息队列中消息的处理时间,从而减少消息堆积的程度。原创 2024-08-23 10:53:06 · 460 阅读 · 0 评论