topic

【转帖】全网最通俗易懂的Kafka入门

跟風遠走 提交于 2019-12-08 19:09:27
全网最通俗易懂的Kafka入门 http://www.itpub.net/2019/12/04/4597/ 前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用。 我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦。本篇文章对Kafka入门,希望对大家有所帮助。 本文知识点提前预览: 这篇文章花了我很长时间画图,目的是希望以最通俗易懂的方式带大家入门,如果觉得不错,希望能给我点个赞! 一、什么是Kafka? 首先我们得去官网看看是怎么介绍Kafka的: https://kafka.apache.org/intro 在收集资料学习的时候,已经发现有不少的前辈对官网的介绍进行翻译和总结了,所以我这里就不重复了,贴下地址大家自行去学习啦: https://scala.cool/2018/03/learning-kafka-1/ https://colobu.com/2014/08/06/kafka-quickstart/ 我之前写过的消息队列入门文章也提到了,要做一个消息队列可能要考虑到以下的问题: 使用消息队列不可能是单机的(必然是分布式or集群)

Go之NSQ

痴心易碎 提交于 2019-12-08 17:34:28
NSQ   NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。 NSQ介绍 NSQ 是Go语言编写的一个开源的 实时分布式内存消息队列 ,其性能十分优异。 NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 NSQ的应用场景 通常来说,消息队列都 适用以下场景。 异步处理 参照下图利用消息队列把业务流程中的非关键流程异步化,从而显著降低业务请求的响应时间。 应用解耦 通过使用消息队列将不同的业务逻辑解耦,降低系统间的耦合,提高系统的健壮性。后续有其他业务要使用订单数据可直接订阅消息队列,提高系统的灵活性。 流量削峰 类似秒杀(大秒)等场景下,某一时间可能会产生大量的请求,使用消息队列能够为后端处理请求提供一定的缓冲区,保证后端服务的稳定性。 安装 官方下载页面 根据自己的平台下载并解压即可。 NSQ组件 nsqd nsqd是一个守护进程,它接收、排队并向客户端发送消息。 启动 nsqd , 指定 -broadcast-address=127.0.0.1 来配置广播地址 $./nsqd -broadcast-address=127.0.0.1 如果是在 搭配 nsqlookupd

Apache Pulsar IO之CDC Debezium Connector (SQLServer)

*爱你&永不变心* 提交于 2019-12-08 11:52:12
文章目录 启动Pulsar 创建pulsar-io-debezium-sqlserver-1.0.nar文件 创建maven项目 添加依赖 编写DebeziumSqlServerSource类 编写debezium-sqlserver-source-config.yaml文件 编写pulsar-io.yaml文件 创建pulsar-io-debezium-sqlserver-1.0.nar文件 上传文件至服务器 启动Debezium Connector 编写debezium-sqlserver-source-config.yaml文件 启动SQLServer Source 并订阅Topic 启动SQLServer Source 订阅Topic 问题回顾 参考文档 启动Pulsar 从官网下载tar.gz安装包 下载地址: https://archive.apache.org/dist/pulsar/pulsar-2.4.0/apache-pulsar-2.4.0-bin.tar.gz $ wget https://archive.apache.org/dist/pulsar/pulsar-2.4.0/apache-pulsar-2.4.0-bin.tar.gz 解压 $ tar zxvf apache-pulsar-2.4.0-bin.tar.gz 创建connectors文件夹

Kafka基础——Kafka架构

人走茶凉 提交于 2019-12-07 20:31:41
目录 Kafka 简介 使用消息队列的好处 Kakfa 架构 分区 Kafka 简介 Kafka最初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用。 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 使用消息队列的好处 解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 可恢复性 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 缓冲 有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。 灵活性 & 峰值处理能力 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。 异步通信 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制

Kafka消费者——API开发

。_饼干妹妹 提交于 2019-12-07 15:28:35
目录 消费者客户端 订阅主题 订阅分区 取消订阅 订阅总结 消息消费 poll ConsumerRecord 位移提交 自动提交 手动提交 控制和关闭消费 指定位移消费 再均衡 消费者拦截器 消费者客户端 消费步骤: 1、配置消费者客户端参数并创建相应的消费者实例。 2、订阅主题。 3、拉取消息并消费 4、提交消费位移 5、关闭消费者实例 Properties prop = new Properties(); prop.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.25.10:9092"); prop.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); prop.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class.getName()); prop.put(ConsumerConfig.GROUP_ID_CONFIG,"test1"); KafkaConsumer consumer = new KafkaConsumer(prop); try{ consumer.subscribe(Arrays

Kakfa生产者——API开发

