消息队列

kafka简单介绍

£可爱£侵袭症+ 提交于 2020-02-05 09:26:58
kafka是什么 kafka中文官网 摘自官网: Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies. 意思就是:kafka是用于构建实时数据管道和流应用程序。具有横向扩展,容错,wicked fast(变态快)等优点,并已在成千上万家公司运行。 在我认为:kafka就是一个消息中间件 什么又是消息中间件呢? 可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以com组件的方式提供),开放给第三方程序使用。 以上是百度解释 就是我们用a这个软件的时候要用c这个里面的东西,但是我们没有去直接调用,而是通过b这个软件去使用c里面的东西 常见的消息中间件产品: 1.ActiveMQ   ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。我们在本次课程中介绍

Kafka原理

泄露秘密 提交于 2020-02-05 09:13:46
Kafka有两种模式: 点对点模式:消费者主动从Kafka中定时轮询的拉取数据,一条数据只会发送给customer group中的一个customer进行消费。 发布订阅者模式:kafka主动推送数据到所有订阅了该类信息的客户端。 Kafka中通过控制Customer的参数{group.id}来决定kafka是什么数据消费模式,如果所有消费者的该参数值是相同的,那么此时的kafka就是队列模式,数据只会发送到一个customer,此时Kafka类似于负载均衡;否则就是发布订阅模式; 在队列模式下,可能会触发Kafka的Consumer Rebalance kafka是依赖Zookeeper的,kafka中节点的状态信息和消费者的消费消息的状态信息会保存在zookeeper中,且zookeeper只保存这两点信息 kafka中存在几个概念:Broker、Topic、Partition Broker:为一个节点,每开启一个kafka服务就会有一个Broker Topic:为主题。kafka中消息是分类别的,kafka是通过topic来为消息分类的,每一个topic代表着一种消息类型。同一个topic可以存在于多个Broker中 Partition:为分区,分区存在于topic中,每个topic中会存在多个分区。在Kafka中分区是操作的最小单元

RabbitMQ全套资源免费下载

。_饼干妹妹 提交于 2020-02-05 05:12:19
RabbitMQ全套资源免费下载 资源绝对免费 链接: https://pan.baidu.com/s/1WDpVqK-EB-d-uYw9f1irmw 提取码:iu1r 该资源里面包含了RabbitMQ视频,RabbitMQ项目,以及总结文档 长期永久有效 RabbitMQ项目——my-rabbit-mq 该项目是一个Maven项目,第一次打开需要下载架包。其中包含了五中消息队列,以及大量注释,若是看不懂,差评没毛病 RabbitMQ总结文档 该文档概括了消息队列以及对五中消息队列进行一一讲解 RabbitMQ的思维导图 这个思维导图一步一步教你如何掌握RabbitMQ。 注意:思维导图需要下载安装mindmanager才能打开 来源: CSDN 作者: 跑龙套的程序员 链接: https://blog.csdn.net/TanGuozheng_Java/article/details/104067355

RabbitMQ消息模型

烂漫一生 提交于 2020-02-04 16:12:06
   rabbitmq采用的是队列的消息模型,利用队列先进先出的特性从而保证了消息的严格有序性,但是队列中没有读取这个操作,读取即为出队,也就是删除, 所以每个消费者都需要对应自己的队列去读取数据 。   下图为rabbitmq的消息模型:   1、生产者只负责生产消息发送给exchange,不需要关心消费者以及消费者数量。   2、exchange 根据其路由的配置将消息投递到相应队列   3、新增消费者需新增队列并在exchangge中配置,后根据消息先进先出原则按严格顺序读取消息  由此可见rabbitmq每个消费者都需要来维护自己的队列,这样虽然增加内存,但是也简单粗暴的解决的消息的顺序性等问题。    来源: https://www.cnblogs.com/volare/p/12259722.html

消息队列选择

给你一囗甜甜゛ 提交于 2020-02-04 12:23:07
选择消息队列的考量维度:可靠性,性能,高可用,功能,是否开源以及社区活跃程度 rabbitmq:   优点:轻量,易部署和使用,基于exchange模块可灵活配置路由规则   缺点:性能和吞吐量较差,每秒处理几万数据量;开发语言小众,不利于二次开发 rocketmq:   优点:可靠性,稳定性,性能很好每秒处理十几万数据量,java语言开发利于二次开发,有活跃的社区   缺点:兼容性较差 kafka:   优点:拥有强大的性能及吞吐量,兼容性很好   缺点:由于“攒一波再处理”导致延迟比较高 来源: https://www.cnblogs.com/volare/p/12258817.html

消息队列常有使用场景

