Kafka
文章平均质量分 90
Kafka
Fisher3652
这个作者很懒,什么都没留下…
展开
-
Kafka 12:流式处理
1.流式处理基本概念1.1数据流数据流是无边界数据集的抽象表示。无边界意味着无限和持续增长。无边界数据集之所以是无限的,是因为随着时间的推移,新的记录会不断加入进来。这个简单的模型(事件流)可以表示很多业务活动,比如信用卡交易、股票交易、包裹递送、流经交换机的网络事件、制造商设备传感器发出的事件、发送出去的邮件、游戏里物体的移动,等等。这个清单是无穷无尽的,因为几乎每一件事情都可以被看成事件的序列。1.1.1事件流是有序的事件的发生总是有个先后顺序。以金融活动事件为例,先将钱存进账户后再花钱原创 2020-08-05 19:56:05 · 1139 阅读 · 0 评论 -
Kafka 11:与springboot整合
1.新建一个空的springboot工程,引入jar包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://mav原创 2020-08-02 15:03:50 · 221 阅读 · 0 评论 -
Kafka 10:集群与可靠的数据传输
集群与可靠的数据传输1.集群的成员关系2.什么是控制器3.复制-Kafka 的核心3.1replication-factor3.2副本类型3.3工作机制4.处理请求的内部机制4.1生产请求4.2获取请求4.3ISR5.物理存储机制5.1分区分配5.2文件管理5.3文件格式5.4索引5.5超时数据的清理机制6.可靠的数据传递6.1Kafka 提供的可靠性保证和架构上的权衡6.2复制7.Broker 配置对可靠性的影响7.1复制系数7.2不完全的首领选举7.3最少同步副本8.可靠系统里的生产者8.1发送确认8.原创 2020-07-26 19:43:13 · 488 阅读 · 1 评论 -
Kafka 9:分区再均衡
1.再均衡1表示,新增一个消费者3;再均衡2表示,去掉一个消费者3;每次再均衡都会从数据库读取最新的偏移量开始消费2.再均衡监听器消费者在退出和进行分区再均衡之前,会做一些清理工作比如,提交偏移量、关闭文件句柄、数据库连接等。在为消费者分配新分区或移除旧分区时,可以通过消费者 API 执行一些应用程序代码,在调用 subscribe()方法时传进去一个 ConsumerRebalancelistener 实例就可以了。ConsumerRebalancelistener 有两个需要实现的方法。原创 2020-07-18 21:59:31 · 718 阅读 · 2 评论 -
Kafka 8:消费者手动提交偏移量(解决消息丢失与重复消费问题)
1.消费者提交偏移量导致的问题当我们调用 poll 方法的时候,broker 返回的是生产者写入 Kafka 但是还没有被消费者读取过的记录,消费者可以使用 Kafka 来追踪消息在分区里的位 置,我们称之为偏移量。消费者更新自己读取到哪个消息的操作,我们称之为提交。消费者是如何提交偏移量的呢?消费者会往一个叫做_consumer_offset 的特殊主题发送一个消息,里面会包括每个分区的偏移量。发生了再均衡之后, 消费者可能会被分配新的分区,为了能够继续工作,消费者者需要读取每个分区最后一次提交的偏原创 2020-07-13 22:49:42 · 6347 阅读 · 4 评论 -
Kafka 7:自定义分区器
1.分区我们在新增 ProducerRecord 对象中可以看到,ProducerRecord 包含了目标主题,键和值,Kafka 的消息都是一个个的键值对。键可以设置为默认的 null。键的主要用途有两个:一,用来决定消息被写往主题的哪个分区,拥有相同键的消息将被写往同一个分区,二,还可以作为消息的附加消息。如果键值为 null,并且使用默认的分区器,分区器使用轮询算法将消息均衡地分布到各个分区上。如果键不为空,并且使用默认的分区器,Kafka 对键进行散列,然后根据散列值把消息映射到特定 的分原创 2020-07-12 15:56:07 · 412 阅读 · 0 评论 -
Kafka 6:生产者顺序发送
顺序保证Kafka 可以保证同一个分区里的消息是有序的。也就是说,发送消息时,主题只有且只有一个分区,同时生产者按照一定的顺序发送消息, broker 就 会按照这个顺序把它们写入分区,消费者也会按照同样的顺序读取它们。如果某些场景要求消息是有序的,那么消息是否写入成功也是很关键的,所以不建议把 retires 设为 0(不重试的话消息可能会因为连接关 闭等原因会丢) 。所以还是需要重试,同时把 max.in.flight.request.per.connection 设为 1,这样在生产者尝试发送第一原创 2020-07-11 21:15:15 · 705 阅读 · 0 评论 -
Kafka 5:生产者发送配置
1.acksacks=0: 生产者在写入消息之前不会等待任 何来自服务器的响应,容易丢消息,但是吞吐量高。acks=1: 只要集群的首领节点收到消息,生产者会收到来自服务器的成功响应。如果消息无法到达首领节点(比如首领节点崩溃,新首领没有选举出 来),生产者会收到一个错误响应,为了避免数据丢失,生产者会重发消息。不过,如果一个没有收到消息的节点成为新首领,消息还是会丢失。默认 使用这个配置。acks=all: 只有当所有参与复制的节点都收到消息,生产者才会收到一个来自服务器的成功响应。延迟高。2.b原创 2020-07-11 20:57:06 · 260 阅读 · 0 评论 -
Kafka 4:多线程下的生产者
KafkaProducer 的实现是线程安全的,所以我们可以在多线程的环境下,安全的使用 KafkaProducer 的实例。1.创建主题concurrent-test./kafka-topics.sh --zookeeper localhost:2181 --create --topic concurrent-test --replication-factor 1 --partitions 82.添加常量package org.example.config;public class Bu原创 2020-07-11 20:27:31 · 2902 阅读 · 1 评论 -
Kafka 3:生产者异步发送
1.创建生产者KafkaAsyncProducerpackage org.example.async;import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import org.example.config.BusiConst;import java.util.Properties;import java.util.concurrent原创 2020-07-11 10:30:13 · 428 阅读 · 0 评论 -
Kafka 2:生产者同步发送
1.创建生产者KafkaFutureProducerpackage org.example.sync;import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import org.example.config.BusiConst;import java.util.Properties;import java.util.concurrent原创 2020-07-09 22:06:30 · 342 阅读 · 0 评论 -
Kafka在Linux环境下的安装教程
1.下载地址http://kafka.apache.org/downloads,这里下载kafka_2.11-2.4.1.tgz2.将文件上传到服务器上,并解压"tar -zxvf kafka_2.11-2.4.1.tgz "3.修改server.properties配置文件,zookeeper的配置文件可以使用默认配置不修改#对外暴露的服务端口,如果外网需要向broker发送消息必须配置advertised.listeners=PLAINTEXT://192.168.42.112:9092原创 2020-07-09 20:33:20 · 1261 阅读 · 1 评论 -
Kafka 1:生产者发送并忘记
1.创建主题"./kafka-topics.sh --zookeeper localhost:2181 --create --topic hello-kafka --replication-factor 1 --partitions 4"主题名hello-kafka,一个副本,4个分区2.创建一个maven工程,引入依赖 <dependencies> <dependency> <groupId>org.apache.kafka</gro原创 2020-07-08 20:07:46 · 358 阅读 · 0 评论