上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页
摘要: 前言 引入快照机制主要是为了解决两个问题: 1. JRaft新节点加入后,如何快速追上最新的数据 2. Raft 节点出现故障重新启动后如何高效恢复到最新的数据 Snapshot 源码分析 生成 Raft 节点的快照文件 如果用户需开启 SOFAJRaft 的 Snapshot 机制,则需要在其客户 阅读全文
posted @ 2019-12-29 16:23 luozhiyun 阅读(1130) 评论(0) 推荐(1) 编辑
摘要: Kafka中的事务是怎么实现的? Kafka中的事务可以使应用程序将消费消息、生产消息、提交消费位移当作原子操作来处理,同时成功或失败,即使该生产或消费会跨多个分区。 生产者必须提供唯一的transactionalId,启动后请求事务协调器获取一个PID,transactionalId与PID一一对 阅读全文
posted @ 2019-12-22 13:02 luozhiyun 阅读(4738) 评论(0) 推荐(7) 编辑
摘要: 前言 我在 "2. SOFAJRaft源码分析—JRaft的定时任务调度器是怎么做的?" 这篇文章里已经讲解过时间轮算法在JRaft中是怎么应用的,但是我感觉我并没有讲解清楚这个东西,导致看了这篇文章依然和没看是一样的,所以我打算重新说透时间轮算法。 时间轮的应用并非 JRaft 独有,其应用场景还 阅读全文
posted @ 2019-12-20 22:24 luozhiyun 阅读(30242) 评论(0) 推荐(13) 编辑
摘要: 前言 在一次聚会中,我和一个腾讯大佬聊起了池化技术,提及到java的线程池实现问题,我说这个我懂啊,然后巴拉巴拉说了一大堆,然后腾讯大佬问我说,那你知道线程池有什么缺陷吗?我顿时哑口无言,甘拜下风,所以这次我再回来思考一下线程池的实现原理 源码分析 ThreadPoolExecutor构造器 1. 阅读全文
posted @ 2019-12-13 22:06 luozhiyun 阅读(1673) 评论(0) 推荐(2) 编辑
摘要: 前言 前几天和腾讯的大佬一起吃饭聊天,说起我对SOFAJRaft的理解,我自然以为我是很懂了的,但是大佬问起了我那SOFAJRaft集群之间的日志是怎么复制的? 我当时哑口无言,说不出是怎么实现的,所以这次来分析一下SOFAJRaft中日志复制是怎么做的。 Leader发送探针获取Follower的 阅读全文
posted @ 2019-12-08 15:51 luozhiyun 阅读(1707) 评论(0) 推荐(1) 编辑
摘要: 前言 今天看Jraft的时候发现了很多地方都用到了读写锁,所以心血来潮想要分析以下读写锁是怎么实现的。 先上一个doc里面的例子: 我们一般实例化一个ReentrantReadWriteLock,一般是调用空的构造器创建,所以默认使用的是非公平锁 ReentrantReadWriteLock内部类S 阅读全文
posted @ 2019-12-02 23:27 luozhiyun 阅读(659) 评论(2) 推荐(0) 编辑
摘要: 前言 我在看SOFAJRaft的源码的时候看到了使用了对象池的技术,看了一下感觉要吃透的话还是要新开一篇文章来讲,内容也比较充实,大家也可以学到之后运用到实际的项目中去。 这里我使用RecyclableByteBufferList来作为讲解的例子: RecyclableByteBufferList 阅读全文
posted @ 2019-11-24 22:29 luozhiyun 阅读(1210) 评论(0) 推荐(0) 编辑
摘要: "深入理解Kafka必知必会(1)" Kafka目前有哪些内部topic,它们都有什么特征?各自的作用又是什么? __consumer_offsets:作用是保存 Kafka 消费者的位移信息 __transaction_state:用来存储事务日志消息 优先副本是什么?它有什么特殊的作用? 所谓的 阅读全文
posted @ 2019-11-22 00:02 luozhiyun 阅读(3656) 评论(0) 推荐(0) 编辑
摘要: 开篇 其实这篇文章我本来想在讲完选举的时候就开始讲线性一致性读的,但是感觉直接讲没头没尾的看起来比比较困难,所以就有了RheaKV的系列,这是RheaKV,终于可以讲一下SOFAJRaft的线性一致性读是怎么做到了的。所谓线性一致性,一个简单的例子是在 T1 的时间写入一个值,那么在 T1 之后读一 阅读全文
posted @ 2019-11-17 20:46 luozhiyun 阅读(976) 评论(0) 推荐(0) 编辑
摘要: 概述 上一篇讲了RheaKV是如何进行初始化的,因为RheaKV主要是用来做KV存储的,RheaKV读写的是相当的复杂,一起写会篇幅太长,所以这一篇主要来讲一下RheaKV中如何存放数据。 我们这里使用一个客户端的例子来开始本次的讲解: 我们从这个main方法中启动我们的实例,调用rheaKVSto 阅读全文
posted @ 2019-11-10 16:16 luozhiyun 阅读(1031) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页