摘要:
概述 限流,其基础含义为对流量进行限制,其既包括在速率上的限制,又包括在资源上的限制,这里主要讨论的是对速率进行限制。 本文分为三部分,第一部分中我们将讨论在做限流前必须要弄清的问题: 为什么要去做限流 限流的具体含义和指标 第二部分将具体探讨互联网上流行的限流算法;并在第三部分中学习它们在常用的限 阅读全文
摘要:
概述 TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供安全的通信,比如众所周知的 HTTP + TLS = HTTPS。 SSL 2.0 是该协议的第一个 阅读全文
摘要:
概述 对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案。 在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案: 第一种通过主 Broker 将消息发送到从 Broker 实现高可用,在主 Broker IO 压力大或宕机的时候,从 B 阅读全文
摘要:
概述 ChannelOption 是 Netty 中在构建引导类时可以填写的构建 Channel 的选项 其可以分为两部分,一部分为控制 Netty 自身底层运行的选项;另一部分则是操作系统创建 socket 时的选项 (如果熟悉 UNIX 网络编程的话应该知道这玩意) 本文上半部主要解释作用于 N 阅读全文
摘要:
概述 在上文中,我们讨论了消费者对于消息拉取的实现,对于 RocketMQ 这个黑盒的心脏部分,我们顺着消息的发送流程已经将其剖析了大半部分。本章我们不妨乘胜追击,接着讨论各种不同的消息的原理与实现。 事务消息 概念 RocketMQ 中的事务消息功能,实际上是 分布式事务中的本地事务表 的实现,只 阅读全文
摘要:
概述 当消息被存储后,消费者就会将其消费。 这句话简要的概述了一条消息的最总去向,也引出了本文将讨论的问题: 消息什么时候才对被消费者可见? 是在 page cache 中吗?还是在落盘后?还是像 Kafka 一样维护了一个 ISR 队列,等到副本都将消息也落盘后才可见? 消息如何到达消费者手里? 阅读全文
摘要:
写在前面 该文并不是跳表的入门文章,而是致力于以简洁精炼的语言来描述 SkipList,来弥补上次面试时被问到跳表结果脑中只有图片没有文字的尴尬场景。。。 SkipList(跳表) SkipList 是一种查找结构 结构 它的结构是一个有序链表,但是该链表的节点的具有多个指针,且不止指向下一个节点。 阅读全文
摘要:
概述 上一章中,已经介绍了 Broker 的文件系统的各个层次与部分细节,本章将继续了解在逻辑存储层的三个文件 CommitLog、IndexFile、ConsumerQueue 的一些细节。文章最后,还会对比下 RocketMQ 和 Kafka 的持久化结构与设计的合理性。 CommitLog 现 阅读全文
摘要:
概述 在 Broker 的通用请求处理器将一个消息进行分发后,就来到了 Broker 的专门处理消息存储的业务处理器部分。本篇文章,我们将要探讨关于 RocketMQ 高效的原因之一:文件结构的良好设计与对 Page Cache 的极致"压榨"。 文件系统的结构设计 在 RocketMQ 的 Bro 阅读全文
摘要:
概述 在上一节 RocketMQ源码详解 | Producer篇 · 其二:消息组成、发送链路 中,我们终于将消息发送出了 Producer,在短暂的 tcp 握手后,很快它就会进入目的 Broker。这次我们来自底向上的看下 Broker 端是如何接收然后分发处理消息,同时了解 RocketMQ 阅读全文