10 2019 档案
摘要:问题 ; 部署时如何知道自己是 broker 还是 NameServer topic 订阅信息放在哪里 broker 的作用到底是什么 纪录是如何持久化的 群发的时候,是如何储存消息的 send 方法到底有没有使用多线程发送处理,简单叙述一个 send 的过程 transientStorePool
阅读全文
摘要:概述 redis是基于key-value 我们所说的数据类型实际是 key-value 中的 value 。文章主要介绍的是redis 几个重要的数据类型的使用。 简单使用 //keys pattern 获取某种匹配的key 例如 : keys * set foo 1 //获取某个key 对应的 v
阅读全文
摘要:概述 接着我们上一篇继续分析消息发送,上节讲到消息发送前有可能遇到 broker 失效的情况,RocketMQ 主要是采用两种策略 :重试发送broker 故障延迟机制 后者指的是当发送给某一broker失败后,会将该broker暂时排除在消息队列的选择范围内,到达某个时间点后再继续重试发送,发送的时候消耗的时长越多,那么延迟的时长就越多(就像缓存算法一样,使用得越少,越容易给淘汰)。下面介绍...
阅读全文
摘要:概述RocketMQ 发送普通消息有三种可靠同步发送可靠异步发送单向(oneway)发送 :只管发送,直接返回,不等待消息服务器的结果,也不注册回调函数,简单地说,就是只管发,不管信息是否发送到了消息服务器中。发送消息示例 /* * Instantiate with a producer group name. */ DefaultMQP...
阅读全文
摘要:redis 动态字符串 概述 Sda(Simple Dynamic String) 简单动态字符串是 redis中用来表示字符串的结构,而不是传统 C 字符串。 主要的特点就是Sda要做到高效和 二进制安全的, Sda 在Redis中的主要作用有以下两个 : 实现字符串对象 在 Redis 程序中内
阅读全文
摘要:概述 所有broker在启动的时候都会向NameServer进行注册,对它进行发送心跳包。 源码阅读 路由注册 上面的字段在可以通过下面两张图来理解 registerBrokerAll 方法 brokerOuterAPI 的 registerBrokerAll 方法 其中 RemotingClien
阅读全文
摘要:问题 : compositeByteBuf 是干什么和其他 compositeByteBuf 有何区别 内部实现 概述 compositeByteBuf 就像数据库中的视图,把几个表的字段组合在一起,它的应用场景比如一个自定义协议有消息头和消息体,而两者是分开到两个 ByteBuf 的,那么这时候要
阅读全文
摘要:消息队列概述 队列的本质 一次RPC变成两次 RPC 内容转储 选择合适的时机投递 队列设计重点 RPC 通信协议 存储选型 消费关系处理 实现事务 防丢/防重 批量/异步与性能 强烈推荐这篇文章,从设计的角度来思考消息队列的各种问题,阅读源码只是理解设计的最终实现,只有知道了设计的思路阅读源码才会
阅读全文
摘要:概述文章主要介绍的是PoolArena,PoolChunk,PoolSubpage 三个类的源码PoolArenaPoolArena 是netty 的内存池实现类,通过预先申请一块大的空间,然后对空间进行分配和回收,这样就不用频繁进行系统调用,提高性能。PoolArena 由多个 chunk 组成,chunk 则由多个page 组成.PoolChunkChunk 主要用来组织和管理多个Page的内...
阅读全文
摘要:问题 :netty的 ByteBuff 和传统的ByteBuff的区别是什么?HeapByteBuf 和 DirectByteBuf 的区别 ?HeapByteBuf : 使用堆内存,缺点 ,socket 传输的时候由于需要复制的原因,慢一点DirectByteBuf : 堆外内存,可以使用零拷贝概述netty ByteBuf 存在两个指针,分成三个区域: 已读区(可丢弃),未读区(未读),可写区...
阅读全文
摘要:问题channel 是如何处理发送一半中断后继续重发的channel 具体作用是什么概述这一节我们将介绍 Channel 和内部接口 Unsafe .其中Unsafe 是内部接口,聚合在Channel 中协助网络读写操作相关的操作,设计初衷就是 Channel 的内部辅助类,不应该被用户使用。 继承类分析继承关系链 : AbstractChannel -> AbstractNioChannel -...
阅读全文