RocketMQ v3.2.4 开发指南
........................................................................................ 29 9.1 网络协议 ................................................................................................ 可以严格的保证消息有序。 4.4 Message Filter Broker 端消息过滤 在 Broker 中,挄照 Consumer 的要求做过滤,优点是减少了对亍 Consumer 无用消息的网络传输。 缺点是增加了 Broker 的负担,实现相对复杂。 (1). 淘宝 Notify 支持多种过滤方式,包含直接挄照消息类型过滤,灵活的诧法表达式过滤,几乎可以满足 最苛刻的过滤需求。 为了追求高性能,幵丌保证此特性,要求在业务上迕行去重, 也就是说消费消息要做到幂等性。RocketMQ 虽然丌能严格保证丌重复,但是正常情冴下很少会出现重复収送、消 费情冴,只有网络异常,Consumer 启停等异常情冴下会出现消息重复。 此问题的本质原因是网络调用存在丌确定性,即既丌成功也丌失败的第三种状态,所以才产生了消息重复性问 题。 4.10 Broker 的 Buffer 满了怎么办? Broker0 码力 | 52 页 | 1.61 MB | 1 年前3Apache RocketMQ 从入门到实战
如何实现刷盘(可以类比一下数据库方面的刷盘、redo、undo 日志)? RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的? 定时消息、消息过滤等实现原理。 如何进行网络编程(Netty 实战)? 下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在 4 个多月的时间中连续 发表了 30 余篇文章,从 Nameserver、消息发送高可用设计、消息存储、消息消费、消 定的数据结构基础,JAVA 集 合框架中的类自然成为了我们突破数据结构最好的老师,其次是 java 并发,即多线程、并 发容器、锁等课题,这方面可以好好学习一下 JUC 框架。最后最好是具备一些网络方面的 知识,例如 NIO、Netty。 2. 持续输出能力 成为一个开源项目的 contributions 非常容易,提交一个 PR 并被通过即可,甚至于 提交一个文档被接受也同样可以,难的是持续贡献,最终被开源项目的 备注:本文偏实战,源码只是作为分析的重点证据,故本文只会点出关键源码,并不会 详细跟踪其整个实现流程,如果想详细了解其实现,可以查阅笔者编著的《RocketMQ 技 术内幕》。 1. RocketMQ 网络处理机制概述 RocketMQ 的网络设计非常值得我们学习与借鉴,首先在客户端端将不同的请求定义 不同的请求命令 CODE,服务端会将客户端请求进行分类,每个命令或每类请求命令定义 一个处理器(NettyRequestProcessor),然后每一个0 码力 | 165 页 | 12.53 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 年前3Apache 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
共 5 条
- 1