消息队列

kafka入门

老子叫甜甜 提交于 2020-03-04 03:17:42
目录 一.kafka简介 kafka定义 消息队列 与传统消息队列的对比 kafka特点 二.kafka架构与功能 kafka拓扑结构图 消息发布和读取的两种模式 Kafka Topics Kafka Partition副本 Kafka Logs 稀疏存储 Kafka Log Cleanup 消息保障 消息传输 Kafka Cluster Mirroring 三.kafka关键流程 写流程 读流程 一.kafka简介 1.kafka定义 Kafka 是一个高吞吐、分布式、基于发布订阅的消息系统。 2.消息队列 Kafka是一个消息队列: 消息队列: 同步队列:两个服务端必须同时在线才能通信 异步队列:两个服务端不一定要同时在线就可以进行通信 3.与传统消息队列的对比 传统的消息队列: 大多是基于内存做的处理 如果队列当中的消息被消费了就会清除。 消息的发布和消费必须是同步的。 kafka: 基于磁盘做的处理 消费者可以对消息做多次订阅 消息的发布和消费可以是异步的 4.kafka特点 解耦:发布和订阅不需要同时在线 可恢复:一部分组件失效时,对整个系统的运行不影响 冗余:存在数据副本(磁盘中),可以对数据在有效期内进行持久化 调整峰值(缓冲):防止服务器和客户端收发速度不一致造成系统崩溃(消息太多消费者处理不过来,可以先放着) 灵活性:在线和下线之间灵活转换 二

什么是Kafka?

跟風遠走 提交于 2020-03-03 21:45:05
什么是Kafka? 通过Kafka的快速入门 https://www.cnblogs.com/tree1123/p/11150927.html 能了解到Kafka的基本部署,使用,但他和其他的消息中间件有什么不同呢? Kafka的基本原理,术语,版本等等都是怎么样的?到底什么是Kafka呢? 一、Kafka简介 http://kafka.apache.org/intro 2011年,LinkIn开源, November 1, 2017 1.0版本发布 July 30, 2018 2.0版本发布 参考官网的图: Kafka®用于构建实时数据管道和流式应用程序。它具有水平可扩展性、容错性、速度极快,并在数千家公司投入生产。 kafka官网最新的定义:Apache Kafka® is a distributed streaming platform 也就是分布式流式平台。 介绍: 三个特点: Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system. Store streams of records in a fault-tolerant durable way. Process streams of records as they

安装RabbitMQ

China☆狼群 提交于 2020-03-03 18:41:45
概述 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等。 安装Erlang 1.安装基础包:gcc ncurses-devel yum install gcc yum install ncurses-devel 2.去官网下载对应版本的Erlang (1)编译安装erlang (2)rpm包安装 由于本次安装erlang是为了支持rabbitmq的安装,并非为了Erlang的开发使用 所以选择rpm包安装 下载地址: http://www.rabbitmq.com/releases/erlang/ 根据环境不同选择不同版本 本机选用版本: erlang-19.0.4-1.el6.x86_64.rpm 3.安装Erlang rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm 4.安装完后输入“erl”以下提示即为安装成功: [root@localhost ~]#

RabbitMQ与SpringBoot整合

