摘要: Redisson是一个在Redis的基础上实现的Java驻内存数据网格。它几乎提供了Redis所有工具,不仅封装Redis底层数据结构,而且还提供了很多Java类型映射。Redisson支持redis单实例、redis哨兵、redis cluster、redis master-slave等各种部署架构。Redisson除了普通分布式锁还支持 联锁(MultiLock),读写锁(ReadWriteLock),公平锁(Fair Lock),红锁(RedLock),信号量(Semaphore),可过期性信号量(PermitExpirableSemaphore)和闭锁(CountDownLatch)等。Redisson 虽然功能强大但是它依然不能解决分布式锁有可能锁不住的情况,这不是Redisson或者Redis的问题(目前遇到这种问题只能人工干预)。本篇主要是平时工作中使用对Redisson分布式锁的封装 阅读全文
posted @ 2020-04-09 23:12 源码猎人 阅读(1581) 评论(0) 推荐(0) 编辑
摘要: ArrayBlockingQueue是一个由数组结构组成的有界队列。此队列按照先进先出的顺序进行排序。支持公平锁和非公平锁,默认非公平锁。 阅读全文
posted @ 2020-04-09 17:10 源码猎人 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 整体思想基于经典MQ事务处理的二次封装,其中发送、接收消息表会侵入业务,这里使用消息中间件是 RabbitMQ。你也可以替换成RocketMQ。每个服务固定一个队列专门用来接收消息驱动发过来的消息,如果你的服务只发送不接收消息,那么只需要建立发送表就可以,如果即发送又接收那么两个表都要建,只接收消息可以只建立接收表。消费端,每种业务处理都是一个处理器,必须实现处理器ReceiveHandle接口,业务处理器自动会成为伪观察者监听消息。 阅读全文
posted @ 2020-04-09 15:39 源码猎人 阅读(304) 评论(0) 推荐(0) 编辑
摘要: Queue、Deque 前面已经分析过,它们不是线程安全的,如果非要在多线程中使用Queue或Deque,那么只能把整个队列对象锁住,操作完成在释放锁,这样非常消耗性能,就算多个线程操作不同的元素也要锁整个队列想想都恐怖,有没有更好的办法?JDK中提供了阻塞队列BlockingQueue、BlockingDeque专门用来解决多线程使用队列问题。 阅读全文
posted @ 2020-04-09 12:56 源码猎人 阅读(633) 评论(0) 推荐(0) 编辑