基于时间轮算法的定时任务框架

轻量级的基于cron表达式的定时任务调度框架,最开始使用list遍历任务,时间复杂度o(n),后使用小顶堆优化,时间复杂度o(lgn),现在基于时间轮算法时间复杂度o(1)。基本上代码是kafka时间轮的java实现,本身是scalanetty中也有时间轮,但netty使用的是单层时间轮具体实现Ti

Reactor&Proactor&Actor模型

服务端的线程模型无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图:2种fdlistenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。connfd:每个连接都有一个connfd。用来收发数据。3种事件listenfd进行a

如何保证Redis与数据库的数据一致?

如何保证Redis与数据库的数据一致?当我们对数据进行修改的时候,到底是先删缓存,还是先写数据库?1、如果先删缓存,再写数据库:在高并发场景下,当第一个线程删除了缓存,还没有来得及写数据库,第二个线程来读取数据,会发现缓存中的数据为空,那就会去读数据库中的数据(旧值,脏数据),读完之后,把读到的结果

RAFT算法

RAFT神器在学习英语的时候甚至能学会RAFT算法

CAP理论

在看了好多博客以后不但没有解决问题,反倒更迷惑了,只有这一篇的暂时能接受,留下几个疑惑,有缘再见1.AC是否可以描述局部而非整个分布式系统?2.A是否只要有请求有响应,无论是否成功,是否延迟响应3.AC是如何同时满足的呢(文章说AC能同时满足,但A和C不是同一个业务,那还能叫同时满足吗)引言CAP

Paxos算法原理与推导

Paxos算法在分布式领域具有非常重要的地位。但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难。网上有很多讲解Paxos算法的文章,但是质量参差不齐。看了很多关于Paxos的资料后发现,学习Paxos最好的资料是论文《Paxos Made Simple》,其次是中、英文版维基百

Netty入门

Netty工作原理示意图说明Netty 抽象出两组线程池 BossGroup 专门负责接收客户端的连接,WorkerGroup 专门负责网络的读写BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroupNioEventLoopGroup 相当于一个事件循环组,这个

NIO入门

NIO非阻塞网络编程原理分析图对上图的说明:当客户端连接时,会通过 ServerSocketChannel 得到 SocketChannel。Selector 进行监听 select 方法,返回有事件发生的通道的个数。将 socketChannel 注册到 Selector 上,register(S
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×