消息中间件

centos7部署rabbitMq

时光怂恿深爱的人放手 提交于 2019-12-06 05:22:51
目录 一、消息中间件相关知识... 1 1、概述... 1 2、消息中间件的组成... 1 3 消息中间件模式分类... 2 4 消息中间件的优势... 3 5 消息中间件应用场景... 4 6 消息中间件常用协议... 6 7 常见消息中间件MQ介绍... 7 7.1 RocketMQ.. 7 7.2 RabbitMQ.. 7 7.3 ActiveMQ.. 8 7.4 Redis. 8 7.5 Kafka. 8 7.6 ZeroMQ.. 9 8、主要消息中间件的比较... 9 二、部署RabbitMq. 10 1、安装一些依赖... 10 2、因为rabbitmq是基于erlang环境的,所以要先安装erlang环境... 10 3、安装rabbitMQ.. 11 一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。 2、消息中间件的组成 2.1 Broker 消息服务器,作为server提供消息核心服务 2.2 Producer 消息生产者,业务的发起方,负责生产消息传输给broker, 2.3 Consumer

消息中间件kafka+zookeeper集群部署、测试与应用(1)

我怕爱的太早我们不能终老 提交于 2019-12-05 22:07:48
业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求;A系统向B系统发送一个业务处理请求,因为某些原因(断电、宕机。。),B业务系统挂机了,A系统发起的请求处理失败;前端应用并发量过大,部分请求丢失或后端业务系统卡死。。。。这个时候,消息中间件就派上用场了--提升系统稳定性、可用性、可扩展性。 一、消息中间件 消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。 总体来说,消息中间件有以下作用:降低耦合、流量消峰(防浪涌)、可靠性传输、事件驱动 1.降低耦合:通过发布订阅的方式松耦合 我们以注册业务为例,注册成功会发送短信、邮件给用户来确认,传统架构模型是这样: 邮件业务和短信业务的代码是写在用户注册的流程里,无论是通过接口的方式来实现,还是远程调用的方式来实现,耦合度都很高,现在,新增一个需求,用户注册完成以后不发送邮件了,而是给用户“增加积分”,我们来分析这几种情况: 第一、都在一个业务系统内通过代码堆积、接口调用的方式来实现注册成功后的业务处理,我们需要改动注册代码,上线时需要启停应用,这种方式耦合度最高。 第二、通过远程调用的方式,代码类似如下 当我们要新增业务处理时,如下 还是要改动主流程代码

RabbitMQ消息中间件-安装(windows)

六眼飞鱼酱① 提交于 2019-12-05 20:52:49
一.下载 1.下载RabbitMQ http://www.rabbitmq.com/download.html 2.下载Erlang http://erlang.org/downloads RabbitMQ对Erlang版本的对应 二、 安装 1.安装 Erlang Erlang 安装完成 2. 安装 RabbitMQ RabbitMQ安装完成 启用管理工具 输入命令:rabbitmq-plugins enable rabbitmq_management 访问 http://localhost:15672/ 账号:guest 密码:guest 如果不能访问: C:\Users\angle\AppData\Roaming\RabbitMQ\db 里面的数据删除 再次安装一下Rabbitmq.exe; 注: 文件夹为隐藏 需要再文件夹选项中把隐藏文件夹打开显示 然后再执行 rabbitmq-plugins enable rabbitmq_management 来源: https://www.cnblogs.com/angel-devil/p/11937408.html

消息中间件 JMS入门