我与影子孤独终老i 提交于 2019-12-07 15:03:26
目录 客户端开发 必要的配置参数 消息的构建 消息的发送 客户端开发 步骤: 配置生产者参数 构建待发送的消息 发送消息 关闭生产者实例 Properties properties = new Properties(); properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092"); properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class); KafkaProducer producer = new KafkaProducer(properties); ProducerRecord producerRecord = new ProducerRecord("topic1","key","value"); try { producer.send(producerRecord); }catch (Exception e){ e.printStackTrace(); } 必要的配置参数 bootstrap.servers

rocketmq3.26研究之五DefaultMQPushConsumer

自古美人都是妖i 提交于 2019-12-07 12:10:09
DefaultMQPushConsumer rocketmq客户端消费者实现,从名字上已经可以看出其消息获取方式为broker往消费端推送数据,其内部实现了流控,消费位置上报等等。 重要字段 1 String consumerGroup 消费者组名,必须设置 需要注意的是,多个消费者如果具有同样的组名,那么这些消费者必须只消费同一个topic,具体原因参见 rocketmq问题汇总-一个consumerGroup只对应一个topic 2 MessageModel messageModel 消费的方式,分为两种: 2.1 BROADCASTING 广播模式,即所有的消费者可以消费同样的消息 2.2 CLUSTERING 集群模式,即所有的消费者平均来消费一组消息 3 ConsumeFromWhere consumeFromWhere 消费者从那个位置消费,分别为: 3.1 CONSUME_FROM_LAST_OFFSET:第一次启动从队列最后位置消费,后续再启动接着上次消费的进度开始消费 3.2 CONSUME_FROM_FIRST_OFFSET:第一次启动从队列初始位置消费,后续再启动接着上次消费的进度开始消费 3.3 CONSUME_FROM_TIMESTAMP:第一次启动从指定时间点位置消费,后续再启动接着上次消费的进度开始消费 以上所说的第一次启动是指从来没有消费过的消费者

10、kafka消费者配置参数说明

[亡魂溺海] 提交于 2019-12-07 12:02:55
Consumer Configuration在kafka 0.9+使用Java Consumer替代了老版本的scala Consumer。新版的配置如下: bootstrap.servers 在启动consumer时配置的broker地址的。不需要将cluster中所有的broker都配置上,因为启动后会自动的发现cluster所有的broker。 它配置的格式是:host1:port1;host2:port2… key.descrializer、value.descrializer Message record 的key, value的反序列化类。 group.id 用于表示该consumer想要加入到哪个group中。默认值是 “”。 heartbeat.interval.ms 心跳间隔。心跳是在consumer与coordinator之间进行的。心跳是确定consumer存活,加入或者退出group的有效手段。 这个值必须设置的小于session.timeout.ms ,因为: 当Consumer由于某种原因不能发Heartbeat到coordinator时,并且时间超过session.timeout.ms时,就会认为该consumer已退出,它所订阅的partition会分配到同一group 内的其它的consumer上。 通常设置的值要低于session.timeout

Kafka概念和关于springboot配置Kafka参数详解

我与影子孤独终老i 提交于 2019-12-07 12:00:38
1.基本概念 *Producer: 消息生产者,往Topic发布消息 *Consumer: 消息消费者,往Topic取消息并处理 *Consumer Group: topic 可以广播给不同的group,一个group只能有一个consumer消费消息 *Broker(物理概念): Kafka集群,每个节点为一个broker *Topic(逻辑概念): 消息类别,对数据进行区分、隔离 *Partition(物理概念): Kafka存储的基本单位,一个Topic数据会被分散存储在多个Partition,每个Partition是有序的; 一个Partition只会在一个broker上; 消费者的数目<=Partition数目 *Replication:(副本) 同一个Partition可能会有多个Replication,多个Replication数据是一样的; 基本单位是Partition; 读和写都是在Leader; Follower实时复制Leader数据 *Replication Leader: 负责Partition上与Producer和Consumer的交互,一个Partition只有一个Leader 2.基本结构 3.特点 多分区、多副本、多订阅者、基于Zookeeper调度 高吞吐量、低延迟、高并发、时间复杂度为O(1) 数据可持久化、容错性、消息自动平衡 4

spring kafka 配置详解

假装没事ソ 提交于 2019-12-07 11:59:56
[b]spring kafka 配置详解[/b] 使用spring-integration-kafka发送消息 1.Outbound Channel Adapter用来发送消息到Kafka。 2.消息从Spring Integration Channel中发出,一旦配置好这个Channel,就可以利用这个Channel往Kafka发消息。(MessageChannel类)。 1.int:channel是配置Spring Integration Channel, 此channel基于queue。 2.int-kafka:outbound-channel-adapter是outbound-channel-adapter对象, 内部使用一个线程池处理消息。关键是kafka-producer-context-ref。 3.int-kafka:producer-context配置producer列表,要处理的topic,这些Producer最终要转换成Kafka的Producer。 4.task:executor任务队列的配置: [b]BROKER 的全局配置[/b] ------------------------------------------- 系统 相关 ------------------------------------------- #