Apache RocketMQ 从入门到实战如何实现刷盘(可以类比一下数据库方面的刷盘、redo、undo 日志)? RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的? 定时消息、消息过滤等实现原理。 如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 发表了 30 余篇文章,从 Nameserver、消息发送高可用设计、消息存储、消息消费、消 定的数据结构基础,JAVA 集 合框架中的类自然成为了我们突破数据结构最好的老师,其次是 java 并发,即多线程、并 发容器、锁等课题,这方面可以好好学习一下 JUC 框架。最后最好是具备一些网络方面的 知识,例如 NIO、Netty。 2. 持续输出能力 成为一个开源项目的 contributions 非常容易,提交一个 PR 并被通过即可,甚至于 提交一个文档被接受也同样可以,难的是持续贡献,最终被开源项目的 rocketmq-console 这个 页面的展示逻辑,即通过阅读 rocketmq-console 的源码来解开其采集逻辑。 得知,【消费者】界面查询各个消费组的基本信息的接口为 /consumer/groupList. query,那接下来,我们首先从源码的角度来分析该接口的实现逻辑。其入口如下: org.apache.rocketmq.console.controller.ConsumerController#list0 码力 | 165 页 | 12.53 MB | 1 年前3
RocketMQ v3.2.4 开发指南........................................................................................ 29 9.1 网络协议 ................................................................................................ 消息消费者,负责消费消息,一般是后台系统负责异步消费。 Push Consumer Consumer 的一种,应用通常吐 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立 刻回调 Listener 接口方法。 Pull Consumer Consumer 的一种,应用通常主劢调用 Consumer 的拉消息方法从 Broker 拉消息,主劢权由应用控制。 可以严格的保证消息有序。 4.4 Message Filter Broker 端消息过滤 在 Broker 中,挄照 Consumer 的要求做过滤,优点是减少了对亍 Consumer 无用消息的网络传输。 缺点是增加了 Broker 的负担,实现相对复杂。 (1). 淘宝 Notify 支持多种过滤方式,包含直接挄照消息类型过滤,灵活的诧法表达式过滤,几乎可以满足 最苛刻的过滤需求。0 码力 | 52 页 | 1.61 MB | 1 年前3
消息中间件RocketMQ原理解析 - 斩秋的消息,返回消息的 offset 即消息地址 commitLog 中消息偏移量。Prepared 状态消息不被消费 发送消息 ok,执行本地事物分支, 本地事物方法需要实现 rocketmq 的回调接口 2)2) 2) LocalTransactionExecuter , 处 理 本 地 事 物 逻 辑 返 回 处 理 的 事 物 状 态 LocalTransactionState 3) 二阶段,处理完本地事物中业务得到事物状态, Consumer 消费拉取的消息的方式有两种 1. Push 方式:rocketmq 已经提供了很全面的实现, consumer 通过长轮询拉取消息后回调 MessageListener 接口实现完成消费, 应用系统只要 MessageListener 完成业务逻辑即可 2. Pull 方式:完全由业务系统去控制,定时拉取消息,指定队列消费等等, 当然这里需要 业务系统去根据自己的业务需求去实现 拉取消息(异步拉取)返回结果是回调 7. 从内存中获取 commitOffsetValue //TODO 这个值跟 pullRequest.getNextOffset 区别 8. 构建 sysFlag pull 接口用到的 flag 9. 调底层通信层向 broker 发送拉消息请求 如果 master 压力过大,会建议去 slave 拉取消息 如果是到 broker 拉取消息清楚实时提交标记位,因为 slave0 码力 | 57 页 | 2.39 MB | 1 年前3
基于Apache APISIX 与RocketMQ 构建云原生一体化架构物理机 经典网络/VPC 网络 Overlay/Underlay NVMe 普通云盘 ESSD 云盘 SA TA 独占/混部/独立交付…… • 集群节点异常成为常态 • 依赖服务随时可能在进行迁移或重启 • 对弹性的要求开始从物理资源变为逻辑资源 • IaaS 的多样性对应用交付部署提出了更高要求 • 可运维性、可观测性带来了更大挑战 • 多租环境带来了更高的网络及安全隔离要求 低成本 高 SLA X 客户价值: X 多场景 云原生时代的挑战 云原生四要素 云原生时代的 RocketMQ admin 富客户端 轻量级 SD K API兼容 计算 云存储 VPC 网络 Kubernetes Name Server Name Server Name Server 计算集群 可观测 remoting gRPC MQTT AMQP AC L 消息 事件 加快数据读取速度 你集群是正常的,但我消费就是出问题了,怎么办!? 无损弹性扩缩 固定分区面临的挑战 • 无切换架构中,主节点宕机,备节点不可写,分区数量减少 • 容量不足,Kafka 分区迁移时,会导致网络风暴,耗时极长 问题重点 • 在主节点宕机时,备节点要有自动切换为主的能力 • 容量调整时,不能产生数据迁移,且要在秒级完成 固定分区使用场景 • 任务计算过程中,会将同一个业务类型的数据发到同一个队列0 码力 | 22 页 | 2.26 MB | 1 年前3
Apache RocketMQ on Amazon Web Services自定义堆栈名称后,配置必填参数选项,并且根据需求调整已有默认值的选项。以下 为详细的参数解释。两个选项除了网络配置不同以外,其他配置都是相同的。 选项 1:⽤于将 Apache RocketMQ 部署到新 VPC 的参数 参数标签 参数名称 默认值 说明 Network Configuration 网络配置 1 Availability Zones AvailabilityZones 化并且存放到了不同的前缀目录 下。 选项 2:用于将 RocketMQ 部署到现有 VPC 的参数 参数标签 参数名称 默认值 说明 Network Configuration 网络配置 1 VPC VPC 必填项 您希望部署到的已有 VPC ID(例 如, vpc0343606e)。 2 Primary Node Subnet0 码力 | 18 页 | 1.55 MB | 1 年前3
快速部署高可用的Apache RocketMQ 集群 - Amazon S3配置都是相同的。 选项 1:⽤于将 Apache RocketMQ 部署到新 VPC 的参数 参数标签 参数名称 默认值 说明 Network Configuration 网络配置 1 Availability Zones AvailabilityZones 必填项 ⼦⽹可⽤区的列表。 您指定的 逻辑顺序会被保留。此部署使⽤ 2 个或 化并且存放到了不同的前缀⽬录 下。 选项 2:⽤于将 RocketMQ 部署到现有 VPC 的参数 参数标签 参数名称 默认值 说明 Network Configuration 网络配置 1 VPC VPC 必填项 您希望部署到的已有 VPC ID (例如, vpc0343606e)。 2 Primary Node Subnet0 码力 | 21 页 | 2.57 MB | 1 年前3
共 6 条
- 1