瘦欲@ 提交于 2019-12-05 19:30:01
1. JMS 入门 1.1 消息中间件 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行 分布式系统 的集成。通过提供 消息传递 和 消息排队 模型,它可以在分布式环境下扩展进程间的通信。 对于消息中间件,常见的角色大致也就有 Producer (生产者)、 Consumer (消费者) 常见的消息中间件产品 : ( 1 ) ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。 ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。我们在本次课程中介绍 ActiveMQ 的使用。 ( 2 ) RabbitMQ AMQP 协议的领导实现,支持多种场景。淘宝的 MySQL 集群内部有使用它进行通讯, OpenStack 开源云平台的通信组件,最先在金融行业得到运用。 ( 3 ) ZeroMQ 史上最快的消息队列系统 ( 4 ) Kafka Apache下的一个子项目 。特点: 高吞吐 ,在一台普通的服务器上既可以达到 10W/s 的吞吐速率;完全的分布式系统 。适合处理海量数据。 1.2 JMS 简介 1.2.1 什么是 JMS JMS ( Java  Messaging Service )是 Java 平台上有关面向消息中间件的技术规范

RocketMq 测试

a 夏天 提交于 2019-12-05 17:47:37
向长辈致敬 : 蠍 : 卢兄 像 RocketMq 这个怎么测试? 卢兄 : 中间件的测试,要结合中间件的特点来测试 蠍 : 特点什么意思 卢兄: 比如,这个工具是作为发布消息和消费消息的,具有解耦的特点 卢兄: 那么你可以通过做交易,去看他是否能够正常发布消息,消费消息 卢兄: 最重要的还是要去测试他的性能 蠍 : 性能怎么测试 卢兄: 让其消息队列积累大量的订单 卢兄: 查看队列是否会假死,消费速度( 消费 TPS) 和订单情况 卢兄: 等等 蠍 : 让其消息队列积累大量的订单???大量的订单是从接口灌输的吗? 卢兄: 是的 卢兄: 之前我测试过这个,基本上积累几百万订单的时候,各种问题都会出来 蠍 : 消费速度 怎么查看 卢兄: 有 rabbitMQ 的 admin 控制台 卢兄: 部署一下可以直接查看 蠍 : OK 来源: https://www.cnblogs.com/guixie/p/11938226.html

【消息中间件】kafka

荒凉一梦 提交于 2019-12-05 11:50:40
一、kafka整体架构 kafka是一个发布订阅模式的消息队列,生产者和消费者是多对多的关系,将发送者与接收者真正解耦; 生产者将消息发送到broker; 消费者采用拉(pull)模式订阅并消费消息; 二、生产者介绍 分区器:制定partition,按照msg key进行分区,保证同样key的消息投递到同一个partiton。例如,按照uid最后两位作为key,可以有100partiron,来保证相同uid的时间在一个partition中。 kafka发送消息是 批量发送+异步的方式来发送,性能提升,消息有序性无法保证; 三、消费者介绍 消费者是指调用poll方法的实体,可以是一个线程,也可以是一个服务; 为了避免消费者的浪费,消费者数量要小于partition数量; 3、拉取、处理消息模型 (1)同步消息处理:一个线程对应一个partiton,能够保证partiton内消息有序,消费性能受限于处理消息的速度。 (2)异步处理消息:一个线程负责拉取消息,线程池负责处理消息的模式,不能保证partition内消息有序,消息消费速度快,节省tcp连接开销。 四、消息有序性及重复性 1、消息乱序产生原因: (1)发送者:异步发送 + 发送失败重试导致的消息乱序 (2)接收者:单个拉消息的线程,多线程同时处理消息的先后顺序不同,导致消息被处理的时间乱序; 多个拉消息的线程

【中间件】Kafka 学习 01

妖精的绣舞 提交于 2019-12-05 06:46:01
KafKa 博客教程-1 博客教程-2 kafka简介 kafka起源 Kafka是由LinkedIn开发并开源的分布式消息系统,2012年捐赠给Apache基金会,采用Scala语言,运行在JVM中,最新版本2.0.1 下载地址 kafka设计目标 Kafka是一种分布式的,基于发布/订阅的消息系统 设计目标: 以时间复杂度O(1)的方式提供消息持久化能力,对TB级别的数据也能保证常数时间复杂度的访问性能; 高吞吐率。在低配机器上也能保证每秒10万条以上消息的传输; 支持kafka server间的消息分区,分布式消费,同时保证每个Partition内消息的顺序传输; 支持离线数据和实时数据处理 scale out,支持在线水平扩展,无需停机即可扩展机器 使用消息系统的好处 解耦,冗余,扩展性,灵活性&峰值处理能力,可恢复性,顺序保证,缓冲,异步通信 对比常用消息中间件 ActiveMQ RabbitMQ Kafka produce容错,是否丢失数据 有ack模型,也有事务模型,保证至少不会丢失数据。ack模型可能会有重复消息,事务模型保证完全一致 批量形式下可能会丢失数据;非批量形式下:1.使用同步模式可能会有重复数据,2.使用异步模式可能会丢失数据 consumer容错,是否丢失数据 有ack模型,数据不会丢失,但可能会有重复数据 批量形式下可能会丢数据。非批量形式下

