
Kafka
K. Bob
多读书,多睡觉;少吃零食,多运动。
展开
-
Kafka and So on.
Kafka消息顺序消费Kafka分区的目的• 分区对于 Kafka 集群的好处是:实现负载均衡• 分区对于消费者来说:可以提高并发度,提高效率Kafka如何做到全局消息有序: 一个topic、一个分区,虽然保证全局有序,但是生产性能下降,与Kafka分区原意相违。Kafka是无法保证全局的消息顺序性的,只能保证主题的某个分区的消息顺序性。Kafka中的每个 partition 中的消息在写入时都是有序的,而且单独一个 partition 只能由一个消费者去消费,可以在里面保证消息的顺序性。但是分原创 2020-11-18 15:40:12 · 280 阅读 · 0 评论 -
Kafka中的选举问题
目录 Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制:控制器(Broker)选主分区多副本选主消费组选主控制器(Broker)选举 所谓控制器就是一个Borker,在一个Kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follower角色。集群中第一个启动的broker会通过在zookeeper中创建临时节点/controller来让自己成为控制器,其他broker启动时也会在zoo原创 2020-09-11 17:03:15 · 560 阅读 · 0 评论 -
Kafka序列化器,分区器,拦截器,消息累加器
目录拦截器序列化器分区器消息累加器 整个Kafka生产者客户端由两条线程协调运行。这两条线程分别为主线程和sender线程(发送线程)。主线程的作用就是:由KafkaProducer创建消息,然后通过可能的拦截器,序列化器,分区器的作用之后缓存到消息累加器。send线程的作用就是:负责将消息累加器中的消息发送到kafka中。拦截器 拦截器是在Kafka0.10.0.0版本中就已经引入的一个功能,Kafka一共有两种拦截器。生产者拦截器和消费者拦截器。生产者拦截器 生产者拦截器可以用来在消息发原创 2020-08-20 19:39:55 · 1976 阅读 · 0 评论 -
ZooKeeper在Kafka 中的作用
目录Broker注册Topic注册生产者负载均衡消费者负载均衡分区 与 消费者 的关系消息 消费进度Offset 记录消费者注册Broker注册 Broker是分布式部署并且相互之间相互独立,但是需要有一个注册系统能够将整个集群中的Broker管理起来,此时就使用到了Zookeeper。在Zookeeper上会有一个专门用来进行Broker服务器列表记录的节点:/brokers/ids。 每个Broker在启动时,都会到Zookeeper上进行注册,即到/brokers/ids下创建属于自己的节点原创 2020-08-18 22:53:08 · 499 阅读 · 2 评论 -
Kafka数据存储
目录Kafka文件存储机制Kafka数据的存储方式Kafka如何通过offset查找messageKafka文件存储机制基本概念:Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群Topic:一类消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition原创 2020-06-10 21:36:32 · 962 阅读 · 0 评论 -
Kafka消费者从Kafka中读取数据
使用KafkaConsumer订阅主题,然后接收这些主题的消息。Kafka消费者是消费组的一部分,当多个消费者形成一个消费组来消费主题时,每个消费者会收到不同分区的消息。消费组与分区重平衡 当新的消费者加入消费组,它会消费一个或多个分区,而这些分区之前是由其他消费者负责的;另外,当消费者离开消费组(比如重启、宕机等)时,它所消费的分区会分配给其他分区。这种现象称为重平衡(rebalance)。 消费者通过定期发送心跳(hearbeat)到一个作为组协调者(group coordinator)的原创 2020-06-03 08:45:17 · 1613 阅读 · 0 评论 -
Kafka Consumer如何实现exactly once/at least once
目录消费端幂等性消费时出现几种异常情况自动提交手动提交精确一次消费实现总结至少消费一次消费端幂等性 kafka具有两种提交offset(消费偏移量)方式,在Kafka每个分区具备一offset记录消费位置,如果消费者一直处于正常的运行转态,那么offset将没有什么用处,因为正常消费时,consumer记录了本次消费的offset和下一次将要进行poll数据的offset起始位置,但是如果消费者发生崩溃或者有新的消费者加入消费者组,就会触发再均衡Rebalance,Rebalance之后,每个消费者将原创 2020-05-24 15:44:35 · 2804 阅读 · 2 评论 -
Kafka网络模型
Kafka的网络通信模型是基于NIO的Reactor多线程模型来设计的。Kafka的网络通信层模型,主要采用了 1(1个Acceptor线程)+N(N个Processor线程)+M(M个业务处理线程) 。线程数线程名线程具体说明1kafka-socket-acceptor_%xAcceptor线程,负责监听Client端发起的请求Nkafka-network...原创 2020-05-05 21:05:21 · 1051 阅读 · 0 评论 -
Kafka保证数据可靠性和一致性
Kafka保证数据可靠性和一致性数据可靠性Topic 分区副本Producer 往 Broker 发送消息Leader 选举数据一致性数据可靠性 Kafka 数据的可靠性可以分为Producter 往 Broker 发送消息、Topic 分区副本以及 Leader 选举几个角度。Topic 分区副本 为了保证数据的可靠性,Kafka 从 0.8.0 版本开始引入了分区副本,即每个分区可...原创 2020-02-08 22:20:51 · 946 阅读 · 0 评论 -
Kafka高吞吐低延迟原理
Kafka基于磁盘做的数据存储,如何实现高性能、高吞吐、低延时?Reference:http://searene.me/2017/07/09/Why-is-Kafka-so-fast/ and https://queue.acm.org/detail.cfm?id=1563874.顺序读写 Kafka将消息记录持久化到本地磁盘中,实际上不管是内存还是磁盘,快或慢关键在于寻址的方式,磁盘分为...原创 2019-12-15 15:45:23 · 1564 阅读 · 0 评论 -
Kafka生产者蓄水池机制
1.1、整体架构 从上面的架构图可以看出,生产的流程主要就是一个producer线程和一个sender线程,它们之间通过BatchQueue来获取数据,它们的关系是一一对应的,所以Kafka的生产过程都是异步过程。它的同步和异步指的是接收响应结果的模式是同步阻塞还是异步回调。同步和异步的生产者调用示例如下:异步生产模式: producer.send(new ProducerRecord&...转载 2019-12-11 21:18:34 · 814 阅读 · 0 评论 -
Kafka 幂等性以及事务
生产者幂等性 Kafka的幂等性指在发送同一条消息时,在服务端只会被持久化一次,数据不丢不重。前提条件:Kafka的幂等性只能保证单会话有效,如果broker挂掉重启,幂等性就无效了,因为无法获取之前的状态信息幂等性不能跨多个Topic-Partition,只能保证单个partition的幂等性,如果需要跨分区实现幂等就只能借助事务性实现。幂等性用来解决什么问题? 幂等性用来解决...原创 2019-12-10 21:54:51 · 1045 阅读 · 0 评论 -
Kafka
KafkaKafka基本概念BrokerJMSKafka文件存储机制总结Kafka基本概念 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。Kafka是一个分布式消息队列:生产者、消费者的功能。类似于JMS的特性,但是设计实现上完全不同,此外它并不是JMS规范的实现。Kafka中的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担...原创 2019-06-08 23:25:01 · 1688 阅读 · 0 评论