一份完整的亿级消息中心架构方案!

开发 前端
今天给大家分享一份较为完整的亿级消息中心的架构方案!技术目标:上行到消息队列 API 吞吐量 10000 条/秒,下发第三方平台 1000 条/秒(仅平台自身处理能力,第三方看第三方处理能力极限指标为准);保证消息中心 100% 高可用。

今天给大家分享一份较为完整的亿级消息中心的架构方案!  

[[407053]]

设计目标

  • 技术目标:上行到消息队列 API 吞吐量 10000 条/秒,下发第三方平台 1000 条/秒(仅平台自身处理能力,第三方看第三方处理能力极限指标为准);保证消息中心 100% 高可用。
  • 业务目标:对接新需求,明确消息中心的负责人(架构组),及时响应业务处理或者反馈。
  • 产品目标:支持消息处理状态查询,简单的消息规范消息对接(初级开发 5 分钟实现接入成本),规范化消息模板办理。

需求原型

需求原型如下图:

功能需求:

  • 支持阿里云短信,微信公众号,App 推送,统一站内信,企业微信(应用,个人)等第三方推送。
  • 包含消息模板管理,账户管理,消息搜索,批量消息发送等。

技术方案

业务部署交互图:

业务核心逻辑交互图:

技术选型

①RocketMQ

  • 优势:性能好,单个吞吐量能达 10 万/秒,并行推送能力(消费能力)可以通过 RocketMQ 的分区(分区细节需要设计)数量进行扩展。性能上面是一个亮点和优势。
  • 缺点:部分功能不支持,一旦进入 RocketMQ 队列,推送消息不可撤回。很多数据库层面的功能特性(MQ 不支持)在设计上就会舍弃。

②ES

  • 优势:性能好,可以支撑上亿的数据量的关键词搜索,实时同步的性能和吞吐量都还可以。
  • 缺点:并发插入能力略差,假设消息下发吞吐量高,需要批量对消息进行同步,这样可以优化 ES 吞吐量。高并发对 ES 同步,ES 承载能力可能会出问题(可以投入测试进行验证)。

概要设计描述

  • RocketMQ 设计正常消息队列(正常投递消息),重试消息队列(支持多种延迟机制,发送失败重试的消息),发送结果消息队列(发送超限或者成功的消息)。
  • ES 同步以上三种队列的消息,以最终一致性(最晚时间戳校验)保持消息信息最新。
  • MySQL 仅支持管理模板,账号等基础管理功能。

底层框架设计、运维层面描述

①统一网关:Spring Cloud Gateway/Kong,仅做 API 层面的路由支持。

②基础框架:选定 jar 包版本,ES,RocketMQ,实时报警,性能监控,对这些接口做二次封装,ES 支持 SQL 模式插入查询;RocketMQ 做底层实现剥离。

参考 bsf 统一基础框架:

  1. https://gitee.com/yhcsx/csx-bsf-all 

③业务框架:标准输入输出 Http RPC 等业务框架工具或协议层面支持。

④服务高可用:K8s&Docker 及 DevOps 线上一体化部署的支持,要做到一键发布,一键回滚,滚动发布,不停机发版。

作者:车江毅

编辑:陶家龙

出处:cnblogs.com/chejiangyi/p/14884931.html

 

责任编辑:未丽燕 来源: 51CTO技术栈
相关推荐

2011-06-03 16:30:39

2019-12-03 10:28:53

编程语言PythonJava

2023-09-01 14:02:25

用户分析攻略

2024-11-07 08:50:56

用户分析分类维度标签

2019-08-27 09:20:35

微服务架构组件

2019-01-17 08:16:05

MySQL规范数据库

2023-09-29 22:41:26

Kubernetes云原生

2019-09-10 11:10:26

MySQL数据库索引

2019-04-15 15:12:04

Redis命令数据库

2019-04-22 08:10:08

CPU优化服务器

2019-07-23 08:23:03

IPv6 网络互联网

2023-09-26 11:03:42

数据中心服务器

2020-07-15 15:38:15

人脸识别照片活化手机

2022-09-29 17:57:40

中间件链路节点

2020-03-06 15:38:10

编程语言PythonJava

2019-06-28 09:27:20

高可用架构支付

2017-06-07 11:51:48

灾备和力记易

2019-03-24 14:14:40

代码阅读源代码

2022-09-28 17:59:03

MQ消息中间件

2015-03-19 15:17:11

点赞
收藏

51CTO技术栈公众号