Kafka
文章平均质量分 63
kafka
张俊杰zjj
一个大龄的码农.目前是Java+Python开发,业余时间研究减肥健身养生,后期可能会去做减肥健身博主.
展开
-
kafka vs rabbitmq vs rocketmq对比
文章出自出自 图灵学院四期课件讲义 kafka vs rabbitmq vs rocketmq.pdfRocketMQ淘宝内部的交易系统使用了淘宝自主研发的 Notify 消息中间件,使用 Mysql 作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011 年初,Linkin 开源了 Kafka 这个优秀的消息中间件,淘宝中间件团队在对 Kafka 做过充分 Review 之后,Kafka 无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息原创 2021-10-17 17:41:30 · 406 阅读 · 0 评论 -
kafka单机版安装和启动
上传Kafka文件包到Linux上链接: https://pan.baidu.com/s/1BmtknCyWIepjjKO2h2nOrA 提取码: i8n8 复制这段内容后打开百度网盘手机App,操作更方便哦下载kafka_2.11-2.1.0.tgz到本地并且上传到Linux指定目录下后解压:[root@zjj101 soft]# tar -zxvf kafka_2.11-2.1.0.tgz创建Kafka日志文件夹:自行创建kafka_logs文件夹[root@zjj101 kafka_lo原创 2021-07-03 15:32:45 · 357 阅读 · 0 评论 -
Kafka在zookeeper中存储的信息
Kafka在zookeeper中的存储结构1.topic注册信息/brokers/topics/[topic] :存储某个topic的partitions所有分配信息每个topic的信息{ "version":1, // 版本编号目前固定为数字1 "partitions":{ // partitionId编号 "1":[ //同步副本组brokerId列表 101, 103 ],原创 2021-03-01 12:52:03 · 1210 阅读 · 0 评论 -
SpringBoot的 Kafka事务代码案例
事务案例测试说明启动项目正常发送两个消息postman发送Get请求:http://localhost:8080//testSendMsg?flag=1此时两个consumer都会接到消息发送两个消息间隔抛出异常postman发送Get请求:http://localhost:8080//testSendMsg?flag=0发送两个消息之间出现异常,第一个消息会被回滚,此时两个consumer都不会接到消息, 这就是事务的原子性pom依赖<?xml version="1.0"原创 2021-01-29 13:58:59 · 579 阅读 · 0 评论 -
Kafka 的topic和消费者组里面的消费者消费的关系.
一个topic一个partition可以被不同的消费者组里面的消费者消费如果你有两个消费者组消费一个partition里面的值, 假如说partition里面有100条数据结果就是 这两个消费者组里面的消费者分别消费100条数据也就是说, 假如,生产者发送了 一个消息 ,消息为hello,. 那么 两个消费者组里面的其中一个消费者都会消费这个 hello 的消息.一个分区.test组消费者组1package com.consumer;import org.apache.kafka.cli原创 2021-01-28 11:38:32 · 5428 阅读 · 3 评论 -
Zookeeper在Kafka中的作用
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middlewareZookeeper在Kafka中的作用Kafka集群中每个broker是如何知道集群中的其它broker的Kafka多台机器是没有主从的区别的,如何有效形成一个集群系统的?就是通过zookeeper里面一个brokers目录,当Kafka broker启动起来之后都会给自己注册到Kafka的brokers目录下面.所有的Kafka的broker都能知道其它节点,都是通过原创 2021-01-28 09:09:41 · 340 阅读 · 0 评论 -
Kafka 高效读写数据,为什么那么快
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middlewareKafka 高效读写数据顺序写磁盘磁盘的原理:读写一份连续的数据比读写一份随机的数据效率要非常的高,因为少了寻址的时间Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100K/s(这太极端了,实际上不会那么夸张)。这与磁盘的机械机构有关,顺序写之所以快,是原创 2021-01-28 09:08:09 · 966 阅读 · 0 评论 -
Kafka分区分配的概念,哪个consumer消费哪个partition
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middlewareKafka分区分配的概念,哪个consumer消费哪个partitionKafka分区分配的概念一个consumer group中有多个consumer,一个 topic有多个partition,所以必然会涉及到partition的分配问题,即确定那个partition由哪个consumer来消费。Kafka有两种分配策略,一是RoundRobin,一是Ran原创 2021-01-28 09:06:25 · 1761 阅读 · 2 评论 -
Kafka offset的维护
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middlewareoffset的维护概念消费者消费完了消息是不会被立刻删除的,每个消费者把消费的数据消费到哪里了就需要做个记录,就是offsetKafka 0.9版本之前,consumer默认将offset保存在Zookeeper中,从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为"__consumer_offsets" 。由于原创 2021-01-28 09:05:40 · 1147 阅读 · 1 评论 -
kafka 消费者组案例
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middleware消费者组案例生产者是怎么把数据给我们的partition的创建生产者1个分区创建生产者一个副本 ,一个分区[root@zjj103 ~]# kafka-topics.sh --zookeeper zjj101:2181 --create --topic hello --partitions 1 --replication-factor 1Created topic原创 2021-01-28 09:04:53 · 405 阅读 · 1 评论 -
Kafka消费方式
文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middleware消费方式Kafka采用consumer采用pull(拉)模式从broker中读取数据。push是broker集群推送消息给消费者pull是消费者从broker集群中拉取消息push(broker集群推送消息给消费者)push方式的话能更及时的获取到数据,一有数据就推送消息.但是push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。原创 2021-01-28 09:04:19 · 1616 阅读 · 0 评论 -
Kafka生产者发送消息的流程
生产者发送消息的流程文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middleware概念Kafka的Producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator(两个线程之间共享的)。main线程将要发送的消息包装成ProducerRecord 之后放到RecordAccumulator(线程共享变量),Sender原创 2021-01-27 18:24:31 · 568 阅读 · 0 评论 -
Kafka 幂等性
幂等性文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middleware概述ack设置-1之后虽然不会出现数据丢失问题,但是还会出现数据重复问题数据重复了怎么办???是否允许数据重复取决于场景, 有写场景重复了也没事儿,比如说记录点击事件,重复了顶多就是多记录一条数据,但是如果是订单,充值之类的,数据重复的话,那么问题就有点严重了.有的数据不但不能丢,还不能重复,比如说交易的场景,记录数据不能记录两份儿.解决办法在某个版本之原创 2021-01-27 18:23:56 · 1383 阅读 · 0 评论 -
Kafka集群故障处理细节
集群故障处理细节文章来源于我的知识库:https://www.yuque.com/crow/message_oriented_middlewareLEO和HW概念LEO:指的是每个副本最大的offset;HW:指的是消费者能读到的最大的offset,ISR队列中最小的LEO。HW:上图消费者最多能读到12,因为假如说Leader挂掉了,那么消费者读到的话,肯定是读整个集群中offset最小的那个.这个offset最小就意味着所有机器的offset肯定大于等于这个offset , 假如说A机器原创 2021-01-27 18:23:29 · 752 阅读 · 0 评论 -
Kafka生产者是怎么把数据给我们分区的
生产者是怎么把数据给我们分区的?文章来源我的知识库https://www.yuque.com/crow/message_oriented_middleware分区的目的1.方便扩展:每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;2.提高并发:以partition为读写单位,可以多个消费者同时消费数据,提高了消息的处理效率。分区的原则我们需要将producer发送的数据封装成一个ProducerR原创 2021-01-27 18:20:18 · 473 阅读 · 0 评论 -
Kafka数据可靠性保证ACK机制
数据可靠性保证ACK机制文章来源于我的知识库https://www.yuque.com/crow/message_oriented_middleware概念为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据。副本数据同步策略****方案****优点***原创 2021-01-27 18:19:22 · 562 阅读 · 0 评论 -
Kafka工作流程及文件存储机制
Kafka工作流程及文件存储机制文章来源于我的知识库https://www.yuque.com/docs/share/036935c4-89d5-4a6a-a8e6-cf07f0f6e669?# 《Kafka工作流程及文件存储机制》Kafka工作流程概述Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。topic是逻辑上的概念,一般一个业务就是一个topic,而partition是物理上的概念,每个partition对应于一个log文件,该log文件原创 2021-01-27 18:16:59 · 270 阅读 · 0 评论 -
Kafka shell 启动生产者和消费者
1.启动消费者kafka_2.11-0.11.0.2/bin目录下面,有个kafka-console-consumer.sh 将生产者的数据打印在控制台上面命令 : kafka-console-consumer.sh --bootstrap-server zjj101:9092 --topic hello输入完了之后就卡着了… 等待生产者生产数据.2.启动生产者kafka提供了用于测试的producer,位置在kafka_2.11-0.11.0.2/bin目录下面,有个kafka-console-原创 2021-01-18 12:11:05 · 1222 阅读 · 1 评论 -
单个启动停止Kafka
前提是已经配置好了$KAFKA_HOME 环境变量启动Kafka:sh $KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties停止Kafka:sh $KAFKA_HOME/bin/kafka-server-stop.sh原创 2020-12-27 14:42:54 · 259 阅读 · 0 评论 -
SpringBoot 将数据推到Kafka的Topic入门案例*
依赖可以用spring-kafka-1.1.8.RELEASE版本的 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency>Java代码public class Constant { p原创 2020-10-30 21:44:56 · 1178 阅读 · 0 评论 -
配置 kafka环境变量
编辑 profile文件[root@zjj102 module]# vim /etc/profile配置Kafka环境变量# 配置Kafka环境变量开始export KAFKA_HOME=/root/soft/kafka_2.11-0.11.0.2export PATH=$PATH:$KAFKA_HOME/bin# 配置Kafka环境变量结束# 下面这个东西如果你原来配置文件有了的话,就不用多配置这个,一般这行在最底下.export PATH刷新配置文件[root@zjj102原创 2020-10-17 20:09:42 · 5068 阅读 · 0 评论 -
Kafka查看日志信息
命令查看最后500条日志, 前提是已经配置好了 $KAFKA_HOME环境变量[root@zjj103 module]# tail -500 $KAFKA_HOME/logs/server.log原创 2020-10-17 20:09:30 · 14340 阅读 · 0 评论 -
Kafka本身的架构
Producer(生产者)生产消息以Topic(主题)为单位进行存储.消费者组订阅主题消费内容.Producer生产者写数据可能写到TopicA-Partition0 分区 ,也可能写到 TopicA-Partition1分区, 也可以指定只写到哪个分区也是可以的.如果你不指定写哪个分区,你只是指定写到TopicA主题,那么就会采取轮询的策略,把数据轮流放到TopicA主题下的所有分区里面.为了方便我的消费,以及提高消费的速度,我们是有消费者组的概念,一个组可以有多个消费者线程,一个Group组可以.原创 2020-10-08 15:54:47 · 219 阅读 · 2 评论 -
Kafka核心概念
Broker一台kafka服务器就是一个broker。一个集群由多个broker组成。Kafka集群包含一个或多个服务器,这种服务器被称为broker。broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需原创 2020-10-08 15:53:47 · 257 阅读 · 0 评论 -
Kafka简介和特点 *
什么是KafkaKafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景。Kafka是用来构建实时的管道和流式的应用,它可以水平的扩展,而且还有容错机制,性能很高.Kafka是一个分布式的数据流式传输平台。在流式计算中,Kafka一般用来缓存数据,Spar原创 2020-10-08 15:49:17 · 1828 阅读 · 0 评论