rocketmq

rocketmq 延迟队列 vs redis延迟队列

百般思念 提交于 2020-03-21 16:40:10
3 月,跳不动了?>>> rocketmq 延迟队列 vs 延迟队列 实现思路是类似的: reids 实现思路: https://github.com/yangwenjie88/delay-queue rocketmq实现思路: https://blog.csdn.net/fei33423/article/details/51189430 区别: 1. rocketmq是再服务端内部实现 redis 是再客户端实现 客户端实现需要处理分布式消费相关的问题,rocketmq服务端实现,消费者分布式消费问题已经屏蔽 2. redis 通过有序zset rocketmq 通过时间维度轮询:private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h"; 来源: oschina 链接: https://my.oschina.net/u/866802/blog/1797959

RocketMQ之简单使用

亡梦爱人 提交于 2020-03-21 15:59:49
在之前我们是使用 RocketMQ 自带的程序来验证功能,今天我们自己实现下消息的生产和消费。 一、简单使用 1.1 引入依赖: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <!--和安装的 MQ 版本一致--> <version>4.7.0</version> </dependency> 1.2 新建配置类: public class RocketMQConfig { // 服务器地址 public static final String NAME_SERVER = "192.168.137.47:9876"; } 1.3 新建消费者: public class Producer { public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException { // 创建生产者对象,指明了生产者组名 DefaultMQProducer producer = new DefaultMQProducer("simple"); // 设置服务器地址 producer

RocketMQ之Producer

我的未来我决定 提交于 2020-03-21 15:57:21
一、Producer 发送消息的步骤 1) 设置 Producer 的 GroupName(Producer Group是一类 Producer 的集合); 2) 设置 InstanceName,当一个 JVM 需要启动多个 Producer 时,需要指定不同的 InstanceName 来区分,不显式设置时使用默认名称 "DEFAULT"; 3) 设置发送失败重试次数,默认值是2次,可能会出现重复消息,因此需要消费端进行控制; 4) 设置 NameServer 地址; 5) 组装数据并发送 二、不同类型的生产者 生产者向消息队列中写入消息,根据不同的业务场景需要采用不同的写入策略,如同步发送、异步发送、延迟发送和发送事务消息等。 2.1 同步发送 public class Producer { public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException { // 创建生产者对象 DefaultMQProducer producer = new DefaultMQProducer("producerGroupName"); // 设置实例化名称 producer.setInstanceName(

MQ调研梳理

霸气de小男生 提交于 2020-03-21 10:16:19
1.架构 主项 子项 rabbitMQ rocketMQ Kafka Hippo Tube 高可用 1:镜像队列。 2:集群。master/slave机制。 HA 同步双写和异步复制均支持 (同mafka) 1、中心节点:HA 高吞吐 性能 跟cpu 密切相关,5000是4核,5000左右。具体见 rabbitmq基准性能测试 异步刷盘 单机7万qps, 三台机器12万(网测) (同mafka) 未提及 单个Tube集群可稳定承载5w以上的客户端(生产者/消费者)数量,单台broker并发写入量可达10w TPS,使用1k大小的消息测试(机器配置:12核2.1GHz CPU带超线程、64G内存,Raid 5级磁盘阵列)时,可跑满千兆网卡带宽;Tube在绝大多数场景下可以将消息的延迟限制在毫秒级。 多机房部署 公司内无,shovel等插件支持 待确认 无 支持多 DC 部署 无 多机房容灾 公司内无,shovel等插件支持无 无 mirror maker 未提及 无 高可靠 事务性, 1:producer->broker,producer 回ack的时候会在刷到盘或者消费者消费到回ack。并且会持久化 2:broker->consumer, 有确认机制。也会持久化,但是消费完会删除数据。 异步复制可保证99%的消息不丢失,通过同步双写技术可以完全避免单点,同步双写会对性能有一定的影响

RocketMQ总结

怎甘沉沦 提交于 2020-03-18 18:53:08
架构 概念模型 最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结 User Guide RocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在2016年底捐赠给Apache开源基金会成为孵化项目,经过不到一年时间正式成为了Apache顶级项目;早期阿里曾经基于ActiveMQ研发消息系统, 随着业务消息的规模增大,瓶颈逐渐显现,后来也考虑过Kafka,但因为在低延迟和高可靠性方面没有选择,最后才自主研发了RocketMQ, 各方面的性能都比目前已有的消息队列要好,RocketMQ和Kafka在概念和原理上都非常相似,所以也经常被拿来对比;RocketMQ默认采用长轮询的拉模式, 单机支持千万级别的消息堆积,可以非常好的应用在海量消息系统中。 NameServer可以部署多个,相互之间独立,其他角色同时向多个NameServer机器上报状态信息,从而达到热备份的目的。 NameServer本身是无状态的,也就是说NameServer中的Broker、Topic等状态信息不会持久存储,都是由各个角色定时上报并 存储到内存中的(NameServer支持配置参数的持久化,一般用不到)。 为何不用ZooKeeper?ZooKeeper的功能很强大,包括自动Master选举等

互联网公司的面试官是如何360°无死角考察候选人的?[z]

落爺英雄遲暮 提交于 2020-03-16 08:15:27
[z]https://juejin.im/post/5c0e47ebf265da614e2be9a7 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己其实也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的东西,对不上号,这就很尴尬了。。。 因此,从这篇文章开始,笔者准备写一个长期连载的系列: 《Java进阶面试系列》 。主要跟大家聊聊中大型互联网公司Java面试中的一些热门、高频的技术问题。 希望这个系列的文章,能在年后金三银四的跳槽季中,助各位小伙伴一臂之力。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各个方面来聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,很多都是技术水平非常不错的兄弟。在面试候选人的时候,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了 熟悉消息中间件(MQ技术) 。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战

互联网公司的面试官是如何360°无死角考察候选人的?

拈花ヽ惹草 提交于 2020-03-12 11:39:16
作者: 石杉的架构笔记 一、写在前面 最近收到不少读者反馈,说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己也做了精心准备,网上搜集了不少Java面试题,然而实际去互联网公司面试才发现,人家问的,和你准备的对不上号,这就很尴尬了。 二、先来体验一个真实的面试连环炮 好,闲话不多说,我们进入正题! 本系列文章,我们将会从消息中间件、分布式缓存、分布式搜索、分布式架构、海量数据、NoSQL、高并发、高可用、高性能、数据库、JVM虚拟机等各方面聊一下面试中的高频技术问题。 现在一些中大型互联网公司的面试官,在面试候选人时,一般都会采取连环炮的策略来深挖一个候选人的技术水平。 举个例子,比如说看你简历上写了熟悉消息中间件(MQ技术)。那么可能我们就会有一个类似下面这样的连环炮式发问: 说说你们公司线上生产环境用的是什么消息中间件? 那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件? 你们的消息中间件技术选型为什么是RabbitMQ? 为什么不用RocketMQ或者是Kafka?技术选型的依据是什么? 你们怎么保证消息中间件的高可用性?避免消息中间件故障后引发系统整体故障? 使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失? 你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?

Docker安装RocketMQ

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-10 05:49:35
1、创建一个本地文件夹 在usr/local下,创建rktmq文件夹,当做rocketmq的本地映射目录。(位置或者文件名可自行定义) 2、安装 Namesrv 拉取镜像: $ docker pull rocketmqinc/rocketmq:4.4.0 启动namesrv: $ docker run - d - p 9876:9876 - v { RmHome } / data / namesrv / logs: / root / logs - v { RmHome } / data / namesrv / store: / root / store -- name rmqnamesrv - e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc / rocketmq:4 . 4 . 0 sh mqnamesrv {RmHome} 要替换成你的宿主机想保存 MQ 的日志与数据的地方,通过 docker 的 -v 参数使用 volume 功能,把第一步创建的本地目录映射到容器内的目录上。否则所有数据都默认保存在容器运行时的内存中,重启之后就又回到最初的起点。 docker run - d - p 9876:9876 - v / usr / local / rktmq / data / namesrv / logs: / root / logs - v

Rocketmq

旧城冷巷雨未停 提交于 2020-03-09 06:46:00
github https://github.com/apache/rocketmq 控制台: https://github.com/apache/rocketmq-externals Spring、Springboot整合: https://github.com/apache/rocketmq-spring 官网 http://rocketmq.apache.org 文章 性能测试: http://www.iocoder.cn/Performance-Testing/RocketMQ-benchmark/?vip 阿里云Rocketmq云服务介绍: https://help.aliyun.com/product/29530.html?spm=a2c4g.11186623.6.540.1f697e8066dKaQ 来源: CSDN 作者: Xisoo_x 链接: https://blog.csdn.net/qq_33451990/article/details/104735681

RocketMQ与kafka的区别

纵然是瞬间 提交于 2020-03-08 11:19:31
一、前言 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存储媒介,支持水平扩容。为了进一步降低成本,阿里中间件团队认为Notify可进一步优化。 2011年初,Linkedin开源了kafka, 阿里中间件团队在对kafka做了充分的review之后,被kafka的无限消息堆积能力、高效的持久化速度深深吸引,但同时发现kafka主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下,还有若干特性不满足。因此,阿里中间件团队基于Java重新编写了RocketMQ,定位于不仅限于日志场景的可靠消息传输。 目前,RocketMQ在阿里集团被广泛应用于订单、充值、交易、流计算、消息推送、日志流式处理、binlog分发等场景。 二、RocketMQ与kafka的不同 1、数据可靠性 RocketMQ:支持异步实时刷盘、同步刷盘、同步复制、异步复制。 kafka:使用异步刷盘方式,异步复制/同步复制。 总结: 1、RocketMQ支持kafka所不具备的“同步刷盘”功能,在单机可靠性上比kafka更高,不会因为操作系统Crash而导致数据丢失。 2、kafka的同步replication理论上性能低于RocketMQ的replication,这是因为kafka的数据以partition为单位,这样一个kafka实例上可能多上百个partition