私有云以及混合云的优势越来越多,例如数据的安全性更高,能够得到更高的服务质量,部署灵活,用户对私有化的需求越来越旺盛。消息队列作为当前互联网架构中不可或缺的核心组件,而消息队列的产品多种多样,在众多消息队列中,腾讯云自研的消息队列CMQ 具备高可靠、高可用、高性能,易用的特点,推出私有化部署的能力,让用户能够拥有更强大的业务系统。
高可靠,高可用的私有化消息队列服务受到更多金融用户政府用户的青睐,众多款消息队列中,各有相应的特点,本文将介绍如何打造一款高可用高性能的企业级分布式消息队列。
产品 | 优点 | 缺点 |
---|---|---|
ActiveMQ | MQ领域的功能极其完备 | 有较低的概率丢失数据,官方社区现在对ActiveMQ 5.x维护越来越少 |
Kafka | 可用性高,吞吐量高,被多家公司和多个开源项目使用 | 异步刷盘,不保证消息的可靠性 |
RabbitMQ | 由于erlang语言的特性,mq 性能较好,高并发,支持多种语言 ,文档齐全,社区活跃度高 | erlang开发,很难去看懂源码,不利于二次开发,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重 ,学习和维护成本较高 |
RocketMQ | 支持10亿级别的消息堆积,可用高 | 支持的客户端语言不多,社区活跃度一般 |
基于以上竞品分析,消息队列的私有化版 要求易维护,提供客户端多语言,高性能,高可靠,保证消息0丢失。
一款产品最重要的可能就是文档环节,以下是私有化消息队列提供的文档,从售前文档到交付文档培训类文档比较完善
产品介绍文档
产品白皮书
产品功能列表
产品路线图
安装部署手册
接口文档
用户操作手册
运维维护文档
测试用例
产品售前培训文档
客户案例
说明:
架构图组件多,但是如果混部只需要三台机器即可完全运行起来,从控制台到监控完整的一套
系统架构图的左侧是控制流,和监控数据,从控制台进入私有化版的yunapi平台,这里组件包含两个 access-gateway 负责数据的转发,auth负责鉴权。该组件也可以接第三方权限认证体系,接口可扩展,标准接入方式。
cmq的管理系统,负责对实例的增删改查操作。
负责对监控统计的数据进行汇总,并统一上报到监控平台,并将部分重要统计数据落DB,组件采用主备方式。
access接入层在获取集群中leader monitor等信息时,需要去db中拉取这些信息,access具备水平扩展,对db压力过大怕造成影响,加一个缓冲层,当然也可以采用redis等缓存策略
模拟公有云的Barad系统,其作为接入层,组件是可以线性扩容,前面可以挂载负载均衡来平均流量,CTSDB 作为监控数据的存储层,对数据进行存储,采用ES集群作为底层引擎,很好的实现聚合等操作
集群方式提供,该模块进行鉴权,限流,确认某个实例所在的下层接入点即access,该组件进行多级缓存设计,local cache 如果不命中,则对数据进行redis 查找,如果依然不命中,对数据库进行查找,数据库如果挂了的话,那么本地备份的磁盘进行查找,5分钟dump一份q的接入点信息到本地文件
集群的真正接入层,不同的集群有不同的接入层,区分大小客户或者独占,以及区分queue 模式 和 topic模式 ,将接入层的HTTP协议转为pb 协议 ,处理broker集群leader切换等业务逻辑,具备水平扩展 ,协议适配的功能
对消息进行生产落盘消费的组件,采用raft一致性算法对数据进行处理,保证数据可靠安全不丢。
对主题模式的消息队列进行推送给订阅者的组件,具备水平扩展的能力
就别水平扩展能力,测试环境 broker 8c16g 三台,access接入层 4c16g routeproxy 4c16g
批量生产消息可以6k tps 考虑到每次处理16条消息,那么可以到8w+ 条消息每秒
极其方便的部署方式,只需要提供机器列表与安装路径等必要信息填写到部署配置文件中,执行以下脚本既可。
sh install_all.sh config.txt
私有化CMQ的推出,极大方便用户的使用,从一整套物料,文档,测试用例。也欢迎大家报名,申请使用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。