基于amqp实现的golang消息队列MaxQ
基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 1/22 基于amqp实现的golang消息队列 MaxQ 2017-07-01 张培培 饿了么-基础框架组 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 2/22 内容 1. 队列 2 IPC消息队列 3. AMQP协议 4. MaxQ架构模型 5. MaxQ相关特性 6. 使用场景和案例 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 3/22 1. 队列 跟消息队列相比,有哪些共性? 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192 生产消费关系 Pull/Push 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 5/22 2. IPC消息队列 跟消息队列相比,有哪些共性? 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 6/220 码力 | 22 页 | 1.45 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第八课 队列:可变数据实现
现代编程思想 队列:可变数据结构实现 Hongbo Zhang 1 队列 我们曾经介绍过队列这个数据结构 先进先出 利⽤两个堆栈进⾏实现 我们利⽤可变数据结构进⾏实现 基于数组的循环队列 单向链表 2 队列 我们实现以下函数(以整数队列为例) 1. struct Queue { .. } 2. 3. fn make() -> Queue // 创建空列表 4. fn push(self: self ,为了⽅便起⻅,我们将本身作为返回值传回 1. make().push(1).push(2).push(3).pop().pop().length() // 1 3 循环队列 我们可以利⽤⼀个数组来代表队列 数组是⼀个连续的存储空间,每⼀个字段均可被修改 数组被分配后⻓度不变 1. let a: Array[Int] = Array::make(5, 0) 2. a[0] = 1 移⼀位 如果超出数组⻓度,则绕回开头 4 循环队列 0 0 0 0 0 Start End push(1) 0 0 0 0 Start End make() 1 push(2) 0 0 0 Start End 1 2 pop() 0 0 0 Start End 0 2 0 1 2 3 5 循环队列 0 0 0 0 Start End push(6)0 码力 | 19 页 | 314.79 KB | 1 年前3Apache RocketMQ 从入门到实战
2. 消费队列负载算法与重平衡机制 那集群模式下,消费者是如何来分配消息的呢? 例如上面实例中 order_topic 有 16 个队列,那一个拥有 3 个消费者的消费组如何来分 配队列中。 本文来自『中间件兴趣圈』公众号,仅作技术交流,未授权任何商业行为。 13 > 1.1 RocketMQ 核心概念扫盲篇 在 MQ 领域有一个不成文的约定:同一个消费者同一时间可以分配多个队列,但一个 队列同一时间只会分配给一个消费者。 RocketMQ 提供了众多的队列负载算法,其中最常用的两种平均分配算法。 AllocateMessageQueueAveragely 平均分配 AllocateMessageQueueAveragelyByCircle 轮流平均分配 为了说明这两种分配算法的分配规则,现在对 16 个队列,进行编号,用 q0~q15 表示, 消费者用 y 分配算法的队列负载机制如下: c0:q0 q1 q2 q3 q4 q5 c1: q6 q7 q8 q9 q10 c2: q11 q12 q13 q14 q15 其算法的特点是用总数除以消费者个数,余数按消费者顺序分配给消费者,故 c0 会多 分配一个队列,而且队列分配是连续的。 AllocateMessageQueueAveragelyByCircle 分配算法的队列负载机制如下:0 码力 | 165 页 | 12.53 MB | 1 年前3消息中间件RocketMQ原理解析 - 斩秋
topic 下的所有队列的方式来实现发送方的负载均衡 1) Topic 下的所有队列如何理解: 比如 broker1, broker2, borker3 三台 broker 机器都配置了 Topic_A Broker1 的队列为 queue0 , queue1 Broker2 的队列为 queue0, queue2, queue3, Broker3 的队列为 queue0 当然一般情况下的 broker 启动的时候注册到 namesrv 的 Topic_A 队列为共 6 个分别为: broker1_queue0, broker1_queue1, broker2_queue0, broker2_queue1, broker2_queue2, broker3_queue0, 2) Producer 如何实现轮询队列: Producer 从 namesrv 获取的到 Topic_A messageQueueList //Topic_A 的所有的队列 --AtomicInteger sendWhichQueue //自增整型 方法 selectOneMessageQueue 方法用来选择一个发送队列 (++sendWitchQueue) % messageQueueList.size 为队列集合的下标 每次获取 queue 都会通过0 码力 | 57 页 | 2.39 MB | 1 年前3Hello 算法 1.0.0b1 Swift版
. . . . . . . . . . . . . . . . . 59 5. 栈与队列 61 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 TypeScript 版
. . . . . . . . . . . . . . . . . 57 5. 栈与队列 58 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 186 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 JavaScript版
. . . . . . . . . . . . . . . . . 57 5. 栈与队列 59 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 185 页 | 14.70 MB | 1 年前3Hello 算法 1.0.0b1 C++版
. . . . . . . . . . . . . . . . . 58 5. 栈与队列 59 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 187 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b1 Python版
. . . . . . . . . . . . . . . . . 54 5. 栈与队列 55 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 178 页 | 14.67 MB | 1 年前3Hello 算法 1.0.0b2 Swift版
. . . . . . . . . . . . . . . . . 59 5. 栈与队列 61 5.1. 栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.4. 小结 . . . . . . . . . . . . . . . . . . . . . . . . . 复杂度分析:数据结构与算法的评价维度、算法效率的评估方法。时间复杂度、空间复杂度,包括推算 方法、常见类型、示例等。 ‧ 数据结构:常用的基本数据类型,数据在内存中的存储方式、数据结构分类方法。数组、链表、栈、队列、 散列表、树、堆、图等数据结构,内容包括定义、优劣势、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:查找算法、排序算法、搜索与回溯、动态规划、分治算法,内容包括定义、使用场景、优劣势、时0 码力 | 199 页 | 15.72 MB | 1 年前3
共 531 条
- 1
- 2
- 3
- 4
- 5
- 6
- 54