mq

java架构之路-(MQ专题)RocketMQ从入坑到集群详解

别说谁变了你拦得住时间么 提交于 2019-12-03 21:13:07
  这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧。   早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到大规模的并发,导致了大规模宕机停运,当时还是IOE的服务架构,也就是没有我们的消息队列中间件,直接由IBM的小型机、Oracle数据库、EMC存储设备来提供服务的,可想而知,我们的大并发场景,IOE是无法承受的,RocketMQ是由我们的国内的阿里巴巴在2010年开始由我们的阿里云的王坚博士组件团队,来处理我们的去IOE服务架构,也就产生了我们的RocketMQ中间件,经历了阿里巴巴内部的不断尝试和实践下,在2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,现在已经在我们Apache软件基金会毕业了,并且成为了Apache软件基金会的顶级项目。可想而知RocketMQ还是很成熟很可靠的。   说到这也就是知道了我们的RocketMQ可以于我们的消息中间件来传递我们的消息,还有很多广泛的应用场景,比如我们的异步处理事件,分布式事务协调,对于高并发的削峰平谷处理,MQ的思想还是很出众的,下面我们来先一下RocketMQ的安装吧。 安装单机(运行环境JDK版本:1.8.0_221以上)   1.下载。rocketmq版本:rocketmq-all

认识并安装RabbitMQ(以Windows系统为例)

和自甴很熟 提交于 2019-12-03 14:08:52
一、初识RabbitMQ 百度百科有这么一句话: MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息, 而另一端则可以读取或者订阅队列中的消息。 MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义, 而MQ则是遵循了AMQP协议的具体实现和产品。 他的官网中用大大的黑粗字体写着: RabbitMQ is the most widely deployed open source message broker. 由此可见,RabbitMQ是一个消息中间件,生产者生成消息,消费者消费消息,它遵循AMQP(高级消息队列协议),是最广泛部署的开源消息代理。 另外,RabbitMQ是用Erlang语言实现的,它有几个概念: broker:消息队列服务器实体。   exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。   queue:消息队列,每个消息都会被投入到一个或多个队列。   binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。   routing Key:路由关键字,exchange根据这个关键字进行消息投递。   vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。   producer:消息生产者,就是投递消息的程序。   consumer

初识MQ

自作多情 提交于 2019-12-03 13:37:28
MQ:消息队列 MQ的衡量指标:服务性能、数据的存储、集群架构 1.ActiveMQ 一、介绍 1.ActiveMQ是Apache出品的,最流行的开源消息总线,是一种完全支持JMS规范的消息中间件 2.其丰富的api、多种集群架构模式使得它成为一种老牌的消息中间件,在中小企业中应用广泛。 二、模式 来源: https://www.cnblogs.com/zheaven/p/11797447.html

消息队列的一些知识

天涯浪子 提交于 2019-12-03 13:02:01
这里总结一些MQ(Message Queue,消息队列)的相关知识。 消息队列的优点 解耦 在传统模式下,系统之间的耦合性太强,比如系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码。 如果将消息写入消息队列,需要消息的系统自己从消息队列中订阅,在D系统接入的时候系统A也不需要做任何修改,达到了解耦的效果。 异步 在传统模式下,一些非必要的业务逻辑以同步的方式运行,需要等待上一个业务逻辑执行完毕才能开始执行下一个业务逻辑,耗费等待的时间。 如果将消息写入消息队列,非必要的业务逻辑就可以以异步的方式运行,加快了服务响应的速度。 削峰 在传统模式下,当并发量大的时候,所有的请求都会直接怼到数据库,造成数据库连接异常,甚至宕机。 如果将消息写入消息队列,则系统A可以慢慢地按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 消息队列的缺点 我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好预防。一个使用了MQ的项目,如果连MQ的缺点都没有考虑过,就把MQ引进去了,那就会给自己的项目带来风险。 系统可用性降低 你想啊,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加个消息队列进去,那消息队列挂了,系统也就挂了。用专业的术语来解释,就是系统的可用性降低了。 系统复杂性增加

系统分析记录-rocketmq导致jvm线程数量大

