前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三分钟拥有一整套企业级分布式消息队列

三分钟拥有一整套企业级分布式消息队列

原创
作者头像
API网关-金子
修改2019-08-31 12:48:21
1.3K0
修改2019-08-31 12:48:21
举报
文章被收录于专栏:消息队列消息队列

私有云以及混合云的优势越来越多,例如数据的安全性更高,能够得到更高的服务质量,部署灵活,用户对私有化的需求越来越旺盛。消息队列作为当前互联网架构中不可或缺的核心组件,而消息队列的产品多种多样,在众多消息队列中,腾讯云自研的消息队列CMQ 具备高可靠、高可用、高性能,易用的特点,推出私有化部署的能力,让用户能够拥有更强大的业务系统。

1. 背景

高可靠,高可用的私有化消息队列服务受到更多金融用户政府用户的青睐,众多款消息队列中,各有相应的特点,本文将介绍如何打造一款高可用高性能的企业级分布式消息队列。

2. 竞品分析

产品

优点

缺点

ActiveMQ

MQ领域的功能极其完备

有较低的概率丢失数据,官方社区现在对ActiveMQ 5.x维护越来越少

Kafka

可用性高,吞吐量高,被多家公司和多个开源项目使用

异步刷盘,不保证消息的可靠性

RabbitMQ

由于erlang语言的特性,mq 性能较好,高并发,支持多种语言 ,文档齐全,社区活跃度高

erlang开发,很难去看懂源码,不利于二次开发,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重 ,学习和维护成本较高

RocketMQ

支持10亿级别的消息堆积,可用高

支持的客户端语言不多,社区活跃度一般

基于以上竞品分析,消息队列的私有化版 要求易维护,提供客户端多语言,高性能,高可靠,保证消息0丢失。

3.齐全的文档

一款产品最重要的可能就是文档环节,以下是私有化消息队列提供的文档,从售前文档到交付文档培训类文档比较完善

产品介绍文档

产品白皮书

产品功能列表

产品路线图

安装部署手册

接口文档

用户操作手册

运维维护文档

测试用例

产品售前培训文档

客户案例

4. 整体架构图

image.png
image.png

说明:

架构图组件多,但是如果混部只需要三台机器即可完全运行起来,从控制台到监控完整的一套

4.1 模块说明 — 控制流

  • 管控流接入层

系统架构图的左侧是控制流,和监控数据,从控制台进入私有化版的yunapi平台,这里组件包含两个 access-gateway 负责数据的转发,auth负责鉴权。该组件也可以接第三方权限认证体系,接口可扩展,标准接入方式。

  • cmq-oss

cmq的管理系统,负责对实例的增删改查操作。

  • monito

负责对监控统计的数据进行汇总,并统一上报到监控平台,并将部分重要统计数据落DB,组件采用主备方式。

  • maste

access接入层在获取集群中leader monitor等信息时,需要去db中拉取这些信息,access具备水平扩展,对db压力过大怕造成影响,加一个缓冲层,当然也可以采用redis等缓存策略

  • Barad

模拟公有云的Barad系统,其作为接入层,组件是可以线性扩容,前面可以挂载负载均衡来平均流量,CTSDB 作为监控数据的存储层,对数据进行存储,采用ES集群作为底层引擎,很好的实现聚合等操作

4.2 模块说明—数据流

  • routeproxy

集群方式提供,该模块进行鉴权,限流,确认某个实例所在的下层接入点即access,该组件进行多级缓存设计,local cache 如果不命中,则对数据进行redis 查找,如果依然不命中,对数据库进行查找,数据库如果挂了的话,那么本地备份的磁盘进行查找,5分钟dump一份q的接入点信息到本地文件

  • access

集群的真正接入层,不同的集群有不同的接入层,区分大小客户或者独占,以及区分queue 模式 和 topic模式 ,将接入层的HTTP协议转为pb 协议 ,处理broker集群leader切换等业务逻辑,具备水平扩展 ,协议适配的功能

  • broker集群

对消息进行生产落盘消费的组件,采用raft一致性算法对数据进行处理,保证数据可靠安全不丢。

  • pushserver

对主题模式的消息队列进行推送给订阅者的组件,具备水平扩展的能力

4.3 性能指标

就别水平扩展能力,测试环境 broker 8c16g 三台,access接入层 4c16g routeproxy 4c16g

批量生产消息可以6k tps 考虑到每次处理16条消息,那么可以到8w+ 条消息每秒

5. 一键式部署

极其方便的部署方式,只需要提供机器列表与安装路径等必要信息填写到部署配置文件中,执行以下脚本既可。

sh install_all.sh config.txt

6. 总结

私有化CMQ的推出,极大方便用户的使用,从一整套物料,文档,测试用例。也欢迎大家报名,申请使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 竞品分析
  • 3.齐全的文档
  • 4. 整体架构图
    • 4.1 模块说明 — 控制流
      • 4.2 模块说明—数据流
        • 4.3 性能指标
        • 5. 一键式部署
        • 6. 总结
        相关产品与服务
        消息队列 CMQ 版
        消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档