消息队列

Kafka学习笔记(一)

▼魔方 西西 提交于 2019-12-25 03:46:02
Kafka学习笔记(一)简介 1.kafka简介: Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者, 基于zookeeper协调的分布式日志系统 (也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。 2. 应用场景: 一:消息系统 二:日志收集系统 三:指标 - Kafka通常用于操作监控数据。 这涉及聚合来自分布式应用程序的统计信息,以产生操作数据的集中馈送。 四:日志聚合解决方案 - Kafka可用于跨组织从多个服务收集日志,并使它们以标准格式提供给多个服务器。 五:流处理 - 流行的框架(如Storm和Spark Streaming)从主题中读取数据,对其进行处理,并将处理后的数据写入新主题,供用户和应用程序使用。 Kafka的强耐久性在流处理的上下文中也非常有用。 3. 设计理念: 一

消息队列-RabbitMQ

狂风中的少年 提交于 2019-12-25 02:55:47
什么是消息队列? 消息队列是一种在应用(服务)间的通讯方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。 常用的消息队列有哪些? RabbitMQ Kafka ActiveMQ RocketMQ(阿里的) RabbitMQ实战 安装RabbitMQ 方式1:windows下安装包安装 因为RabbitMQ 是一个由 Erlang 语言开发的,所有安装之前要安装Erlang: Erlanng官网 去RabbitMQ下载安装包: RabbitMQ官网 开始安装-RabbitMQ安装包进行傻瓜式安装即可 在windows下配置erlang环境变量 进入RabbitMQ的安装bin目录,执行命令: rabbitmq-plugins enable rabbitmq_management---安装管理插件 方式2:docker安装(笔者推荐) docker pull rabbitmq:3.7.7-management :拉取镜像 docker run -d -p 15672:15672(管理界面端口映射) -p 5672:5672(TCP端口映射,服务通过此端口与RabbitMQ建立TCP连接,完成异步消息监听和发送) --name

php和redis怎么实现消息队列

女生的网名这么多〃 提交于 2019-12-25 00:23:21
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取。本文主要和大家分享php和redis如何实现消息队列,希望能帮助到大家。 redis实现消息队列步骤如下: 1).redis函数rpush,lpop 2).建议定时任务入队列 3)创建定时任务出队列 文件:demo.php插入数据到redis队列 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $password = '123456'; $redis->auth($password); $arr = array('h','e','l','l','o','w','o','r','l','d'); foreach($arr as $k=>$v){ $redis->rpush("mylist",$v); } 文件:index.php定时扫描出队列 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $password = '123456'; $redis->auth($password); //list类型出队操作 $value = $redis->lpop('mylist'); if($value){ echo "出队的值".$value; }else{

分布式进阶(二十) Kafka简介

北战南征 提交于 2019-12-24 22:01:43
一、简介 1.1 概述 Kafka是最初由Linkedin公司开发,是一个 分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统) ,常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是: 日志收集系统和消息系统。 Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展 1.2 消息系统介绍 一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。 Kafka就是一种发布-订阅模式。 1.3 点对点消息传递模式 在点对点消息系统中,消息持久化到一个队列中。此时

php和redis怎么实现消息队列

回眸只為那壹抹淺笑 提交于 2019-12-24 21:34:26
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取。本文主要和大家分享php和redis如何实现消息队列,希望能帮助到大家。 redis实现消息队列步骤如下: 1).redis函数rpush,lpop 2).建议定时任务入队列 3)创建定时任务出队列 文件:demo.php插入数据到redis队列 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $password = '123456'; $redis->auth($password); $arr = array('h','e','l','l','o','w','o','r','l','d'); foreach($arr as $k=>$v){ $redis->rpush("mylist",$v); } 文件:index.php定时扫描出队列 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $password = '123456'; $redis->auth($password); //list类型出队操作 $value = $redis->lpop('mylist'); if($value){ echo "出队的值".$value; }else{

RabbitMQ官方中文入门教程(PHP版) 第一部分:Hello World

