消息队列的对比测试与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)? 一.消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有 ...
随机推荐
- Spring的IOC容器类别概述
Spring的IOC该如何理解呢? 平常在一个方法当中,若要用到外部另一个类里的非静态方法,首先,需要先通过new一个对象,再根据这个对象去调用其方法.若只需要一两个对象还好,一旦涉及的外部对象多了, ...
- sora未来在哪里,是否改变世界?
什么是Sora?(Solo 社区投稿) Sora在日语中是天空的意思,是一种文本到视频的扩散模型,Sora与使用文本提示创建图像的 Dall-E 非常相似,Sora 使用文本提示创建短视频.Sora ...
- C++使用gnuplot-cpp库绘制图像
最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具. sudo apt-get install gnuplot sudo apt-get install gnuplot- ...
- 解决方案 | vb记住上次打开的文件夹
Private Sub Button_ImportBasicData_Click(sender As Object, e As EventArgs) Handles Button_ImportBa ...
- TokenObtainPairSerialize
TokenObtainPairSerializer是Django REST framework的SimpleJWT库提供的序列化器.它用于对用户凭据(如用户名和密码)进行序列化和验证,并在成功的身份验 ...
- AT_agc022_a 题解
洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定字符串 \(S\) , 仅包含互不相同的小写字母, 你需要找到仅包含互不相同的小写 ...
- odoo 开发入门教程系列-一个新应用
一个新应用 房地产广告模块 假设需要开发一个房地产模块,该模块覆盖未包含在标准模块集中特定业务领域. 以下为包含一些广告的主列表视图 form视图顶层区域概括了房产的重要信息,比如name,Prope ...
- springsecurity使用:登录与校验
首先是引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 如何查询MySQL存储的树形结构,层次结构
表定义如下 如果我们需要在表中查询这个树状结构,通过SQL语句,有两种查询方法: 1.通过inner自连接查询,适用于简单的结构 SELECT * FROM course_category AS on ...
- .NET 开源快捷的数据库文档查询和生成工具
前言 在实际项目开发中,需求变更和项目迭代是常态.要求我们能够迅速响应,对数据库结构进行相应的调整,如添加新表.更新现有表结构或增加字段等. 为了确保团队成员之间的信息同步,实时更新和维护数据库文档变 ...