RabbitMQ消息中间件总结一

旧城冷巷雨未停 提交于 2019-12-04 13:27:09
RabbitMQ是采用Erland语言实现AMQP(Advance Message Queuing Protrol,高级消息队列)的消息中间件。RabbitMQ是一个生产者和消费者模型,主要负责接收,存储和转发消息。传递过程类似于你将一个包裹送到邮局,邮局会暂存并最终将邮件通过快递员送到接受人的手上,RabbitMQ就类似于邮局、邮箱、邮递员组成的一个系统。 1.消息中间件是什么 消息:应用之间传送的数据(文本/json等) 消息中间件:message queue Middleware简称MQ。指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式的集成。通过提供消息传递和消息排队模型。实现进程间的通信 消息队列中间:可称为消息队列或者消息中间件,传递方式分为两种点对点(P2P,Point-to-Potint)模式和发布订阅(Pub/Sub)模式 P2P: 点对点模式基于队列 发送者发送消息到队列,消费者从队列中接收消息 可以异步传输 Pub/Sub: 定义内容节点发布和订阅消息,这个内容节点称为主题,主题可以看作消息传递的中介, 发布者将消息发送到主题,订阅者从主题中订阅消息,从而使订阅和发布相互独立,用于一对多广播 2.作用 解耦 冗余(存储) 扩展 消峰 可恢复性 顺序 缓存 异步 2.生产者、消费者、Broker 生产者:producer

消息中间件面试题:消息丢失怎么办?

♀尐吖头ヾ 提交于 2019-12-04 04:04:01
面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中 绝对不会把计费消息给弄丢 。 消息中间件各种面试题: 消息中间件面试题:消息丢失怎么办? 消息中间件面试题:消息队列的优缺点,区别 消息中间件面试题:消息中间件的高可用 消息中间件面试题:如何保证消息的顺序性 消息中间件面试题:如何保证消息不被重复消费 消息中间件面试题:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时呢? 消息中间件面试题:如果让你写一个消息队列,该如何进行架构设计? 面试题剖析 数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。 RabbitMQ 生产者弄丢了数据 生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 此时可以选择用 RabbitMQ 提供的事务功能,就是生产者 发送数据之前 开启 RabbitMQ 事务 channel.txSelect ,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.txRollback ,然后重试发送消息;如果收到了消息

微服当中的消息中间件面试题

本小妞迷上赌 提交于 2019-12-03 13:56:20
1.为什么要使用消息队列 答:这个问题,咱只答三个最主要的应用场景(不可否认还有掐的,但是只答三个主要的),即以下六个字:解耦、异步、削峰 (1)解耦 传统模式: 传统模式的缺点: 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 中间件模式的优点: 将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。 (2)异步 传统模式: 传统模式的缺点: 一些非必要的业务逻辑以同步的方式运行,太耗费时间。 中间件模式: 中间件模式的优点: (3)削峰 传统模式: 传统模式的缺点: 并发量大的时间,所有的请求直接怼到数据库,造成数据库连接异常 中间件模式: 中间件模式的优点: 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 2.使用了消息队列会有什么缺点 答: 1.系统可用性降低:你想呀,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。 因此,系统可用性会降低 2.系统复杂性增加:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑 的东西更多,刺痛复杂性增大。 3.消息队列如何选型? 答