MQ系列3:RocketMQ 架构分析】的更多相关文章

MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 1 背景 我们前面两篇对主流消息队列的基本构成和技术选型做了详细的分析.从本篇开始,我们会专注当下主流MQ之一的RocketMQ. 从他的如下的几个方面去讨论: 基础能力(如 组织构成.消息发送.消息存储(持久化).消息通信.消息消费) 功能性方面(如消息堆积.消息回溯.消息追踪.消息过滤), 高可用性方面(如 消息顺序性保障.消息幂等性保障.消息安全性保障.消息事务性保障), 性能方面(如时效性,单机吞吐率) 参考 MQ系列2:…
架构流程图 说明  Driver端流程说明(Standalone模式) 使用spark-submit提交Spark应用程序Application. 通过反射的方式创建和构造一个DriverActor进程(Driver进程). SparkContext初始化,构造DAGScheduler和TaskScheduler. 每执行到一个Action操作就会创建一个job,该job会提交到DAGScheduler,划分为多个stage然后为每个stage创建一个TaskSet. TaskScheduler…
准备消息循环的数据 函数原型: 1  let[executor-sampler (mk-stats-sampler (:storm-conf executor-data))] 主要功能: 定义tuple-action-fn函数,该函数会根据TaskId获得对应的Bolt对象并调用其executor方法. Bolt输入处理函数 函数原型: 1  tuple-action-fn (fn [task-id ^TupleImpl tuple]) 主要功能: 获得Bolt对应的bolt-obj,调用exe…
Spout实现mk-threads接口用于创建与Executor对应的消息循环主函数. defmulti mk-threads executor-selector Mk-threads函数的主消息循环通过async-loop方法实现,若传入的函数为工厂方法,则在第一次调用该方法时进行初始化,并返回用于消息循环的函数. Spout输入处理函数 spout的输入处理函数采用非阻塞的方式从接收队列中获取消息: (disruptor/consume-batch receive-queue event-h…
Executor的数据 mk-executor-data函数用于定义Executor中含有的数据. Executor的输入处理 根据executor-id从Worker的:executor-receive-queue-map中获得Disruptor Queue 如下: 1  receive-queue ((:executor-receive-queue-map worker) executor-id) 说明: Worker的接收线程从ZMQ收到数据后,线程会根据目标的Task Id找到对应的Ex…
Worker通过worker-data方法定义了一个包含很多共享数据的映射集合,Worker中很多方法都依赖它 mk-worker 功能: 创建对应的计时器.Executor.接收线程接收消息   方法原型: 1   (conf TASK_HEARBEAT-FREQUENCY-SECS) #(do-executor-hearbeats worker :executors @executors))…
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 在之前的篇章中,我们学习了RocketMQ的原理,以及RocketMQ中 命名服务 ServiceName 的运行流程,本篇从消息的生产.消费来理解一条消息的生命周期. 1 消息生产 在RocketMQ中,消息生产指的是 消息生产者往消息队列中写入数据的过程.因为业务场景的复杂性,RocketMQ架构设计了多种不同的发送策略.下面先讨论几种常见的场…
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 1 关于NameServer 上一节的 MQ系列3:RocketMQ 架构分析,我们大致介绍了 RocketMQ的基本组件构成,包括 NameServer.Broker.Producer以及Consumer四部分. NameServer,指的是服务可以根据给定的名字来进行资源或对象的地址定位,并获取有关的属性信息.在Rocket中也一样,NameServer是 RocketMQ 的服务注册中…
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前的文章中,我们学习了RocketMQ的原理:RocketMQ中 命名服务 ServiceName 的运行流程:以及消息生产.发送的原理和模式.这一篇,就让我们从消息消费的角度去进一步的学习. 1 消息消费 消息的消费主要是由如下几个核心能力组成的: 消费方式:Push(推) 或者 Pull(拉) 消…
apache kafka中国社区QQ群:162272557 Apache kafka性能优化架构分析 应用程序优化:数据压缩 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl6aGl0YW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> consumer offset默认情况下是定时批量更新topic…