DeathWhispers

精尽 Redisson 源码分析 —— 限流器 RateLimiter

1. 概述 在开始本文之前,先推荐看一篇干货 《你应该如何正确健壮后端服务?》 。 限流,无论在系统层面,还是在业务层面,使用都非常广泛。例如说: 【业务】为了避免恶意的灌水机或者用户,限制每分钟至允许回复 10 个帖子。 【系统】为了避免服务系统被大规模调用,超过极限,限制每个调用方只允许每秒调用 100 次。 限流算法,常用的分成四种: 每一种的概念,推荐看看 《计...

ReentrantLock中的公平锁和非公平锁的底层实现

ReentrantLock中的公平锁和非公平锁的底层实现 首先不管是公平锁和非公平锁,它们的底层实现都会使用AQS来进行排队,它们的区别在于:线程在使用lock()方法加锁时,如果是公平锁,会先检查AQS队列中是否存在线程在排队,如果有线程在排队,则当前线程也进行排队,如果是非公平锁,则不会去检查是否有线程在排队,而是直接竞争锁。 不管是公平锁还是非公平锁,一旦没有竞争到锁,都会进行排队...

Redis线程模型

Redis线程模型 Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器(file event handler)。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。 因为文件事件分派器队列的消费是单线程,所以Redis才叫单线程模型文件事件处理器使用I/O多路复用(multiplexing)程序来同时监听多个套接字,并根据套接...