上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 27 下一页
  2019年11月24日
摘要: consumer 消费失败,会把消息重新发往 %RETRY% + consumerGroup,这个 retry 消息会在一定时间后,真实送到 retry topic。 broker 处理发送到 retry topic 的消息: org.apache.rocketmq.broker.processor 阅读全文
posted @ 2019-11-24 15:38 偶尔发呆 阅读(5802) 评论(0) 推荐(0)
  2019年11月16日
摘要: 使用 netty 监听端口 接收请求 分发请求 broker 启动时,把不同类型的请求对应到各自的处理器 不同的线程池处理不同的请求,做到很好的隔离。 阅读全文
posted @ 2019-11-16 19:08 偶尔发呆 阅读(614) 评论(0) 推荐(0)
  2019年11月12日
摘要: zk 节点是一个 QuorumPeer,选举结束后,leader 和 follower 各自执行自己的逻辑: 不管是 leader 还是 follower,都封装了一个 QuorumPeer 对象,QuorumPeer.ServerCnxnFactory 监听端口,处理客户端 io 事件。请求处理的 阅读全文
posted @ 2019-11-12 21:44 偶尔发呆 阅读(757) 评论(0) 推荐(0)
摘要: zk 有 2 种文件,快照和事务日志,快照是某一时刻的全量数据,事务日志中记录了数据的修改事件。 快照的文件名是 snapshot.zxid,zxid 是当前最大的事务 id 事务日志的文件名是 log.zxid,zxid 是当前文件第一条日志的事务 id zk 加载数据:从 snap 文件和 lo 阅读全文
posted @ 2019-11-12 21:40 偶尔发呆 阅读(515) 评论(0) 推荐(0)
  2019年10月24日
摘要: RocketMQ 的主和从一直在使用 nio 进行数据同步: master slave 这里的同步,暂时只涉及到 commitLog。 同步双写的本质,master 先写磁盘,然后等待 slave 同步消息成功。 写磁盘: 同步到 slave: 阅读全文
posted @ 2019-10-24 17:02 偶尔发呆 阅读(1586) 评论(0) 推荐(0)
  2019年10月19日
摘要: rocketMQ 使用 netty 通信,端对端的通信,为了避免粘包、分包,需要指定发送数据的边界。 使用的解码器是 LengthFieldBasedFrameDecoder 从中可以看出数据的格式:4, 4, headerData, bodyData 4 字节存储数据的总长度 4 字节存储头的长度 阅读全文
posted @ 2019-10-19 12:24 偶尔发呆 阅读(1080) 评论(0) 推荐(0)
  2019年10月18日
摘要: CLUSTERING 模式下,消费者会订阅 retry topic 拉取消息 存放拉取的消息 提交 ConsumeRequest 并行消费和顺序消费 按批消费消息,消费完一批消息返回状态。消费成功,则删除这一批消息,并更新 offsetTable。 ConsumeMessageConcurrentl 阅读全文
posted @ 2019-10-18 16:31 偶尔发呆 阅读(427) 评论(0) 推荐(0)
  2019年10月12日
摘要: server 保留 2 份配置文件,一份在 mysql,一份在本地磁盘,同时在内存中缓存配置文件的 md5 值。当客户端获取配置时,server 直接返回本地磁盘文件,使用的是 sendFile api 用户发布配置ConfigController#publishConfig 整个事件流 Async 阅读全文
posted @ 2019-10-12 16:27 偶尔发呆 阅读(2979) 评论(0) 推荐(0)
  2019年10月11日
摘要: 本文分析 DefaultMQPushConsumer,异步发送消息,多线程消费的情形。 DefaultMQPushConsumerImpl MQClientInstance 一个客户端进程只有一个 MQClientInstance 实例 MQClientAPIImpl 和 netty 打交道 Pul 阅读全文
posted @ 2019-10-11 11:07 偶尔发呆 阅读(1280) 评论(0) 推荐(0)
  2019年10月6日
摘要: 1. 序列化一条消息 消息有 key 和 value kafka 提供了基础数据类型的序列化工具,对于业务的自定义类需要自行实现序列化 ProducerRecord 是对象,含 KV 和 headers,此时的 KV 还是对象 在 KafkaProducer#doSend 中会对 KV 进行序列化, 阅读全文
posted @ 2019-10-06 12:18 偶尔发呆 阅读(2718) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 27 下一页