上一页 1 2 3 4 5 6 7 8 ··· 27 下一页
  2020年6月30日
摘要: 按照我看源码的进度,条件 condition 是 aqs 的最后一块拼图。 我总结的 aqs 三要素:stateownerThread等待队列 这里没有考虑到 condition,condition 的用法如下 lock.lock(); condition.await(t); lock.unlock 阅读全文
posted @ 2020-06-30 18:05 偶尔发呆 阅读(175) 评论(0) 推荐(0)
  2020年6月22日
摘要: KafkaController 需要处理各种各样的事件,事件统一投递到队列里面,由一个线程进行消费。 // kafka.controller.ControllerEventManager private val putLock = new ReentrantLock() // 存放事件的队列 pri 阅读全文
posted @ 2020-06-22 12:59 偶尔发呆 阅读(351) 评论(0) 推荐(0)
  2020年6月21日
摘要: 场景: 3 节点集群 (b1, b2, b3),分区 tp1 的 isr[1, 2, 3],leader 是 1,现在希望把 tp1 的 leader 切换为 3,怎么操作? 1. 通过 zk 客户端,修改 zk 上 tp1 的 isr 列表为 [3, 2, 1] 2. 执行命令行 kafka-pr 阅读全文
posted @ 2020-06-21 17:47 偶尔发呆 阅读(895) 评论(0) 推荐(0)
  2020年6月20日
摘要: kafka 非常难,难在 broker 有角色之分,controller 起控制作用,难在副本有角色之分,leader 提供读写服务,所以 broker 会有状态的切换,副本也有状态的切换。 从一个具体的场景切入,4 节点集群(b1, b2, b3, b4),存在 1 个分区 tp0 分布在 (b1 阅读全文
posted @ 2020-06-20 23:06 偶尔发呆 阅读(237) 评论(0) 推荐(0)
摘要: 通常使用 ReentrantLock.tryLock 的时候,都会带上一个时间戳,如果到了时间仍然没获取锁返回 false。 不带时间戳,当前线程只会尝试获取一次锁,然后返回结果;带上时间戳,则当前线程在等待时间内会多次尝试获取锁。 这里面细节还挺多,在等待时间内,线程是否会挂起? 如果挂起,是怎么 阅读全文
posted @ 2020-06-20 12:28 偶尔发呆 阅读(1084) 评论(0) 推荐(0)
  2020年6月16日
摘要: 每一个副本 leader 管理自己的 isr 列表,进行扩缩,并写入 zk 把某些 replica 加入到 isr 中:如果 follower 的 offset 大于等于 leader 的 HW,则把该 replica 加入到 isr 中 // kafka.cluster.Partition#may 阅读全文
posted @ 2020-06-16 22:29 偶尔发呆 阅读(398) 评论(0) 推荐(0)
摘要: producer 发送数据到 broker,如果 producer 端设置 acks = -1,同时 broker 侧配置 min.insync.replicas = 2,这时 broker 会创建 DelayedProduce,leader broker 会等待消息复制到其他副本中,或者超时后返回 阅读全文
posted @ 2020-06-16 15:12 偶尔发呆 阅读(607) 评论(0) 推荐(0)
  2020年6月7日
摘要: 阅读全文
posted @ 2020-06-07 11:40 偶尔发呆 阅读(231) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-06-07 10:08 偶尔发呆 阅读(169) 评论(0) 推荐(0)
  2020年5月17日
摘要: rocketMQ 为了保证 consumer 顺序消费,做了很多工作。 MQClientManager 在 jvm 进程中是单例,其内部维护一个 map,键是 clientId,值是 MQClientInstance,业务 producer 和 consumer 使用的是同一个 MQClientIn 阅读全文
posted @ 2020-05-17 14:31 偶尔发呆 阅读(4780) 评论(1) 推荐(1)
上一页 1 2 3 4 5 6 7 8 ··· 27 下一页