不羁的心 提交于 2019-12-03 11:29:46
一 . 系统说明: A系统阿里云平台,5台集群,每台:1-2核,内存6G,带宽上限2M,磁盘1G。 基于tomcat容器,主要业务消费rocketmq,再pegion(服务治理工具)调用第三方服务。 同时接入20个左右topic的mq,并每一次mq都会调用一次第三方服务,第三方服务有B,C,D等系统,单台mq的qps 有几个(4个)比较大,一小时几十万。其他的比较小。 二. 问题: 5台集群一台的线程数量达到2500+,触发公司线程报警。其他四台也很高(2000+),但是还没到阀值。 三 .初步分析: 1. 调用链 看到线程数量大的这台a机器,调用B系统有多个请求时间到15S(调用超时时间是5S),并有10个左右调用失败,正常的都是1S以下,但是B系统的日志显示所有请求都是1S以下返回的。目前没有思路。 2. threaddump 2.1 活跃线程: 226个running Threads,194 个 "New I/O worker": running, holding...",活跃线程大部分是在epoolwait,应该是等着接收mq消息。 2.2 全部线程: 1900+个线程都在线程池里空闲着,等待任务来执行。 大致是:ConsumeMessageThread_X 有275个,NettyClientPublicExecutor_X 1024个,600+ 个线程池模样线程(pool

Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比(转)

二次信任 提交于 2019-12-03 10:55:51
前言 在分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。 概念 MQ简介 MQ,Message queue,消息队列,就是指保存消息的一个容器。具体的定义这里就不类似于数据库、缓存等,用来保存数据的。当然,与数据库、缓存等产品比较,也有自己一些特点,具体的特点后文会做详细的介绍。 现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、MetaMQ,当然近年来火热的kafka,从某些场景来说,也是MQ,当然kafka的功能更加强大,虽然不同的MQ都有自己的特点和优势,但是,不管是哪种MQ,都有MQ本身自带的一些特点,下面,介绍MQ的特点。 MQ特点 1、先进先出 不能先进先出,都不能说是队列了。消息队列的顺序在入队的时候就基本已经确定了,一般是不需人工干预的。而且,最重要的是,数据是只有一条数据在使用中。 这也是MQ在诸多场景被使用的原因。 2、发布订阅 发布订阅是一种很高效的处理方式,如果不发生阻塞,基本可以当做是同步操作。这种处理方式能非常有效的提升服务器利用率,这样的应用场景非常广泛。 3、持久化 持久化确保MQ的使用不只是一个部分场景的辅助工具,而是让MQ能像数据库一样存储核心的数据。 4、分布式 在现在大流量

IBM MQ - FFDC - CSIException: JMSCS0002 when I try to run from console

匿名 (未验证) 提交于 2019-12-03 10:10:24
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I writed some JAR which has a wrap communication with IBM MQ. When I try use that JAR in other app it works only when I run it in IDE or in console as maven: "C:\Program Files\Apache\maven\bin\mvn.bat" -Dexec.args="-classpath %classpath xx.xxx.xxx.Application" -Dexec.executable="C:\Program Files\Java\jdk1.7.0_71\bin\java.exe" -Dmaven.ext.class.path=C:\Users\myUser\AppData\Roaming\NetBeans\8.0.1\maven-nblib\netbeans-eventspy.jar;C:\Users\myUser\AppData\Roaming\NetBeans\8.0.1\maven-nblib\netbeans-cos.jar -Dfile.encoding=UTF-8 org.codehaus.mojo

【转】分布式之消息队列复习精讲

眉间皱痕 提交于 2019-12-03 09:36:13
转自: https://www.cnblogs.com/rjzheng/p/8994962.html 引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。 小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消息。通俗点说,就是调调API。对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识。 庆幸的是两位朋友都很有上进心,于是博主写这篇文章,帮助他们复习一下关于消息队列中间件这块的要点 复习要点 本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性? 我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息队列的博客看看,再看本文,收获更大 正文 1、为什么要使用消息队列? 分析 :一个用消息队列的人,不知道为啥用,这就有点尴尬

Authorization Commands in MQ @windows

匿名 (未验证) 提交于 2019-12-03 09:14:57
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Below commands done for Authorization in Unix + MQ9. Want to review(is this a correct approach or not?) as well as How below commands can be achieved in Windows server? setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +connect +dsp +inq setmqaut -m TLSTEST.QM -t queue -p clientadmin -n '**' +put +get +browse +dsp +inq runmqsc TLSTEST.QM ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL) ALTER QMGR CHLAUTH(DISABLED) REFRESH SECURITY TYPE(CONNAUTH) Update on 29-Mar-2017 is setmqaut can be used as only to required

MQ Explorer - Could not load SWT library

匿名 (未验证) 提交于 2019-12-03 09:14:57
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Installed IBM MQ 8.0.0.4 developer instance in Linux VM (Centos). When launching MQ explorer, using command strmqcfg (getting the following error). !ENTRY org.eclipse.osgi 4 0 2016-01-14 13:33:43.226 !MESSAGE Application error !STACK 1 java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: /home/mqm/.eclipse/com.ibm.mq.explorer.ui.rcp.RcpApplication_8.0.0.201510171407_1624510073_linux_gtk_x86_64/configuration/org.eclipse.osgi/bundles/500/1/.cp/libswt-pi-gtk-4333.so (libgtk-x11-2.0.so.0: cannot open shared object file: No such