摘要:
producer 发送数据到 broker,如果 producer 端设置 acks = -1,同时 broker 侧配置 min.insync.replicas = 2,这时 broker 会创建 DelayedProduce,leader broker 会等待消息复制到其他副本中,或者超时后返回 阅读全文
摘要:
rocketMQ 为了保证 consumer 顺序消费,做了很多工作。 MQClientManager 在 jvm 进程中是单例,其内部维护一个 map,键是 clientId,值是 MQClientInstance,业务 producer 和 consumer 使用的是同一个 MQClientIn 阅读全文
摘要:
执行 windows 脚本 kafka-topics.bat --create --zookeeper localhost:2181/kafka-zhang --replication-factor 1 --partitions 1 --topic zhang 命令行程序,获取 broker 元数据 阅读全文
摘要:
producer acks 0, 1, -1 0 客户端不需要响应,如果 broker 写入异常,直接关闭连接1 分区 leader 写入 FileChannel 即返回-1 和 min.insync.replicas 参数联动 broker min.insync.replicas = 1 // 这 阅读全文
摘要:
batch 发送,batch 存储(可压缩, FileChannel 顺序写盘),batch 拉取(sendFile) 查看 log: kafka-run-class.bat kafka.tools.DumpLogSegments --files D:/tmp/kafka-11-logs/zhang 阅读全文
摘要:
boss group 和 worker group boss group 中,一个线程,一个 selector,监听一个端口 worker group 中,一个线程,一个 selector,监听多个 channel 的读事件 boss 线程监听端口,建立连接,从 worker group 选择一个 阅读全文
摘要:
pulsar 实现了一个 RateLimiter 来限制 dispatch 的速率。 大体思路是:初始有 n 个令牌,当令牌被申请完了后,其他人就无法获得令牌了,每隔一段时间 t 会清零已分配的令牌数。所以,记住这 2 个参数即可。 通过一个测试用例,观察 RateLimiter 的用法。 // o 阅读全文
摘要:
consumer 拉取消息,对应的 queue 如果没有数据,broker 不会立即返回,而是以一种长轮询的方式处理,把 PullReuqest 保存起来,等待 queue 有了消息后,或者长轮询阻塞时间到了,再重新处理该 queue 上的所有 PullRequest。 1. queue 此时没有数 阅读全文