ε祈祈猫儿з 提交于 2019-12-24 18:20:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ是一个邮箱、邮局、邮递员。RabbitMQ和邮局的主要区别是,它处理的不是纸,而是接收、存储和发送二进制的数据—— 消息 。一般提到RabbitMQ和消息,都用到一些专有名词。 生产(Producing) 意思就是发送。发送消息的程序就是一个 生产者(producer) 。我们一般用”P”来表示: 队列(queue) 就是邮箱的名称。消息通过你的应用程序和RabbitMQ进行传输,它们能够只存储在一个 队列(queue) 中。 队列(queue) 没有任何限制,你要存储多少消息都可以——基本上是一个无限的缓冲。多个 生产者(producers) 能够把消息发送给同一个队列,同样,多个 消费者(consumers) 也能攻从一个 队列(queue) 中获取数据。队列可以化城这样(图上是队列的名称): 消费(Consuming) 和获取消息是一样的意思。一个 消费者(consumer) 就是一个等待获取消息的程序。我们把它画作”C”: Hello World! (使用pika 0.9.5 Python客户端) 我们的“Hello

RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

半世苍凉 提交于 2019-12-24 18:20:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 发布/订阅 在上篇教程中,我们搭建了一个工作队列。每个任务之分发给一个工作者(worker)。在本篇教程中,我们要做的之前完全不一样——分发一个消息给多个消费者(consumers)。这种模式被称为“发布/订阅”。 为了描述这种模式,我们将会构建一个简单的日志系统。它包括两个程序——第一个程序负责发送日志消息,第二个程序负责获取消息并输出内容。 在我们的这个日志系统中,所有正在运行的接收方程序都会接受消息。我们用其中一个接收者(receiver)把日志写入硬盘中,另外一个接受者(receiver)把日志输出到屏幕上。 最终,日志消息被广播给所有的接受者(receivers)。 交换器(Exchanges) 前面的教程,我们发送消息到队列并从中取出消息。现在是时候介绍RabbitMq中完整的消息模型了。 让我们简单的概括一下之前的教程: 发布者(producer) 是发布消息的应用程序。 队列(queue) 用于消息存储的缓冲。 消费者(consumer) 是接收消息的应用程序。 RabbitMQ消息模型的核心理念是:发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。 发布者(producer)只需要把消息发送给一个 交换器

消息队列的简单使用

柔情痞子 提交于 2019-12-24 18:11:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> /// <summary> /// 创建消息队列 /// </summary> /// <param name="name">消息队列名称</param> /// <returns></returns> public void CreateNewQueue(string name) { if (!System.Messaging.MessageQueue.Exists(".\\private$\\" + name))//检查是否已经存在同名的消息队列 { System.Messaging.MessageQueue mq = System.Messaging.MessageQueue.Create(".\\private$\\" + name); mq.Label = "private$\\" + name; Response.Write("创建成功!<br/>"); } else { //System.Messaging.MessageQueue.Delete(".\\private$\\" + name);//删除一个消息队列 Response.Write("已经存在<br/>"); } } private void sendSimpleMsg() { //实例化MessageQueue

RabbitMq学习——Springboot整合rabbitmq之direct直连配置(二)

被刻印的时光 ゝ 提交于 2019-12-24 15:09:55
一、简介 direct 直连方式,也称为精确匹配。根据一个限定的routingkey,转发器向指定的消息队列推送消息。 二、配置 2.1、springboot整合rabbitmq的配置概述 1、springboot整合rabbitmq,基本上都是声明队列的名称各项属性等。 2、如果有交换机,则需要将队列和交换机按照指定的routingkey进行绑定操作。 所以我们接下来的配置项,需要先声明相关参数: #自定义配置mq相关参数信息 exchange : directExchange : name : directExchange durable : true autoDelete : false routingKey : direct_queue_routingKey spring : rabbitmq : host : 127.0.0.1 port : 5672 username : xiangjiao password : bunana virtual-host : /xiangjiao publisher-confirms : true #开启发送确认 publisher-returns : true #开启发送失败回退 #开启ack listener : simple : acknowledge-mode : manual #采取手动应答 concurrency : 1 #

RabbitMQ windows 安装

为君一笑 提交于 2019-12-24 06:59:52
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1、安装Erlang 下载地址: https://www.erlang.org/downloads 本文选择OTP 21.0.1 Windows 64-bit Binary File (91707927) : http://erlang.org/download/otp_win64_21.0.1.exe 设置环境变量,新建ERLANG_HOME 修改环境变量path,增加Erlang变量至path,%ERLANG_HOME%\bin; 打开cmd命令框,输入erl 至此,Erlang 安装完成 2、安装rabbitmq 下载地址: http://www.rabbitmq.com/download.html exe安装地址: http://www.rabbitmq.com/install-windows.html 解压缩安装地址: http://www.rabbitmq.com/install-windows-manual.html 本文选择解压缩安装 rabbitmq-server-windows-3.7.7.zip 下载地址: