topic

消息队列及常见消息队列介绍

孤者浪人 提交于 2019-11-27 02:50:48
消息队列及常见消息队列介绍 一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。 二、消息队列使用场景 消息队列在实际应用中包括如下四个场景: 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败; 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间; 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况; 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理; 下面详细介绍上述四个场景以及消息队列如何在上述四个场景中使用: 2.1 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。对这两个操作的处理方式有两种:串行及并行。 (1)串行方式:新注册信息生成后,先发送注册邮件

Apache Kafka(三)- Kakfa CLI 使用

[亡魂溺海] 提交于 2019-11-26 22:50:19
1. Topics CLI 1.1 首先启动 zookeeper 与 kafka > zookeeper-server-start.sh config/zookeeper.properties … INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory) INFO Expiring session 0x100ab41939d0000, timeout of 6000ms exceeded (org.apache.zookeeper.server.ZooKeeperServer) INFO Processed session termination for sessionid: 0x100ab41939d0000 (org.apache.zookeeper.server.PrepRequestProcessor) INFO Creating new log file: log.1d (org.apache.zookeeper.server.persistence.FileTxnLog) > kafka-server-start.sh config/server.properties … Socket connection established to

Kafka面试,看这篇文章就够了

为君一笑 提交于 2019-11-26 19:41:50
原文链接: https://mp.weixin.qq.com/s/zxPz_aFEMrshApZQ727h4g ** 引言 MQ(消息队列)是跨进程通信的方式之一,可理解为异步rpc,上游系统对调用结果的态度往往是重要不紧急。使用消息队列有以下好处:业务解耦、流量削峰、灵活扩展。接下来介绍消息中间件Kafka。 Kafka是什么? Kafka是一个分布式的消息引擎。具有以下特征 能够发布和订阅消息流(类似于消息队列) 以容错的、持久的方式存储消息流 多分区概念,提高了并行能力 Kafka架构总览 Topic 消息的主题、队列,每一个消息都有它的topic,Kafka通过topic对消息进行归类。Kafka中可以将Topic从物理上划分成一个或多个分区(Partition),每个分区在物理上对应一个文件夹,以”topicName_partitionIndex”的命名方式命名,该dir包含了这个分区的所有消息(.log)和索引文件(.index),这使得Kafka的吞吐率可以水平扩展。 Partition 每个分区都是一个 顺序的、不可变的消息队列, 并且可以持续的添加;分区中的消息都被分了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。 producer在发布消息的时候,可以为每条消息指定Key,这样消息被发送到broker时

springboot项目整合rabbitMq涉及消息的发送确认,消息的消费确认机制

孤者浪人 提交于 2019-11-26 19:31:53
1.引入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>2.在application.yml的配置: spring: rabbitmq: host: 106.52.82.241 port: 5672 username: yang password: Yangxiaohui227 virtual-host: / publisher-confirms: true #消息发送后,如果发送成功到队列,则会回调成功信息 publisher-returns: true #消息发送后,如果发送失败,则会返回失败信息信息 listener: #加了2下面2个属性,消费消息的时候,就必须发送ack确认,不然消息永远还在队列中 direct: acknowledge-mode: manual simple: acknowledge-mode: manual //为了统一管理所有的Mq消息,建一个类存储常量,消息的设计都基本会涉及(队列(queue),交换机(exchange),路由键(route)三个值) public class RabbitMqConstant { //下单发送消息 队列名

Kafka安装

╄→尐↘猪︶ㄣ 提交于 2019-11-26 19:19:52
一、安装 开放防火墙 9092 端口 修改配置文件 /conf/server-properties     broker.id=1 # 当前 server 的 ID     listeners=PLAINTEXT://192.168.34.160:9092     log.dirs=/usr/local/kafka/logs     num.partitions=2 # 根据机器数设置     zookeeper.connect=192.168.34.161:2181,192.168.34.160:2181     offsets.topic.replication.factor=3     transaction.state.log.replication.factor=3     transaction.state.log.min.isr=1 二、 创建 kafka topic ./kafka-topics.sh --create --zookeeper 192.168.34.160:2181,192.168.34.161:2181 --replication-factor 2 --partitions 2 --topic rebotRecharge partitions 分区数 : partitions :分区数,控制 topic 将分片成多少个 log 。可以显示指定

Kafka学习

