mq

理解MQ

匿名 (未验证) 提交于 2019-12-02 23:49:02
1、定义 2、消息队列比较 参考文章: https://www.jianshu.com/p/068b8d1610ee 转载请标明出处: 理解MQ 文章来源: 理解MQ

MQ安装常见问题汇总

匿名 (未验证) 提交于 2019-12-02 23:43:01
MQ8.0版本安装步骤:关于linux版的mq安装网上很多,就不多赘述,安装的配置是容易出问题的,问了保证一致性和整体性,最好采用脚本。 export QmgrName=A #本地的队列管理器 也是java服务器远程连接的队列管理器名称 export QmgrName1=根据要求进行命名 echo "create MQ Qmgr: $QmgrName1 " crtmqm -ld /var/mqm/log -lc -lf 16384 -lp 25 -ls 5 $QmgrName1 echo "start MQ Qmgr: $QmgrName1 " strmqm $QmgrName1 #设置 队列管理器字符集 设置字符集 #echo "set CCSID of MQ Qmgr( $QmgrName1 ): $CCSID" 可以是819,1208,1381等 echo "set CCSID of MQ Qmgr( $QmgrName1 ):1208" echo "ALTER QMGR CCSID($CCSID)"|runmqsc $QmgrName1 #创建及设置 队列管理器的死信队列 设置死信队列,该队列如果没有要求可以不创建,主要作用是对于发送失败的消息存放地点 echo "set Dead Letter Queue of MQ Qmgr( $QmgrName1 ): SXDL "

MQ的面试题

匿名 (未验证) 提交于 2019-12-02 23:40:02
MQ的优点和缺点? 优点:解耦 异步,削峰 解耦: 所以需要用来解耦: 异步: 解决方法: 削峰: 解决方法是: 缺点:降低高可用性.增加系统的复杂程度.一致性问题 降低高可用的原因: 系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,现在又加入一个mq,万一mq挂掉了,整个系统也就崩溃了. 增加系统的复杂程度: 硬生生的增加一个MQ进来怎么保证不被重复消费?怎么保证不会出现消息丢失的情况?怎么保证消息传递的顺序性? 一致性问题: 系统A处理完以后直接返回成功了,人家都认为你这个请求成功了,但问题是,要是BCD三个系统成功了,结果C系统写库失败了,咋整?数据就不一致了. 如果发生丢消息的时候怎么解决? 同时还可以采用mq手动签到的方式,client真的接收到了消息,才签到,否则就不能签到,直接接收再签到. 怎么保证MQ不会重复发送消息? 采用的是一张表来记录消息处理的状态,在处理MQ发送的消息的时候,我先查看一下这张表,是不是处理过相同的消息.如果发送过,就不在发送. MQ重复消费的问题 1.首先产生mq重复消费的问题的原因 2.如何解决mq的重复消费问题 mq消息的顺序是怎么进行保证的? 消息被发送的时候保持顺序 消息被存储的时候保持和发送的顺序的一致 消息被消费的时候保持和存储的消息顺序一致. 1. 引入消息队列之后如何保证其高可用性? (1

MQ削峰限流

匿名 (未验证) 提交于 2019-12-02 23:40:02
MQ的作用 1)解耦 :在项目启动之初是很难预测未来会遇到什么困难的,消息中间件在处理过程中插入了一个隐含的,基于数据的接口层,两边都实现这个接口,这样就允许独立的修改或者扩展两边的处理过程,只要两边遵守相同的接口约束即可。 2)冗余(存储) :在某些情况下处理数据的过程中会失败,消息中间件允许把数据持久化知道他们完全被处理 扩展性:消息中间件解耦了应用的过程,所以提供消息入队和处理的效率是很容易的,只需要增加处理流程就可以了。 3)削峰 :在访问量剧增的情况下,但是应用仍然需要发挥作用,但是这样的突发流量并不常见。而使用消息中间件采用队列的形式可以减少突发访问压力,不会因为突发的超时负荷要求而崩溃 4)可恢复性 :当系统一部分组件失效时,不会影响到整个系统。消息中间件降低了进程间的耦合性,当一个处理消息的进程挂掉后,加入消息中间件的消息仍然可以在系统恢复后重新处理 5)顺序保证 :在大多数场景下,处理数据的顺序也很重要,大部分消息中间件支持一定的顺序性 6)缓冲 :消息中间件通过一个缓冲层来帮助任务最高效率的执行 7)异步通信 :通过把把消息发送给消息中间件,消息中间件并不立即处。 本文只讨论削峰填谷的应用场景: 举个业务场景的栗子,秒杀业务: 上游发起下单操作 下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻

cpu的分类

