03 2021 档案

摘要:生产端如何保证消息不丢失的问题 在消息的生产端,如果投递的消息出去在网络传输过程中丢失,或者在RabbitMQ内存中,还没有写入磁盘的时候,发生宕机,都会导致生产端,投递到MQ的数据丢失。 保证消息不丢失的confirm机制 在生产端,首先要开启一个confirm机制, 接着投递到队列中的消息,如果 阅读全文
posted @ 2021-03-17 07:29 GDOUJKZZ 阅读(217) 评论(0) 推荐(0)
摘要:最近把了老系统改造成基于Spring Cloud Alibaba为基础的微服务框架,接着便进行线上压力测试。 结果如下:在请求压力的高峰期间并且MQ中间件故障的情况,触发了降级机制,结果降级机制触发了之后运行了一小会,突然系统就完全卡死,无法响应任何请求。 这个系统的整体架构如下:简单来说就是又一个 阅读全文
posted @ 2021-03-16 06:30 GDOUJKZZ 阅读(87) 评论(0) 推荐(0)
摘要:读写锁的简单介绍 所谓的读写锁,就是将一个锁拆分为读锁和写锁两个锁,然后你加锁的时候,可以加读锁,也可以加写锁。 ReentrantLock lock=new ReentrantLock(); lock.wirteLock.lock(); lock.wirteLock.unlock(); lock. 阅读全文
posted @ 2021-03-11 07:28 GDOUJKZZ 阅读(398) 评论(0) 推荐(0)
摘要:非公平锁和公平锁的一些理解 一、什么是非公平锁 场景:线程1,加了锁,然后线程2尝试枷锁,失败后进入等待队列,处于阻塞的状态,后来线程1释放了锁,准备来唤醒线程2重新尝试加锁。 注意一点:此时线程2可能还停留在等待队列里,还没开始重新加锁呢! 然而,不幸的事情发生了,这时半路杀出一个程咬金,来了一个 阅读全文
posted @ 2021-03-08 07:03 GDOUJKZZ 阅读(365) 评论(0) 推荐(0)
摘要:场景引入 面试官上来就一句,谈谈你对AQS的理解,大家心里可能收到了1W点伤害,AQS是什么,可能连全称都不知道,所以下面让我们聊聊AQS。 以ReentrantLock来介绍一下AQS 在java中,用java并发包下的ReentrantLock来加锁和释放锁,是个什么样的感觉呢? Reentra 阅读全文
posted @ 2021-03-03 07:19 GDOUJKZZ 阅读(336) 评论(0) 推荐(0)
摘要:场景引入 经常都会有下面这段代码,多个线程同时修改一个变量,造成线程不安全,代码如下: public class ThreadCASDemo implements Runnable { static int counter=0; static final Object objLock=new Obj 阅读全文
posted @ 2021-03-02 07:40 GDOUJKZZ 阅读(218) 评论(0) 推荐(0)