倾然丶 夕夏残阳落幕 提交于 2020-03-03 15:38:33
前文总结了Dubbo与SpringBoot的整合( https://www.cnblogs.com/cott/p/12373043.html ),本文基于这套框架,引入RabbitMQ消息队列。 1.在linux环境使用docker安装RabbitMQ //拉取镜像docker pull rabbitmq:management //启动镜像 docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management 安装成功后登陆控制台 2.生产者 pom.xml中引入RabbitMQ依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId>   

C#调用RabbitMQ实现消息队列

大城市里の小女人 提交于 2020-03-03 10:27:40
C#调用RabbitMQ实现消息队列 前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的。 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始。 关于消息队列 其实消息队列没有那么神秘,我们这样想一下,用户访问网站,最终是要将数据以HTTP的协议的方式,通过网络传输到主机的某个端口上的。 那么,接收数据的方式是什么呢?自然是端口监听啦。 那消息队列是什么就很好解释了? 它就是端口监听,接到数据后,将数据排列起来。 那这件事,我们不用中间件能做吗? 当然能做啦,写个TCP/UDP/Socket的软件就可以做啦。 举个简单的例子,如下图: 既然自己可以做消息队列,那为什么要用RabbitMQ? 因为,RabbitMQ成熟的开源中间件,可靠性有保证,bug少,性能也非常好。 而C#代码默认是使用托管内存的,所以,想写出媲美RabbitMQ性能的消息队列,就必须离开我们常用的托管内存,使用非托管内存,但这个代价就太大了;而且最终能否达到RabbitMQ的性能水平还是个未知数。 还有就是RabbitMQ除了基础的消息队列管理,还有很多很强大的额外功能,而自己开发消息队列,很难如此尽善尽美。 --------------------------------------------------------------------

kafka详细笔记

时间秒杀一切 提交于 2020-03-02 17:47:55
一、概念 kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 两种模式: 1.点对点: 一对一,消费者主动拉取数据,消息收到后清除。 2.发布/订阅模式: 一对多,消费者消费数据之后不会马上清除,可设置期限。 kafka是该模式下的基于消费者主动拉取消费的机制,比较浪费资源,一直轮询。 二、 来源: CSDN 作者: 东哥2020 链接: https://blog.csdn.net/dongfengpo25/article/details/104612369

[Android] android的消息队列机制

ε祈祈猫儿з 提交于 2020-03-02 12:30:19
android下的线程,Looper线程,MessageQueue,Handler,Message等之间的关系,以及Message的send/post及Message dispatch的过程。 Looper线程 我 们知道,线程是进程中某个单一顺序的控制流,它是内核做CPU调度的单位。那何为Looper线程呢?所谓Looper线程,即是借助于Looper和 MessageQueue来管理控制流的一类线程。在android系统中,application的主线程即是借助于Looper和 MessageQueue来管理控制流的。其实,不仅仅只有主线程可以用Looper和MessageQueue来管理控制流,其他的线程也一样可以。我 们可以先看一下android source code的注释中给出的一种Looper线程的实现方式: package com.example.messagequeuedemo; import android.os.Handler; import android.os.Looper; import android.util.Log; public class LooperThread extends Thread { public static final String TAG = MainActivity.TAG; private static final

消息队列的选择:kafka、rabbitmq、zeromq

此生再无相见时 提交于 2020-03-02 04:22:03
最近在做一个数据分析相关的工作,需求是将全国各地idc内的流量信息进行汇总和分析最后吐出一些安全策略,由于对时效性的要求比较高,大概每隔几秒就会有一次几十M的的数据需要传递到汇总服务器上去,而且随着业务的发展数据量还会越来越大,所以使用什么手段来做数据的传输就成为了一个关键的问题。 首先是可扩展性,如果使用标准socket进行传递的话随着数据量的扩大单点肯定会成为瓶颈,而且如果可用性要高的话,异步、缓存、重传等等都是需要考虑的要素,为了开速上线功能就要去几个开源的消息队列里挑选一下合适这个项目的了。 由于团队内的一些推荐和自己以前的经验,初步定下了kafka、rabbitmq、zeromq三个软件,这里主要介绍一下这三个软件各自的特点和功能,详细的使用说明和学习资料后面在补。 一、rabbitmq 首先是百科里的一段话,Rabbitmq是流行的开源消息队列系统,使用erlang语言进行开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。可以说从功能上rabbitmq基本上是符号这次项目要求的工具。 它的优点有: 1、完整的消息队列系统,支持多种消息队列模式,包括竞争消费; 2、基于AMQP 3、支持集群模式,扩展集群容量和性能比较方便,同时集成了集群的监控和管理; 4、支持消息的持久化; 缺点是: 1、需要学习比较复杂的接口和协议,比较耗费时间; 2

消息队列性能比较

本秂侑毒 提交于 2020-03-02 03:49:57
RabbitMQ,ActiveMq,ZeroMq比较 ==结论==:ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。 ==来源==: http://blog.x-aeon.com/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/ ==测试环境==: Model: Dell Studio 1749 CPU: Intel Core i3 @ 2.40 GHz RAM: 4 GB OS: Windows 7 64 bits 测试都是采用软件的 默认配置 。 ==测试结果==: 横轴为各个MQ,纵轴为时间,单位秒(s), 时间越少越好 。 ==比较==: 持久性 zeroMq不支持,activeMq和rabbitMq都支持 技术点:可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、problem tracker、可视化管理工具、插件系统、社区 RabbitMq最好,ActiveMq次之,ZeroMq最差。当然ZeroMq也可以做到,不过自己必须手动写代码实现,代码量不小。++可靠性中的: 持久性 、 投递确认 、 发布者证实 和 高可用性 ++。 高并发 从实现语言来看,RabbitMQ最高,原因是它的实现语言是天生具备高并发高可用的erlang语言

kafka术语

≯℡__Kan透↙ 提交于 2020-03-02 01:02:52
kafka 架构Terminology(术语) broker(代理)   Kafka集群包含一个或多个服务器,这种服务器被称为broker Topic   每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic(可以理解为队列queue或者 目录 )。物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处。   Partition   Parition是物理上的概念(可以理解为 文件夹 ),每个Topic包含一个或多个Partition。 Producer     生产者,负责发布消息到Kafka broker。 Consumer   消息消费者,向Kafka broker读取消息的客户端。 Consumer Group   每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。 Kafka拓扑结构 Topic & Partition  topic可以看成不同消息的类别或者信息流,不同的消息根据就是通过不同的topic进行分类或者汇总,然后producer将不同分类的消息发往不同的topic。对于每一个topic,kafka集群维护一个分区的日志