匿名 (未验证) 提交于 2019-12-02 23:40:02
1.英特尔系列:   性能:酷睿(Core) > 奔腾(Pentium) > 赛扬(Celeron)   a.Core i 系列:     第一位代表第几代CPU,一般越大,架构更优。i7-4770K>i7-3770K     第二位代表处理器等级,数字越大,性能越好。i7-4810mq>i7-4710mq     后缀:H,M,U,表示功耗,字母越小,功耗越大,性能越好。所以后缀:H > M > U     H:i7少见,i5的比较多     M:笔记本专用,双核,M前的数字代表电压高低。比较复杂觉得可以不用太比较     U:笔记本专用低电压,双核,性能比M差,其前的数字代表功耗。比较复杂觉得可以不用太比较     QM(MQ):笔记本专用,Q代表quad,即四核CPU。其前的数字代表功耗,数字越小,功耗越大,性能越好 比如3630qm>3635qm     HQ:HQ与MQ的区别在于封装方式不一样,MQ可拆卸,而HQ不可拆卸。HQ性能略好于MQ。比如:i7-4710hq>i7-4710mq     XM(MX):旗舰级CPU。     此外带有MQ,HQ,XM的通常要比带有H,M,U的性能要好很多!     还有一些CPU后面只跟了一个字母X,K,S,T的。     X代表顶级至尊版(6核12线程)     而K,S,T代表功耗,字母越小,功耗越大,性能越好。    

RocketMQ的使用

匿名 (未验证) 提交于 2019-12-02 23:32:01
1.如何发布? 1.1.业务层调用发送mq消息方法 asyncService.sendAliMqttMsg(); //相关配置 public static final String TOPIC_TEST = "qbkj_test_mqtt" ; public static final String TOPIC_QUEUE = "qbkj_queue_mqtt" ; public static final String TOPIC_OBSERVE = "qbkj_observe_mqtt" ; /** 排号类型-登记台 */ public static final String QUEUE_TYPE_REG = "1" ; /** 排号类型-接种台 */ public static final String QUEUE_TYPE_INJECT = "2" ; //TODO:登记台叫号 Map < String , Object > param = new HashMap < String , Object >(); param . put ( "type" , WebSocket . QUEUE_TYPE_REG ); param . put ( "reg" , callList ); param . put ( "queueno" , bsRegQueue . getQueue (

消息队列的面试题1(转)

北城以北 提交于 2019-12-02 23:11:01
消息队列的 面试题 1 问题: 为什么使用消息队列啊?消息队列有什么优点和缺点啊? kafka 、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景? 1.为什么使用消息队列啊? 通用回答是:我们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。 比较核心的有3个业务场景:解耦、异步、削峰 解耦:现场画个图来说明一下,A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了咋办?我要不要重发?我要不要把消息存起来?头发都白了啊。。。 不用MQ的系统耦合场景: 使用了MQ之后的解耦场景: 异步:现场画个图来说明一下,A系统接收一个请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3ms,BCD三个系统分别写库要300ms、450ms、200ms。最终请求总延时是3 + 300 + 450 + 200 = 953ms,接近1s,用户感觉搞个什么东西,慢死了慢死了。 不用MQ的同步高延时请求场景: 使用了MQ进行异步之后的接口性能优化: 削峰:每天0点到11点,A系统风平浪静

Python pymqi 连接 IBM MQ

匿名 (未验证) 提交于 2019-12-02 22:54:36
记录一下,环境基本信息是 # pymqi-1.7.2.post1 windows 7 64 ,Python2.7.15 ibmmq 7.0 client # pymqi-1.7.2.post1 windows 7 64 ,Python2.7.15 ibmmq 7.0 client import pymqi queue_manager = 'DZD_ZSSS_01_TST84' channel = 'SVRCONN' host = '100.100.100.84' port = '2403' queue_name = 'S_TMP' message = 'Hello from Python!' conn_info = '%s(%s)' % (host , port) qmgr = pymqi.connect(queue_manager , channel , conn_info) queue = pymqi.Queue(qmgr , queue_name) queue.put(message) queue.close() qmgr.disconnect() import sys import os import pymqi import time import re if len (sys.argv) != 5 : print sys.argv[ 0 ] + ' ' + 'queue

Linux 下 MQ 的安装

匿名 (未验证) 提交于 2019-12-02 21:53:52
在WebSphere MQ 7.1版本以前,同时只能有一个产品的安装实例,在UNIX和Linux系统上, /usr/lib,/usr/bin和/usr/include目录下会增加一些软连接,也指向了这个仅有的安装。 从7.1版本开始,便可以安装WebSphere MQ的多个版本。我们可以配置这些安装中的一个作为主安装。 -------------------------------------------------------------------------------- -优化内核参数 [root@mqtest opt]# vi /etc/sysctl.conf 或者直接修改 /proc/sys 文件夹下对应的配置文件 添加下列条目或将它们更改为所显示值,若系统参数本来就大于以下值,则无需调整。 kernel.msgmni = 1024 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 500 256000 250 1024 fs.file-max = 32768 net.ipv4.tcp_keepalive_time = 300 [root@mqtest opt]# sysctl -p 使修改立即生效 -----------------------------------------------------