消息队列的对比测试与RocketMQ使用扩展
消息队列的对比测试与RocketMQ使用扩展
- 原有的消息技术选型
- RocketMQ与kafka 测试对比
- 如何构建自己的消息队列服务
- RocketMQ扩展改造
- RocketMQ使用经验
1. 消息技术选型
1.1 消息历史

1.2 弃用kafka
- 随着业务增长,topic的数据增多,集群负载增大,性能下降。
- 我们用的是kafka 0.8.2那个版本,有个bug,会导致副本重新复制,复制的时候有大量的读,我们存储盘用的又是机械盘,导致磁盘IO过大,影响写入。

1.3 选择RocketMQ

2. 为什么选择RocketMQ
2.1 测试-topic数量的支持

2.2 测试-延迟
- Kafka

- RocketMQ

3. 如何构建自己的消息队列服务
3.1 问题与挑战

- 客户端语言。需要支持PHP、GO、Java、C++。
- 只有3个开发人员。
- 决定用RocketMQ,但是没看过源码。
- 上线时间紧,线上的kafka还有问题。
- 可用性要求高。
- 客户端语言支持不全,它主要支持Java,而我们还需要支持PHP、Go、C++,RocketMQ目前提供的Go的sdk我们测的有一些问题。
- 功能特别多,如tag、property、消费过滤、RETRY topic、死信队列、延迟消费之类的功能,非常丰富。但是这个对我们稳定性维护来说,挑战非常大。
- 使用Thrift RPC框架来解决跨语言的问题。
- 简化调用接口。可以认为只有两个接口,send用来生产,pull用来消费。

3.2 迁移方案

- 双写:Procucer Proxy同时写RocketMQ和kafka。
- 双读:Consumer Proxy同时从RocketMQ和kafka消费数据。
3.2.1 双写
- 客户端双写,如下图:

- Producer Proxy双写,如下图:

3.2.2 双读

4. RocketMQ扩展改造
5. RocketMQ使用经验
5.1 读老数据的问题
5.2 过期数据删除
- deleteCommitLogFilesInterval = 100(毫秒)。每删除10个commitLog文件的时间间隔。
- deleteConsumeQueueFilesInterval=100(毫秒)。每删除一个ConsumeQueue文件的时间间隔。
5.3 索引
消息队列的对比测试与RocketMQ使用扩展的更多相关文章
- 消息队列比较-rabbitmq/kafka/rocketmq/ONS
主要是比较这几种队列中间件: rabbitmq kafka rocketmq ONS 分以下几个维度来比较 高并发 毫无疑问KAFKA发消息的速度是最快的 ROCKETMQ/ONS次之 rabbitm ...
- 消息队列(七)--- RocketMQ延时发送和消息重试(半原创)
本文图片和部分总结来自于参考资料,半原创,侵删 问题 Rocketmq 重试是否有超时问题,假如超时了如何解决,是重新发送消息呢?还是一直等待 假如某个 msg 进入了重试队列(%RETRY_XXX% ...
- RabbitMQ消息队列(五)-安装amqp扩展并订阅/发布Demo(.Net Core版)
publish发布消息 新建一个Asp.Net Core控制台项目:PublishDemo 安装Nuget包 Install-Package RabbitMQ.Client 添加命名空间引用 usin ...
- 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化
前文目录链接参考: 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化 https://www.cnblogs.com/yizhiamumu/p/16694126.html 消息队列 ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- 消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?
「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security ...
- RabbitMQ,RocketMQ,Kafka 几种消息队列的对比
常用的几款消息队列的对比 前言 RabbitMQ 优点 缺点 RocketMQ 优点 缺点 Kafka 优点 缺点 如何选择合适的消息队列 参考 常用的几款消息队列的对比 前言 消息队列的作用: 1. ...
- 【框架学习与探究之消息队列--EasyNetQ(1)】
前言 本文欢迎转载,实属原创,本文原始链接地址:http://www.cnblogs.com/DjlNet/p/7603554.html 废话 既然都是废话了,所以大家就可以跳过了,这里是博主有事没事 ...
- .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...
- rabbit MQ 消息队列
为什么会需要消息队列(MQ)? 一.消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有 ...
随机推荐
- 大语言模型的应用探索—AI Agent初探!
前言 大语言模型的应用之一是与大语言模型进行聊天也就是一个ChatBot,这个应用已经很广泛了. 接下来的一个应用就是AI Agent. AI Agent是人工智能代理(Artificial Inte ...
- yarn -D和-S区别
-D和-S区别 安装的环境不同 -D是--save-dev的简写,会安装在开发环境中(production)中的devPendencies中 -S是--save的简写,会安装在生产环境中(develo ...
- [oeasy]python0015_十六进制_hexadecimal_字节形态_hex函数
十六进制(hexadecimal) 回忆上次内容 上次数制可以转化 bin(n)可以把数字转化为 2进制 binary 接收一个整数(int) 得到一个二进制数形式的字符串 编辑 数字在 ...
- oeasy教您玩转vim - 63 - # window分屏
窗口window 回忆上次 我们这次了解了缓冲区buffer ls可以查看buffer 如下是buffer缓冲的一些flag + 有修改未保存内容 - 可修改标签关闭 = 只读缓冲区 a 活跃缓冲 ...
- Known框架实战演练——进销存数据结构
系统主要包含商品信息.商业伙伴(客户.供应商)信息.业务单表头信息.业务单表体信息.对账单表头信息.对账单表体信息. 1. 商品信息(JxGoods) 该表用于存储公司商品信息. 名称 代码 类型 长 ...
- 《HelloGitHub》第 100 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- CSP-S提高组数据结构算法模板大合集
CSP-S 算法总结 2.2.1 基础知识与编程环境 无 2.2.2 C++ 程序设计 2 set/nultiset map/multimap deque/priority_queue STL 2.2 ...
- Jmeter函数助手38-isVarDefined
isVarDefined函数用于判断变量是否存在. 变量的名称:填入变量名称.如果变量存在返回true,如果不存在返回false 1.先一些定义变量 ${__isVarDefined(now)},no ...
- Jenkins 配置即代码(Configuration as Code)详解
1.概述 在<Centos7下安装配置最新版本Jenkins(2.452.3)>这篇博文中讲解了如何安装Jenkins,虽然在安装Jenkins时安装了一些必备的推荐插件,但在企业环境中使 ...
- 如何通过PowerShell批量修改O365用户的office phone属性值
我的博客园:https://www.cnblogs.com/CQman/ 如何通过PowerShell批量修改O365用户的office phone属性值? 需求信息: 组织中的O365用户在创建时, ...