mq

ActiveMQ

ぃ、小莉子 提交于 2019-12-17 02:38:11
ActiveMQ 扩展出: API 接受发送 MQ 的高可用 MQ 的集群容错配置 MQ 的持久化 延时发送 签收机制 Spring/SpringBoot 整合 等 // MQ 都需要满足的技术 MQ : 消息中间件/消息队列 为什么要使用 MQ ? 解决了耦合调用、异步模型、抵御洪峰流量,保护了主业务,消峰。 二、安装ActiveMQ docker环境下安装 [ root@linksys ~ ] # docker pull docker.io/webcenter/activemq Using default tag: latest latest: Pulling from webcenter/activemq 7dcf5a444392: Pull complete 9eebba75a87f: Pull complete 1f0440d87cc7: Pull complete dacd0555c1b4: Pull complete b0f19aa05a94: Pull complete 4796f64423b2: Pull complete 5d994b710cb9: Pull complete 313a84c05d3c: Pull complete 1d6a562461f1: Pull complete e25558998b21: Pull complete

rabbitMq使用学习笔记

假装没事ソ 提交于 2019-12-16 23:23:24
rabbitmq的工作原理: MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。RabbitMQ官方地址:http://www.rabbitmq.com/ 开发中消息队列通常有如下应用场景: 1、任务异步处理。 将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。 2、应用程序解耦合 MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。 为什么使用RabbitMQ呢? 1、使得简单,功能强大。 2、基于AMQP协议。 3、社区活跃,文档完善。 4、高并发性能好,这主要得益于Erlang语言。 5、Spring Boot默认已集成RabbitMQ 了解amqp和jms JMS是java提供的一套消息服务API标准,其目的是为所有的java应用程序提供统一的消息通信的标准,类似java的 jdbc,只要遵循jms标准的应用程序之间都可以进行消息通信。它和AMQP有什么 不同,jms是java语言专属的消 息服务标准,它是在api层定义标准,并且只能用于java应用;而AMQP是在协议层定义的标准,是跨语言的

认识RabbitMQ

纵饮孤独 提交于 2019-12-16 23:23:08
1.RabbitMQ 介绍 1.1应用场景 MQ全称Message Queue,即消息队列,Rabbit Mq使用erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,是一种应用程序之间的通信的方法,消息队列在分布式系统开发中应用非常广泛。 其官网地址:http://www.rabbitmq.com a、任务异步处理: 将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高应用 程序的相应时间。 b、应用程序解耦合 mq相当于一个中介,生成方通过mq于消费方进行交互,作为两者中间的一个媒介,将应用程序进行解耦合。 c、市场上还有的消息队列 ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMq,RocketMq,redis. 2、RabbitMQ工作原理 2.1、RabbitMQ工作原理 下图是RabbitMQ的基本结构: 组成部分说明如下: Broker:消息队列服务进程,此进程包含两个部分Exchange(交换机)和Queue(队列)。 Exchange:消费队列交换机,按一定的规则将消息由路由转发到某个队列,对消息进行过滤转发。 Queue:消息队列,存储消息的队列,消息到达队列后并转发给特定的消费方。 Producer:消息生产方,即生产方客户端

MQ简易实现

