![](https://img-blog.csdnimg.cn/2020062220021453.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kafka
ss
稳哥的哥
babe babe babe wowowowowowoow~!
寒江孤影、江湖故人
展开
-
Kafka - 之kafka为什么这么快(页缓存、零拷贝、顺序写磁盘)!
Kafka - 之kafka为什么这么快(页缓存、零拷贝、顺序写磁盘)!kafka为什么这么快,主要是得益于以下几点页缓存(读)零拷贝(读写)顺序写磁盘(写)用户应用与磁盘之间文件之间的读写可以大致分为以下几层分工############################### 用户层(服务端应用) 用户态缓存############################### 内核层(操作系统内核) 页缓存 socket缓存##############################原创 2021-07-19 22:19:59 · 1603 阅读 · 3 评论 -
kafka-之bin内部脚本的使用(包括分区重分配、消费者组消费情况、索引文件查看)
kafka-之/bin/内部脚本的使用(包括分区重分配、消费者组消费情况、索引文件查看)1 topic相关操作kafka-topic.sh --create --zookeeper zkhost:2181 --partitions 1 --replication-factor 2 --topic topic_name # 创建topickafka-topic.sh --zookeeper zkhost:2181 --list # 列出所有的topickafka-topic.sh --descri原创 2021-01-17 21:51:56 · 471 阅读 · 1 评论 -
Kafka-之集群节点数量 与 分区数量 确定
Kafka-之集群节点数量与分区数量确定1 节点数量kafka的集群数量得按照实际业务需求来确定,主要是看kafka的生产者端消息的峰值生产速度,最好保证盈余一点。通常生产的集群节点数量确认遵循以下经验公式# kafka_broker_nums = 2*(峰值生产速度()*2/100) + 1 # 假如峰值生产速度为50MB/s(通常是20+MB/s比较正常)kafka_broker_nums = 2*(50*2/100)+1 = 3台2 分区数量性能测试可以参考:首先在单节点创原创 2021-01-16 20:44:47 · 4668 阅读 · 1 评论 -
Kafka-之消息传输保障(传输语意、幂等、事务以及代码示例)
Kafka-之消息传输保障(传输语意、幂等、事务以及代码示例)1 消息传输语义(保障)不管是Kafka还是其它的消息队列,对消息传输的保障都是基于不同层级的语义At most once至多一次,消息很可能会丢失,但是绝不会出现重复传输At least once至少一次,消息不可能丢失,但是可能会出现重复传输exactly once精准一次,消息不可能丢失,也不可能重复传输对于生产者而言,一旦消息被成功提交到kafka的日志文件,由于多副本机制的存在,那么这条消息就不原创 2020-12-29 11:43:58 · 1065 阅读 · 0 评论 -
kafka-之分段日志文件索引(偏移量索引、时间戳索引)
kafka-之分段日志文件索引0 前言kafka的日志文件索引是用来快速检索日志的,在kafka中日志索引分为2种类,kafka中索引以稀疏索引的方式构建索引,它不保证每个消息在索引文件中都存在索引,每当写入一定数量log.index.interval.bytes default(4KB = 4096)的时候,偏移量索引以及时间戳索引各自创建一个对应的索引项,我们可以通过该参数调整索引的密度。通过MappedByteBuffer将索引文件映射到内存中。偏移量索引baseoffset.index文原创 2020-12-28 16:18:55 · 2021 阅读 · 3 评论 -
Kafka-之数据日志存储(格式变化与压缩)
Kafka-之数据日志存储1 kafka的日志布局kafka的数据存储是基于文件系统的,kafka的数据以日志的形式存储在磁盘上,具体的日志布局可以看下图。很明显,kafka以topic来进行数据划分,我们可以通过在server.properties文件指定log.dirs来指定数据日志存储#指定日志存储路径log.dirs=/tmp/kafka-logs1,tmp/kafka-logs2,....虽说kafka按照topic进行数据划分,但是在物理存储上还是按照topic-partitio原创 2020-12-28 10:43:55 · 1902 阅读 · 0 评论 -
Kafka-之控制器(Controller选举、leader选举)
Kafka-之控制器(控制器选举,leader选举)1 控制器是什么,如何选举kafka控制器管理着整个集群中分区以及副本的状态,控制器的选举需要依赖于Zookeeper,在kafka集群启动的时候,会在ZK中创建一个临时节点(EPHEMERAL)/controller,在每个Broker启动的时候,都会先去访问ZK中的这个节点,如果不存在Broker就会则创建这个节点,先到先得称为Controller,其它Broker当访问这个节点的时候,如果读取到brokerid不等于-1,那么说明Control原创 2020-12-18 16:03:21 · 2410 阅读 · 4 评论 -
Kafka-之分区数确定(生产者、消费者性能测试)
Kafka-之分区数确定(生产者、消费者性能测试)kafka-topic的分区数的确定到目前为止没有权威的答案,但是可以肯定一点,kafka的分区数与性能表现有着直接的关系。那么这篇我就和读者大大们谈谈kafka的生产者和消费者的性能测试。kafka-producer-perf-test.sh用于测试生产者的性能kafka-consumer-perf-test.sh用于测试消费者性能1 kafka-producer-pref-test.sh测试简单的测试脚本执行方式如下:bi原创 2020-12-16 18:04:17 · 1521 阅读 · 0 评论 -
Kafka-之分区管理(优先副本选举、分区重分配、副本复制限流,修改副本因子)
Kafka-之分区管理(优先副本选举、分区重分配、副本复制限流,修改副本因子)kafka内部的分区管理可以从几个方面去介绍。1、优先副本的选举2、分区重新分配3、复制限流4、修改副本因子1 优先副本选举优先副本选举主要是为了让所有的分区尽可能分布在不同的broker上的一种机制,那么什么是优先副本?优先副本是AR种的第一个副本,这个副本通常为leader,假如这个副本不是leader,那么这个副本就是非优先副本。假如我们通过以下方式创建一个topic_a,分区数为3,副本因子也为3./ka原创 2020-12-16 15:13:06 · 1111 阅读 · 0 评论 -
kafka-之Consumer客户端开发(包括参数配置及offset提交等)
kafka-之Consumer客户端开发(包括参数配置及offset提交等)kafka的ConsumerAPI与Producer ClientAPI一样也经历了2个大的版本,0.9x之前使用scala编写的成为Old Consumer API,0.9x版本以来推出的Java编写的客户端API被称为New Consumer API。这里我们只讨论新的Java API。一个正常的消费者逻辑包括以下逻辑:创建一个消费者实例,并配置相关参数订阅主题拉取消息并消费提交offset消费偏移量关闭消费者实原创 2020-12-15 16:28:38 · 547 阅读 · 0 评论 -
Kafka-之Consumer客户端与分区分配策略
Kafka-之Consumer客户端与分区分配策略与KafkaProducer向对应的是KafkaConsumer,用来消费kafka topic中的消息,但是于生产者而言,消费者这里有一个消费者组的概念,在消费的时候通过group.id指定。整个Consumer的客户端架构图如下:每个消费者组可以同时消费相同的topic分区数据,但是互不影响,但是一个分区下的数据在同一个消费者组中只能被一个消费者消费;下面就讲讲kafka消费者的分区分配策略。1 分区分配策略kafka消费者的分区分配策略通过原创 2020-12-10 17:08:37 · 811 阅读 · 0 评论 -
Kafka-之生产者(kafkaProducer)客户端常用参数释义
Kafka-之生产者客户端常用参数释义kafka生产者可以通过一些的参数来提升消息发送的频率以及效率,防止阻塞或者连接kafka集群失败。以下是常用的参数解析buffer.memory该参数为RecordAccumulator缓冲区的大小,该大小可以让Sender线程可以向kafka集群批量发送数据,从而减少网络传输的资源消耗,提升性能;默认 buffer.memory=33554432B(32MB)max.block.ms该参数为kafkaProducer.send()方法的最大原创 2020-12-07 10:38:57 · 480 阅读 · 0 评论 -
Kafka-之术语(名词解释:HW、LEO、ISR、LEADER、FOLLOWER......)
Kafka-之术语(名词解释)我觉得吧,有些小伙伴其实对Kafka只有一个笼统的了解,对kafka相关的名词解释呢也是一知半解。那么这边博客就对kafka相关的名词作出比较完整的解释吧!~,以下是需要解释的名词Producerkafka生产者,Kafka集群的数据都是生产者发送上报的;Broker每个Broker算是一个Kafka的集群节点;Consumer每个Kafka的数据都会被1个或者多个Consumer线程所消费;kafka一个分区的数据只能同时被一个Consu原创 2020-12-04 17:35:38 · 764 阅读 · 3 评论 -
Kafka-之整体架构及生产者架构
Kafka-之整体架构及生产者架构1 kafka集群整体架构众所周知,Kafka在目前的大数据市场中非常的火爆,因为kafka同时承担了以下3种角色。消息队列与RocketMQ差不多的吞吐量,可以削峰、解耦、异步消息存储在传输消息的同时还能对数据进行存储,实现可靠性,同时支持横向扩展,实现高扩展性流式处理框架Kafka提供了客户端API,能对数据进行统计、窗口等操作那么Kafka的整体架构如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i原创 2020-12-04 16:28:04 · 436 阅读 · 4 评论 -
Kafka-之Producer生产者(含拦截器、分区器、序列化器及异步消息发送模式)
Kafka-之Producer生产者(含拦截器、分区器、序列化器及异步消息发送模式)Kafka生产者是整个Kafka架构中的一个角色,可以是不同集成了Kafka的组件,KafkaProducer是线程安全的,可以同时给多个线程使用。1 如何构建一个KafkaProducer构建一个KafkaProducer的构造方法有2种://首先配置Producer必要配置Properties properties = new Properties();properties.put(ProducerConfi原创 2020-12-04 15:48:04 · 759 阅读 · 0 评论 -
MQ(消息队列)简述
MQ(消息队列)简述如今市面上常见的MQ有:RabbitMQActiveMQRocketMQKafka在使用这些MQ之前,首先思考几个问题1.为什么要使用MQ?2.不同的MQ有什么优缺点?针对为什么使用MQ,主要有三个应用场景:削峰、解耦、异步但是!MQ除了有可观的优点以外,还是有不可忽视的缺点的,一个系统如果引入了MQ,那么会存在以下问题:1.系统的复杂度提高(需要考虑数据...原创 2020-03-03 11:10:19 · 877 阅读 · 0 评论