消 息 队 列 案 例 分 享 产 品 文 档
版 权 声 明 2015-2016 腾 讯 云 版 权 所 有 本 文 档 著 作 权 归 腾 讯 云 单 独 所 有, 未 经 腾 讯 云 事 先 书 面 许 可, 任 何 主 体 不 得 以 任 何 形 式 复 制 修 改 抄 袭 传 播 全 部 或 部 分 本 文 档 内 容 商 标 声 明 及 其 它 腾 讯 云 服 务 相 关 的 商 标 均 为 腾 讯 云 计 算 ( 北 京 ) 有 限 责 任 公 司 及 其 关 联 公 司 所 有 本 文 档 涉 及 的 第 三 方 主 体 的 商 标, 依 法 由 权 利 人 所 有 服 务 声 明 本 文 档 意 在 向 客 户 介 绍 腾 讯 云 全 部 或 部 分 产 品 服 务 的 当 时 的 整 体 概 况, 部 分 产 品 服 务 的 内 容 可 能 有 所 调 整 您 所 购 买 的 腾 讯 云 产 品 服 务 的 种 类 服 务 标 准 等 应 由 您 与 腾 讯 云 之 间 的 商 业 合 同 约 定, 除 非 双 方 另 有 约 定, 否 则, 腾 讯 云 对 本 文 档 内 容 不 做 任 何 明 示 或 模 式 的 承 诺 或 保 证 第 2 页 共 14 页
文 档 目 录 文 档 声 明... 2 在 线 图 片 处 理 案 例... 4 海 量 数 据 处 理 案 例... 6 春 晚 微 信 红 包 案 例... 8 腾 讯 云 CMQ 与 RabbitMQ 的 对 比 分 析... 10 第 3 页 共 14 页
在 线 图 片 处 理 案 例 某 美 图 公 司 在 腾 讯 云 搭 建 了 在 线 图 片 处 理 服 务, 该 服 务 可 以 让 用 户 上 传 照 片, 并 指 定 需 要 对 这 些 照 片 执 行 的 操 作, 比 如 裁 剪 红 眼 处 理 牙 齿 美 白 重 新 着 色 对 比 度 调 节 生 成 缩 略 图 等 用 户 上 传 图 片 后, 提 交 任 务, 然 后 等 待 图 片 处 理 完, 下 载 处 理 后 的 图 片 不 同 的 操 作 会 耗 费 不 同 的 处 理 时 间, 从 几 秒 到 几 分 钟 不 等, 而 且 用 户 可 能 一 次 上 传 几 张 也 可 能 是 几 十 张 甚 至 几 百 张 图 片, 所 以 总 的 处 理 时 间 就 跟 上 传 的 图 片 个 数 图 片 的 大 小 用 户 选 择 的 操 作 有 关 使 用 腾 讯 云 CMQ 实 现 了 上 述 需 求, 用 户 的 图 片 存 储 在 腾 讯 云 存 储 中 (CBS/COS 等 ), 用 户 的 每 一 个 操 作 请 求 都 会 作 为 一 个 消 息 存 入 请 求 队 列 (Request Queue) 中, 消 息 内 容 为 : 图 片 索 引, 由 图 片 名 称 + 用 户 请 求 的 操 作 类 型 + 图 片 存 储 的 位 置 索 引 key 等 组 成 运 行 在 CVM 的 图 片 处 理 服 务 从 Request Queue 中 获 取 消 息 ( 图 片 索 引 ), 图 片 处 理 服 务 器 从 云 端 下 载 数 据, 并 进 行 图 片 编 辑, 完 毕 后 把 处 理 结 果 发 送 到 结 果 队 列 (Response Queue) 中, 结 果 图 片 存 储 到 云 存 储 中 流 程 结 束, 客 户 已 将 原 图 片 编 辑 处 理 后 的 图 片, 都 存 储 在 云 端 存 储, 可 随 时 下 载 使 用 可 扩 展 的 高 可 靠 的 进 一 步 思 考 : 如 果 因 为 bug 或 其 他 原 因 导 致 图 片 处 理 服 务 暂 时 不 可 用 但 是 系 统 利 用 CMQ 第 4 页 共 14 页
使 得 错 误 对 用 户 透 明, 一 方 面 用 户 可 以 继 续 上 传 照 片,web server 可 以 继 续 发 消 息 到 Request Queue, 消 息 会 被 保 存 在 队 列 中 直 到 图 片 处 理 服 务 可 用 后 取 走 ; 另 一 方 面 图 片 处 理 服 务 在 实 现 时 不 用 记 住 崩 溃 前 在 处 理 的 消 息, 而 且 其 崩 溃 时 处 理 的 消 息 还 可 以 被 重 新 处 理 因 为 CMQ 提 供 的 接 收 消 息 ( 包 括 接 收 顺 序 队 列 消 息 和 接 收 并 发 队 列 消 息 ) 特 性 保 证 消 息 在 接 收 后 仍 然 在 队 列 中, 直 到 消 息 的 接 收 者 显 式 来 删 除 它 本 特 性 保 证 了 图 片 处 理 服 务 与 图 片 上 传 服 务 的 解 耦 如 果 单 个 图 片 处 理 服 务 不 能 满 足 用 户 需 求 ( 用 户 虽 然 能 够 上 传 照 片, 但 是 却 长 时 间 拿 不 到 处 理 的 结 果 ), 利 用 CMQ 并 启 动 多 个 图 片 处 理 服 务 便 可 以 满 足 不 断 增 长 的 用 户 访 问 需 求 CMQ 的 两 个 特 性 让 这 个 需 求 成 为 可 能 : 1) 单 个 CMQ 队 列 是 可 以 让 多 个 server 同 时 共 享 访 问 的 ( 即 发 送 消 息 接 收 并 发 队 列 消 息 删 除 并 发 队 列 消 息 功 能 ); 2) 一 个 消 息 不 会 同 时 被 多 个 服 务 接 收, 这 是 通 过 针 对 消 息 的 短 暂 锁 来 保 证 的, 消 息 的 接 收 者 可 以 指 定 消 息 被 锁 定 的 时 间, 接 收 者 处 理 完 消 息 需 要 主 动 删 除 消 息, 如 果 接 收 者 处 理 消 息 失 败, 那 么 另 一 个 服 务 可 以 在 这 个 消 息 的 锁 失 效 后 重 新 获 得 这 个 消 息 这 两 个 特 性 保 证 了 处 理 服 务 器 的 数 量 可 以 随 着 负 载 的 变 化 而 动 态 加 减 第 5 页 共 14 页
海 量 数 据 处 理 案 例 大 数 据 入 门 的 第 一 步, 就 是 将 海 量 的 数 据 进 行 挖 掘 分 析, 提 炼 有 价 值 的 结 果, 引 导 未 来 的 商 业 模 型, 如 大 众 点 评 滴 滴 打 车 在 腾 讯 云 已 有 深 度 的 实 践 例 如 : 将 微 信 手 机 QQ 上 用 户 的 热 门 分 享 的 餐 馆, 实 时 反 映 到 大 众 点 评 app 的 手 机 客 户 端 上, 推 荐 给 消 费 者 抽 象 出 数 据 分 析 系 统 的 特 性, 主 要 由 以 下 模 块 组 成 : 数 据 采 集 数 据 接 入 流 式 计 算 离 线 计 算 数 据 持 久 化 1) 数 据 采 集 负 责 从 各 节 点 上 实 时 采 集 数 据, 选 用 开 源 的 flume 来 实 现 所 有 的 业 务 服 务 器 的 日 志 等 数 据 以 漏 斗 形 式 的 数 据 流 入 到 CMQ 管 道 2) 数 据 接 入 由 于 采 集 数 据 的 速 度 和 数 据 处 理 的 速 度 不 一 定 同 步, 为 了 保 证 日 志 写 入 分 析 的 稳 定 可 靠, 添 加 一 个 CMQ 消 息 中 间 件 来 作 为 缓 冲 3) 流 式 计 算 离 线 数 据 分 析 对 采 集 到 的 数 据 进 行 实 时 分 析, 选 用 apache 的 storm; 离 线 数 据 分 析 基 于 Spark 做 长 久 的 数 据 挖 掘 4) 数 据 输 出 对 分 析 后 的 结 果 持 久 化, 可 用 腾 讯 云 CDB Mysql 等 方 案 第 6 页 共 14 页
在 数 据 处 理 场 景 中, 消 息 生 产 者 是 海 量 的 日 志 数 据 的 输 入, 在 线 分 析 的 Storm 集 群 是 消 息 消 费 者 从 经 验 来 看, 消 息 消 费 端 Storm 处 理 消 息 的 业 务 逻 辑 可 能 很 复 杂 ( 涉 及 到 实 时 计 算 数 据 流 式 处 理 Topology 的 数 据 处 理 ) 另 一 个 问 题 则 是 消 息 消 费 端 Storm 出 现 故 障 的 概 率 较 高, 导 致 短 暂 时 间 内 无 法 消 费 或 消 费 不 畅 总 而 言 之, 消 息 生 产 者 的 效 率 是 远 远 高 于 消 息 消 费 者 的 Push 方 式 由 于 无 法 得 知 当 前 消 息 消 费 者 的 状 态, 所 以 只 要 有 数 据 产 生, 便 会 不 断 地 进 行 推 送 在 Storm 集 群 处 于 高 负 载 时, 使 用 Push 的 方 式 可 能 会 导 致 消 费 者 的 负 载 进 一 步 加 重, 甚 至 崩 溃 除 非 消 息 消 费 者 有 合 适 的 反 馈 机 制 能 够 让 服 务 端 知 道 自 己 的 状 况 而 采 取 Pull 的 方 式 问 题 就 简 单 了 许 多, 由 于 消 息 消 费 者 是 主 动 到 服 务 端 拉 取 数 据, 此 时 只 需 要 降 低 访 问 频 率 腾 讯 云 CMQ 后 续 将 推 出 topic 主 题 模 式, 提 供 PULL/PUSH 两 种 数 据 获 取 方 式,CMQ 作 为 生 产 者 数 据 和 消 费 者 数 据 之 间 的 缓 冲 区 它 允 许 消 费 者 可 用 并 且 准 备 好 的 时 候 才 读 取 数 据 缓 解 消 息 生 产 者 与 消 息 消 费 者 之 间 不 同 步 问 题, 从 而 在 两 者 之 间 加 了 一 层 缓 冲 区 第 7 页 共 14 页
春 晚 微 信 红 包 案 例 春 晚 红 包 活 动 涉 及 四 个 大 型 系 统 的 联 动, 包 括 微 信 微 信 支 付 红 包 系 统 和 财 付 通 系 统 以 下 简 单 介 绍 各 个 系 统 : 红 包 系 统 : 个 人 红 包 的 发 抢 拆 和 列 表 查 看 ; 财 付 通 系 统 : 包 括 支 付 订 单 异 步 入 账 流 水 的 高 性 能 存 储, 用 户 余 额 和 账 单 的 实 时 展 示 ; 微 信 接 入 : 确 保 微 信 用 户 公 网 接 入 的 质 量 ; 微 信 支 付 : 在 线 交 易 的 入 口 类 似 红 包 系 统 的 分 布 式 事 务 是 关 注 的 热 点 举 一 个 典 型 的 例 子, 用 户 A 给 用 户 B 发 了 10 元 的 红 包, 有 以 下 步 骤 : 1) 从 A 帐 号 中 把 余 额 读 出 来 2) 对 A 帐 号 做 减 法 操 作 ( 减 10 元 ) 3) 把 结 果 写 回 A 帐 号 中 ( 一 次 确 认 ) 4) 从 B 帐 号 中 把 余 额 读 出 来 第 8 页 共 14 页
5) 拆 开 A 发 送 给 B 的 红 包, 读 出 数 值 6) 对 B 帐 号 做 加 法 操 作 ( 加 10 元 ) 7) 把 结 果 写 到 B 帐 号 中 为 了 保 证 数 据 的 一 致 性, 上 述 步 骤 只 有 两 种 结 果 : 都 成 功 完 成 或 者 都 不 成 功 执 行 回 滚 而 且 这 个 操 作 的 过 程 中, 对 A B 帐 号 还 需 引 入 分 布 式 锁 机 制 来 避 免 脏 数 据 的 问 题 在 微 信 红 包 这 个 庞 大 的 分 布 式 集 群 内, 事 情 将 变 的 异 常 复 杂 微 信 红 包 系 统 引 入 了 腾 讯 云 CMQ 以 避 免 分 布 式 事 务 增 加 对 系 统 的 开 销 同 样 A 用 户 给 B 用 户 发 10 元 红 包 的 场 景, 下 面 介 绍 引 入 CMQ 后 的 新 策 略 在 上 述 案 例 中 的 第 七 步,B 用 户 拆 开 了 红 包, 红 包 里 有 10 块 钱 在 做 最 后 的 入 账 操 作 时 由 于 当 天 并 发 压 力 大, 常 出 现 入 账 失 败 的 情 况 红 包 团 队 把 入 帐 失 败 的 请 求, 全 部 转 入 CMQ 当 B 用 户 更 新 账 户 余 额 失 败 时, 手 机 客 户 端 显 示 等 待 状 态 随 后 账 户 系 统 将 不 断 从 CMQ 重 新 拉 取 重 试 此 更 新 操 作 CMQ 保 证 了 这 10 元 的 入 账 消 息 永 远 不 丢, 直 至 它 被 取 出 在 除 夕 当 天, 用 户 红 包 的 发 拆 入 账 等 动 作, 转 化 为 了 十 亿 级 别 的 海 量 请 求 若 使 用 传 统 的 事 务 方 式, 会 放 大 并 发 压 力 使 系 统 崩 溃 CMQ 消 息 队 列 保 证 了 红 包 消 息 的 可 靠 存 储 传 递, 实 时 写 三 份 保 证 数 据 不 丢 资 金 入 账 失 败 时 可 多 次 重 试, 避 免 失 败 回 滚 和 频 繁 轮 询 数 据 库 等 传 统 方 式 的 弊 端 第 9 页 共 14 页
腾 讯 云 CMQ 与 RabbitMQ 的 对 比 分 析 RabbitMQ 是 具 有 代 表 性 的 开 源 消 息 中 间 件, 当 前 较 多 地 应 用 于 企 业 系 统 内, 用 于 对 数 据 一 致 性 稳 定 性 和 可 靠 性 要 求 较 高 的 场 景 中 腾 讯 云 CMQ 基 于 RabbitMQ/AMQP 高 可 靠 的 原 理, 并 使 用 Raft 协 议 重 新 设 计 实 现, 在 可 靠 性 吞 吐 量 和 性 能 上 有 了 大 幅 提 升 本 文 将 重 点 介 绍 RabbitMQ 的 可 靠 性 原 理 腾 讯 云 CMQ 进 行 的 改 进 以 及 性 能 对 比 1. RabbitMQ 的 消 息 可 靠 交 付 1.1. 确 认 机 制 网 络 异 常 机 器 异 常 程 序 异 常 等 多 种 情 况 都 可 能 导 致 业 务 丢 失 消 息 对 消 息 进 行 确 认 可 以 解 决 消 息 的 丢 失 问 题, 确 认 成 功 意 味 着 消 息 已 被 验 证 并 正 确 处 理 RabbitMQ 使 用 生 产 消 息 确 认 消 费 者 确 认 机 制 来 提 供 可 靠 交 付 功 能 第 10 页 共 14 页
生 产 消 息 确 认 : 生 产 者 向 MQ 发 送 消 息 后, 等 待 MQ 回 复 确 认 成 功 ; 否 则 生 产 者 向 MQ 重 发 该 消 息 此 过 程 可 以 异 步 进 行, 生 产 者 持 续 发 送 消 息,MQ 将 消 息 批 量 处 理 后 再 回 复 确 认 ; 生 产 者 通 过 识 别 确 认 返 回 中 的 ID 来 确 定 哪 些 消 息 被 成 功 处 理 消 费 者 确 认 :MQ 向 消 费 者 投 递 消 息 后, 等 待 消 费 者 回 复 确 认 成 功 ; 否 则 MQ 重 新 向 消 费 者 投 递 该 消 息 该 过 程 同 样 可 以 异 步 处 理,MQ 持 续 投 递 消 息, 消 费 者 批 量 处 理 完 后 回 复 确 认 可 以 看 出 RabbitMQ/AMQP 提 供 的 是 至 少 一 次 交 付 (at-least-once delivery), 异 常 情 况 下, 消 息 会 被 重 复 投 递 或 消 费 1.2. 消 息 存 储 为 提 高 消 息 的 可 靠 性, 保 证 在 RabbitMQ 重 启 服 务 不 可 用 时, 要 对 收 到 的 消 息 持 久 化 写 入 磁 盘 在 收 到 消 息 时 RabbitMQ 将 消 息 写 入 文 件 中, 当 写 入 达 到 一 定 数 量 或 一 定 时 间 周 期 后 RabbitMQ 将 文 件 落 盘 存 储 生 产 消 息 确 认 就 是 在 消 息 落 盘 存 储 后,MQ 向 生 产 者 回 复 已 落 盘 存 储 的 消 息 ID 2. 腾 讯 云 CMQ 与 RabbitMQ 的 对 比 CMQ 与 RabbitMQ 的 底 层 原 理 实 现 方 式 有 很 多 相 似 之 处, 但 在 更 大 程 度 上 进 行 了 升 级 改 造 : 2.1 功 能 升 级 除 了 生 产 消 费 确 认 机 制,CMQ 还 提 供 了 消 费 回 溯 功 能 用 户 可 以 指 定 腾 讯 云 CMQ 保 存 生 产 消 息 一 定 天 数, 随 后 将 消 费 回 溯 到 该 时 间 段 内 某 一 时 间 点, 从 该 点 开 始 重 新 消 费 在 用 户 业 务 逻 辑 异 常 时, 以 时 间 为 起 点 的 消 息 重 放 功 能 对 业 务 恢 复 非 常 有 帮 助 2.2 性 能 优 化 性 能 指 标 网 络 IO 说 明 CMQ 能 够 批 量 生 产 / 消 费 消 息,RabbitMQ 则 不 支 持 批 量 生 产 在 大 量 小 消 息 场 景 中,CMQ 第 11 页 共 14 页
性 能 指 标 说 明 具 有 更 少 的 请 求 数 和 更 低 的 平 均 延 迟 文 件 IO CMQ 生 产 / 消 费 消 息 顺 序 写 单 个 文 件, 并 周 期 性 落 盘 存 储, 能 最 大 限 度 地 充 分 利 用 文 件 系 统 缓 存 RabbitMQ 持 久 化 消 息 机 制 为 先 入 内 存 队 列 进 行 状 态 转 换, 然 后 写 日 志 缓 存, 最 后 写 消 息 文 件 和 索 引 文 件 ( 索 引 文 件 为 顺 序 写 消 息 文 件 为 随 机 写 ), 涉 及 三 次 IO 操 作, 性 能 较 差 CPU 性 能 RabbitMQ 的 日 志 缓 存 和 状 态 转 换 运 算 较 为 复 杂, 需 大 量 耗 用 CPU 资 源, 性 能 较 差 2.3. 可 用 性 提 升 CMQ 和 RabbitMQ 都 能 够 使 用 多 台 机 器 进 行 热 备 份, 提 高 可 用 性 CMQ 基 于 Raft 算 法 实 现, 简 单 易 维 护 RabbitMQ 使 用 自 创 的 GM 算 法 (Guaranteed Multicast), 学 习 难 度 较 高 Raft 协 议 中,Log 复 制 只 要 大 多 数 节 点 向 Leader 返 回 成 功,Leader 就 可 以 应 用 该 请 求, 向 客 户 端 返 回 成 功 : GM 可 靠 多 播 将 集 群 中 所 有 节 点 组 成 一 个 环 Log 复 制 依 次 从 Leader 向 后 继 节 点 传 播, 当 Leader 再 次 收 到 该 请 求 时, 发 出 确 认 消 息 在 环 中 传 播, 直 至 Leader 再 次 收 到 该 确 认 消 息, 表 明 Log 在 环 中 所 有 节 点 同 步 完 成 第 12 页 共 14 页
GM 算 法 要 求 Log 在 集 群 所 有 节 点 同 步 之 后 才 能 向 客 户 端 返 回 成 功 ;Raft 算 法 则 只 要 求 大 多 数 节 点 同 步 完 成 R aft 算 法 在 同 步 路 径 上 比 GM 算 法 减 少 了 近 一 半 的 等 待 时 间 2.4. CMQ 对 比 RabbitMQ 的 性 能 测 试 测 试 场 景 如 下 : 三 台 同 样 配 置 的 机 器 组 成 一 个 集 群, 腾 讯 云 CMQ RabbitMQ 均 配 置 为 镜 像 队 列, 数 据 均 在 三 台 机 器 上 同 步 腾 讯 云 CMQ 和 RabbitMQ 都 开 启 生 产 消 费 消 息 确 认 机 制 测 试 中 的 生 产 消 息 大 小 为 1KB 测 试 环 境 CPU 内 存 磁 盘 网 卡 环 境 说 明 24 核 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz 64G 24TB 10G Linux 版 本 2.6.32.43 RabbitMQ 版 本 3.6.2 Erlang 版 本 18.3 测 试 数 据 如 下 : 第 13 页 共 14 页
Powered by TCPDF (www.tcpdf.org) 案 例 分 享 产 品 文 档 QPS 对 比 CMQ 同 时 生 产 / 消 费 生 产 :5w/s 消 费 :5w/s RabbitMQ 生 产 :0.85w/s 消 费 :0.85w/s 在 高 可 靠 场 景 中,CMQ 吞 吐 量 优 于 RabbitMQ 的 四 倍 以 上 第 14 页 共 14 页