RocketMQ消息过滤机制源码详解】的更多相关文章

一.简介 HashMap的源码我们之前解读过,数组加链表,链表过长时裂变为红黑树.自动扩容机制没细说,今天详细看一下 往期回顾: Java1.7的HashMap源码分析-面试必备技能 Java1.8的HashMap源码分析-面试必备技能 二.扩容机制 先说结论: hashmap的容量都是2的倍数,比如2,4,8,16,32,64 ... 每次扩容都是扩一倍,2到4 ,4到8,8到16, 16到32 等等 扩容因子:默认是0.75,也可以指定一个小数 扩容时间点:当容器内的元素数量到达:容量*扩容…
概述 当消息被存储后,消费者就会将其消费. 这句话简要的概述了一条消息的最总去向,也引出了本文将讨论的问题: 消息什么时候才对被消费者可见? 是在 page cache 中吗?还是在落盘后?还是像 Kafka 一样维护了一个 ISR 队列,等到副本都将消息也落盘后才可见? 消息如何到达消费者手里? 是由 Broker push 过去吗?还是由消费者自己 pull? 怎样知道消息消费到哪里?进度由谁管理?是可靠的吗? ... 本文接下来将从消费者的客户端开始介绍,逐步回答以上问题 Pull Cli…
概述 在上一节 RocketMQ源码详解 | Producer篇 · 其一:Start,然后 Send 一条消息 中,我们了解了 Producer 在发送消息的流程.这次我们再来具体下看消息的构成与其发送的链路 Message 在 RocketMQ 的使用中,Message 类是在发送消息时必须用到的,其中 body 即是消息的存放位置,还有的就是消息的 标识(flag) 和 属性(properties) public class Message { private String topic;…
概述 在上文中,我们讨论了消费者对于消息拉取的实现,对于 RocketMQ 这个黑盒的心脏部分,我们顺着消息的发送流程已经将其剖析了大半部分.本章我们不妨乘胜追击,接着讨论各种不同的消息的原理与实现. 事务消息 概念 RocketMQ 中的事务消息功能,实际上是 分布式事务中的本地事务表 的实现,只不过,在这里用消息中间件来代替了数据库,同时也帮我们做好了回查的操作. 在这点上,RocketMQ 和 Kafka 是截然不同的,kafka 的事务是用来实现 Exacltly Once 语义,且该语…
概述 在上一节 RocketMQ源码详解 | Producer篇 · 其二:消息组成.发送链路 中,我们终于将消息发送出了 Producer,在短暂的 tcp 握手后,很快它就会进入目的 Broker.这次我们来自底向上的看下 Broker 端是如何接收然后分发处理消息,同时了解 RocketMQ 的 Broker 的线程模型. Netty 组件 如果你还记得上一节的内容的话那应该知道,NettyRomotingAbstract 有两个实现类,分别是 NettyRemotingClient 和…
概述 上一章中,已经介绍了 Broker 的文件系统的各个层次与部分细节,本章将继续了解在逻辑存储层的三个文件 CommitLog.IndexFile.ConsumerQueue 的一些细节.文章最后,还会对比下 RocketMQ 和 Kafka 的持久化结构与设计的合理性. CommitLog 现在,先从 CommitLog 的几个指针开始复习 在上一章 <RocketMQ源码详解 | Broker篇 · 其二:文件系统> 中,我们已经了解了 CommitLog 的缓存和刷盘的策略,现在来简…
概述 对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案. 在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案: 第一种通过主 Broker 将消息发送到从 Broker 实现高可用,在主 Broker IO 压力大或宕机的时候,从 Broker 可以接管读请求,但这种方案不支持在主 Broker 宕机后自动进行故障转移,且从 Broker 不支持写请求,也就是说在主 Broker 宕机后我们只能手动处理. 第二种是在 Rocket…
什么是logback logback 用于日志记录,可以将日志输出到控制台.文件.数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性. logback 被分成三个不同的模块:logback-core,logback-classic,logback-access. logback-core 是其它两个模块的基础. logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J. logback-access 提供…
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 在Spring中,事务有两种实现方式: 编程式事务管理: 编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制. 申明式事务管理: 基于Spring AOP实现.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或…
目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2.2 ActivitiImpl与作用域 2.3 ExecutionEntity 三.代码解析-流程启动 3.1 流程说明 3.2 额外补充 四.代码解析-原子操作 4.1 说明 4.2 AbstractEventAtomicOperation 4.3 AtomicOperationActivityExecut…