谁说我不能喝 提交于 2020-02-04 07:46:31
业务工作流,每个业务节点之间需要通信传输信息,但是每个节点的接受、发送速度以及使用这些信息的时间都各不相同。 以巧克力生产工作流为例: 传送带解决了半成品运输问题,仓库可以暂存一些半成品,解决了上下游速度不一致的问题。 消息队列的常用使用场景: 1、异步处理 秒杀系统中,大多需要使用到消息队列,而秒杀系统中核心问题是:尽可能多地处理短时间内的海量请求。 处理一个秒杀请求包含了很多步骤: 风险控制; 库存锁定; 生成订单; 短信通知; 更新统计数据 能否决定秒杀成功,实际上只有 风险控制和库存锁定 这 2 个步骤,只要用户的秒杀请求通过风险控制,并在服务端完成库存锁定,就可以给用户返回秒杀结果了,对于后续的生成订单、短信通知和更新统计数据等步骤,并不一定要在秒杀请求中处理完成。 所以当服务端完成前面 2 个步骤,确定本次请求的秒杀结果后,就可以马上给用户返回响应,然后把请求的数据放入消息队列中,由消息队列异步地进行后续的操作。 以用户注册过程为例 用户注册后,需要发注册邮件和注册短信 (1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 (2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 (3)引入消息队列

Kafka架构图

谁说我不能喝 提交于 2020-02-04 06:24:13
美图欣赏: 自己画的一张流程图: 1)Producer :消息生产者,就是向kafka broker发消息的客户端。 2)Consumer :消息消费者,向kafka broker取 消息的客户端 3)Topic :可以理解为一个队列。 4) Consumer Group (CG):kafka提供的可扩展且具有容错性的消费者机制。既然是一个组,那么组内必然可以有多个消费者或消费者实例(consumer instance),它们共享一个公共的ID,即group ID。组内的所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(partition)。当然,每个分区只能由同一个消费组内的一个consumer来消费。 5)Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。 6)Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。 7

RabbitMQ 如何保证消息不丢失?

假如想象 提交于 2020-02-04 01:52:32
RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性。 下面来介绍下,如何保证消息的绝对不丢失的问题,下面分享的绝对干货,都是在知名互联网产品的产线中使用。 1.消息持久化 2.ACK确认机制 3.设置集群镜像模式 4.消息补偿机制 第一种:消息持久化 RabbitMQ 的消息默认存放在内存上面,如果不特别声明设置,消息不会持久化保存到硬盘上面的,如果节点重启或者意外crash掉,消息就会丢失。 所以就要对消息进行持久化处理。如何持久化,下面具体说明下: 要想做到消息持久化,必须满足以下三个条件,缺一不可。 1) Exchange 设置持久化 2)Queue 设置持久化 3)Message持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息 第二种:ACK确认机制 多个消费者同时收取消息,比如消息接收到一半的时候,一个消费者死掉了(逻辑复杂时间太长,超时了或者消费被停机或者网络断开链接),如何保证消息不丢? 这个使用就要使用Message acknowledgment 机制,就是消费端消费完成要通知服务端,服务端才把消息从内存删除。 这样就解决了,及时一个消费者出了问题,没有同步消息给服务端,还有其他的消费端去消费,保证了消息不丢的case。 第三种:设置集群镜像模式

RabbitMQ集成及使用

╄→гoц情女王★ 提交于 2020-02-03 16:18:51
一、下载并配置RabbitMQ https://www.cnblogs.com/vipstone/p/9275256.html 二、使用 1、在POM中添加依赖 <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.6.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency> 2、RabbitUtil package RabbitMQ实现.RabbitUtil; import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client.*; /* * author: hubz * datetime: 2020/2/2

分布式消息队列Kafka

我只是一个虾纸丫 提交于 2020-02-03 12:16:37
一.Kafka架构 producer:生产馒头 consumer:吃馒头 broker:篮子来装馒头 topic:馒头的标签 馒头A,馒头B 二.安装zookeeper 配置环境变量 zoo.cfg 配置tmp路径(自己定义位置) 默认端口2181 启动:./zkServer.sh start 三.安装Kafka 配置环境变量 server.properties 配置: broker.id(要唯一,一个Kafka相当于一个篮子) 接听端口默认 9092 log.dirs(配置tmp路径,自己定义位置) hostname=hadoop000 zookeeper.connection=hadoop000:2181 启动:kafka-server-start.sh $KAFKA_HOME/config/server.properties 创建topic:kafka-topics.sh --create --zookeeper hadoop000:2181 --replication-factor 1 --partitions 1 --topic test 查看topic:kafka-topics.sh --list --zookeeper hadoop000:2181 发送消息:kafka-console-producer.sh --broker-list hadoop000:9092