末鹿安然 提交于 2019-12-16 19:16:41
消息处理中心: public class Broker { // 最大存储数 private final static int MAX_SIZE = 3; // 保存消息的容器 private static ArrayBlockingQueue<String> messageQueue = new ArrayBlockingQueue<>(MAX_SIZE); // 生产消息 public static void produce(String msg) { if (messageQueue.offer(msg)) { System.out.println("成功向消息中心发消息:" + msg + ",当前容量为:" + messageQueue.size()); } else { System.out.println("消息中心超负荷"); } System.out.println("-----------------"); } // 消费消息 public static String comsume() { String msg = messageQueue.poll(); if (msg != null) { System.out.println("得到消息:" + msg + ",当前容量为:" + messageQueue.size()); } else { System

Java-分布式系统---消息中间件

柔情痞子 提交于 2019-12-16 19:10:10
简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。当下主流的消息中间件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。其能在不同平台之间进行通信,常用来屏蔽各种平台协议之间的特性,实现应用程序之间的协同。其优点在于能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发。是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题 消息中间件的作用 消息中间件几大主要作用如下: 解耦 降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余(存储) 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕

玩转MQTT-阿里云之MQTT使用

南楼画角 提交于 2019-12-16 14:11:37
引言 前两年买一款物联网控制板,当时把玩了一阵之后,验证了下串口通讯、MODBUS协议实现、TCP/UDP/DNS/MQTT通讯(基于GPRS)后,就放到角落里吃灰了呵。 最近收到阿里云的优惠推送,说是什么每月百万条次使用免费,于是想起了这套吃灰装备,是不是也高大上一把,体验下支持高可用、高并发的阿里云,玩下阿里云的MQTT服务呢? 说干就干。 阿里云服务 许多人对云服务一知半解,以为知道个ECS/云主机,就是云服务的全部了。其实,云服务有许多内容,消息中间件服务也是其中一种。 本次我们要使用的MQTT消息服务也是消息中间件的一种。 笔者所知道的消息中间件 ActiveMQ Aopllo RabbitMQ Kafka RocketMQ 消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景,具体内容园中相关文章不少,笔者不再此献丑了呵。 本文主要对具体实战应用进行说明。 登录阿里云 首先,我们打开阿里云。 https://www.aliyun.com/ 右上角,登录 支持多种方式登录 可用阿里系旗下的淘宝、支付宝、钉钉等帐号登录而无需注册呵,真是方便啊 不过当中,还夹了一个微博登录,不知是什么个情况,本人不用这个,不管也罢。 选择淘宝登录 消息队列MQ 登录阿里云后,找到管理控制台,在如下位置,找到MQ相关服务 阿里云中的产品太多

双十一和双十二压测

為{幸葍}努か 提交于 2019-12-16 06:57:02
双十一和双十二配合压测人员进行了压测 简单说下心得 主要从两个方向: MQ和dubbo 1.关注MQ的TPS和消息堆积情况, 消息堆积是否存在倾斜情况 2.dubbo调用耗时情况, 不仅要关注调用外部的dubbo接口, 也要关注自身的查询接口等 要有清晰的分析思路, 而且还要有较强的排查能力 能够写出较复杂的正则表达式从日志中’挑选’出需要的内容 来源: CSDN 作者: 书唐瑞 链接: https://blog.csdn.net/qq_45859054/article/details/103484479

Posix 消息队列

≡放荡痞女 提交于 2019-12-15 09:12:58
文章目录 1. 基本特性 2. API介绍 2.1 创建或打开一个队列:mq_open 2.2 关闭队列:mq_close 2.3 删除队列:mq_unlink 2.4 队列的attr参数:mq_attr 2.5 向队列添加消息:mq_send 2.6 接收队列中的消息:mq_receive 2.7 消息队列由空变有时的异步消息通知:mq_notify 2.8 其他 1. 基本特性 消息队列可以认为是一个 消息链表 ,有足够权限的线程可以往队列里放消息,有足够读权限的线程可以从队列中读取消息。每个消息时一个记录,并且有一个 优先级 。 一个进程向消息队列写入消息之前,并不需要某个进程在该队列上等待该消息的到达 ,而管道和FIFO如果没有读者就开始写,则会产生SIGPIPE信号 管道和FIFO是 随进程的持续性 ,当管道和FIFO最后一次关闭发生时,仍在管道和FIFO中的数据会被丢弃。 消息队列是 随内核的持续性 ,即一个进程向消息队列写入消息后,然后终止,另外一个进程可以在以后某个时刻打开该队列读取消息。只要内核没有重新自举,消息队列没有被删除。 2. API介绍 2.1 创建或打开一个队列:mq_open // oflag: O_CREAT,O_EXCL,O_WRONLY, O_RDONLY,O_RDWR, O_NONBLOCK mqd_t mq_open ( const

高并发分布式事务的实现方法及替代方案

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-15 05:32:59
这两天正在研究微服务架构中分布式事务的处理方案, 做一个小小的总结, 作为备忘. 如有错误, 欢迎指正! 概念澄清 事务补偿机制: 在事务链中的任何一个正向操作, 都必须存在一个完全符合回滚规则的可逆操作, 这个操作通常叫做rollback或者cancel. CAP理论: CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统. 为什么CA不行呢? 因为没有P的话, 数据一致性会出现问题, 这是任何一个一致性系统不允许出现的情况. 幂等性: 简单的说, 业务操作支持重试, 不会产生不利影响. 常见的实现方式: 为消息额外增加唯一ID. BASE(Basically avaliable, soft state, eventually consistent): 是分布式事务实现的一种理论标准. 柔性事务 vs. 刚性事务 刚性事务是指强一致性事务, 例如单机环境下遵循ACID的数据库事务, 或者分布式环境中的2PC等. 柔性事务是指遵循BASE理论的事务, 通常用在分布式环境中, 常见的实现方式有: 异步确保型, 最大努力通知型. 最佳实践 先上结论, 再分别介绍分布式事务的各种实现方式. 如果业务场景需要强一致性,

三、四种集群模式

痴心易碎 提交于 2019-12-15 02:37:56
一、主备模式 也称为 Warren (兔子窝) 模式。实现 rabbitMQ 的高可用集群,一般在并发和数据量不高的情况下,这种模式非常的好用且简单。 也就是一个主/备方案,主节点提供读写,备用节点不提供读写。如果主节点挂了,就切换到备用节点,原来的备用节点升级为主节点提供读写服务,当原来的主节点恢复运行后,原来的主节点就变成备用节点,和 activeMQ 利用 zookeeper 做主/备一样,也可以一主多备。 HaProxy 配置: 注意了,上面的 rabbitMQ 集群节点配置 # inter 每隔 5 秒对 mq 集群做健康检查, 2 次正确证明服务可用,2 次失败证明服务器不可用,并且配置主备机制 二、远程模式 远程模式可以实现双活的一种模式,简称 shovel 模式,所谓的 shovel 就是把消息进行不同数据中心的复制工作,可以跨地域的让两个 MQ 集群互联,远距离通信和复制。 Shovel 就是我们可以把消息进行数据中心的复制工作,我们可以跨地域的让两个 MQ 集群互联。 如图所示,有两个异地的 MQ 集群(可以是更多的集群),当用户在地区 1 这里下单了,系统发消息到 1 区的 MQ 服务器,发现 MQ 服务已超过设定的阈值,负载过高,这条消息就会被转到 地区 2 的 MQ 服务器上,由 2 区的去执行后面的业务逻辑,相当于分摊我们的服务压力。 在使用了