流过昼夜 提交于 2019-11-26 16:05:32
一、下载Kafka 官网下载地址 http://kafka.apache.org/downloads 截至2019年7月8日 最新版本为 2.3.0 2.12为编译的scala版本 2.3.0为kafka版本 Scala 2.12 - kafka_2.12-2.3.0.tgz (asc, sha512) 解压 tar -xzf kafka_2.12-2.3.0.tgz cd kafka_2.12-2.3.0 二、启动服务 要先启动zookeeper kafka内置了一个 也可以不用 bin/zookeeper-server-start.sh config/zookeeper.properties [2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ... bin/kafka-server-start.sh config/server.properties [2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties) [2013-04-22 15

深入浅出系列之 -- kafka消费者的三种语义

旧时模样 提交于 2019-11-26 14:17:15
本文主要详解kafka client的使用,包括kafka消费者的三种消费语义at-most-once,at-least-once,和exact-once message,生产者的使用等。 创建主题 bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic normal --partitions 2 --rerelication-factor 1 生产者 private static Producer < String,String > createProducer(){ Properties props = new Properties(); props.put(“bootstrap.servers”,“localhost:9092”); props.put(“acks”,“all”); props.put(“retries”,0); //控制发送者在发布到Kafka之前等待批处理的字节数。 props.put(“batch.size”,10); props.put(“linger.ms”,); props.put(“key.serializer”,“org.apache.kafka.common.serialization.StringSerializer”); props.put(“value

关于RWS(real-world study)有感

好久不见. 提交于 2019-11-26 13:52:24
心浮气躁,走马观花,一句话憋不出来。mark一下刚看的,有时间重新看。 https://www.mediecogroup.com/method_topic_article_detail/301/ https://www.mediecogroup.com/method_topic_article_detail/304/ https://www.mediecogroup.com/method_topic_article_detail/303/?ty=methods https://www.mediecogroup.com/method_topic_article_detail/308/?ty=methods https://www.mediecogroup.com/method_topic_article_detail/355/ 来源: https://www.cnblogs.com/super-yb/p/11322835.html

kafka介绍(一)

▼魔方 西西 提交于 2019-11-26 13:47:29
1. kafka介绍(一) 1.1. 为何使用消息系统 数据持久化,数据缓冲,异步通信。保证数据不丢失,通过缓冲层来帮助任务最高效率的执行,可存储大量历史数据可以异步处理。 扩展性,解耦处理过程。增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。 灵活性,峰值处理能力。不会因为突发的超负荷的请求而完全崩溃。 可恢复性。系统的一部分组件失效时,不会影响到整个系统。加入队列中的消息仍然可以在系统恢复后被处理。 时序性。在大多使用场景下,数据处理的顺序都很重要。 1.2. 常用Message Queue对比 测试环境(203): Model: Dell Vostro 3800 CPU: Intel® Core™ i3-4170 CPU @ 3.70GHz RAM: 16 Gb OS: CentOS 7.3.1611 x86_64 RabbitMQ RocketMQ kafka 模式 发布订阅 发布订阅 发布订阅 持久化 支持(内存/硬盘) 支持(磁盘) 支持(磁盘) 事务 支持 支持 不支持 集群 支持 支持 支持 负载均衡 支持 支持 支持 堆积能力 磁盘容量+内存 磁盘容量 磁盘容量(水平扩展,不同broker可以存储在不同磁盘上) 消息丢失 不会丢失 理论上不会丢失 理论上不会丢失 消息重复 可以使用消息确认等机制控制 - 理论上会有重复

Kafka与ActiveMQ区别

家住魔仙堡 提交于 2019-11-26 12:43:17
Kafka 是LinkedIn 开发的一个高性能、分布式的消息系统,广泛用于日志收集、流式数据处理、在线和离线消息分发等场景。虽然不是作为传统的MQ来设计,在大部分情况,Kafaka 也可以代替原先ActiveMQ 等传统的消息系统。 Kafka 将消息流按Topic 组织,保存消息的服务器称为Broker,消费者可以订阅一个或者多个Topic。为了均衡负载,一个Topic 的消息又可以划分到多个分区(Partition),分区越多,Kafka并行能力和吞吐量越高。 Kafka 集群需要zookeeper 支持来实现集群,最新的kafka 发行包中已经包含了zookeeper,部署的时候可以在一台服务器上同时启动一个zookeeper Server 和 一个Kafka Server,也可以使用已有的其他zookeeper集群。 和传统的MQ不同,消费者需要自己保留一个offset,从kafka 获取消息时,只拉去当前offset 以后的消息。Kafka 的scala/java 版的client 已经实现了这部分的逻辑,将offset 保存到zookeeper 上。每个消费者可以选择一个id,同样id 的消费者对于同一条消息只会收到一次。一个Topic 的消费者如果都使用相同的id,就是传统的 Queue;如果每个消费者都使用不同的id, 就是传统的pub-sub.