Kafka
gebilaozeng
这个作者很懒,什么都没留下…
展开
-
浅谈大数据里的Kafka (9)Kafka的消费方式和消费策略
3.3.1 消费方式consumer采用pull(拉)模式从broker中读取数据。 cpush(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息。 pull模式不足之处是,如果kafka没有数据,消费者可能会陷入循环中,一直返回空数据。针对这一点,Kafka的消费者在消费数据时原创 2020-07-19 13:06:40 · 2719 阅读 · 0 评论 -
浅谈大数据里的Kafka (8)Producer消息发送流程
producer到broker的消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka broker。相关参数:batch.size:只有数据积累到batch.size之后,sender才会发送数据。lin原创 2020-05-14 23:51:27 · 288 阅读 · 0 评论 -
浅谈大数据里的Kafka (7)Kafka事务 以及 数据漏消费和重复消费
关于Kakfa事物的简要分析: Kafka从0.11版本开始引入了事务支持。事务可以保证Kafka在Exactly Once语义的基础上,生产和消费可以跨分区和会话,要么全部成功,要么全部失败。Producer事务 为了实现跨分区跨会话的事务,需要引入一个全局唯一的Transaction ID,并将Producer获得的PID和Transaction ID绑定。这样当Producer重启后就可以通过正在进行的Transaction ID获得原来的PID。 为了管理Transaction,Kafka引原创 2020-05-14 23:41:54 · 538 阅读 · 0 评论 -
浅谈大数据里的Kafka (6) Kafka高效读写数据
Kafka实现高效数据读写方式:一、顺序写磁盘 Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。根据官网数据表明,同样的磁盘,顺序写能到到600M/s,而随机写只有100k/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。二、应用Pagecache Kafka数据持久化是直接持久化到Pagecache中,这样会有几个优势: (1)I/O Scheduler 会将连续的小块写组装成大块的物理写从而提高性能。 (2原创 2020-05-14 23:16:03 · 287 阅读 · 0 评论 -
浅谈大数据里的Kafka (5)Zookeeper在Kafka中的作用
关于Controller: 根据Kafka的数据可靠特性可以知道,Kafka的数据可靠性以及leader节点的选举需要靠Zookeeper维护。 Kafka集群中有一个broker节点会被选举为Controller,负责管理集群broker的上下线,以及所有topic的分区副本分配和leader选举等工作。而Controller的管理工作都是依赖于Zookeeper。Zookeeper维护下的Kafka的Leader节点选举:图一: 根据图一可以知道,Zookeeper维护了Kafka集群的每个原创 2020-05-14 22:42:50 · 493 阅读 · 0 评论 -
浅谈大数据里的Kafka(4)数据可靠性保证
数据可靠性保证: 为保证producer发送的数据能够可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到,也就是应答),如果producer收到ack,就会进行下一轮的数据发送,否则重新发送数据。 如下图:ack发送机制方案: 首先需要确保收到消息后节点中的follower与leader节点的数据同步完成,然后leader节点再发送ack应答给producer,这样才可以保证突原创 2020-05-10 23:44:36 · 358 阅读 · 0 评论 -
浅谈大数据里的Kafka (3)生产数据层面的分区策略
1)分区的原因 (1)为了方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了; (2)可以提高并发,因为可以以Partition为单位读写(Partition多副本)2)分区策略 首先生产者生产数据后需要发送数据,而发送的数据则会封装成ProducerRecord对象,ProducerRecord对象在new的时候可以加入如下参数: (1)指明 partition 的情况下,直接将原创 2020-05-10 22:38:54 · 278 阅读 · 0 评论 -
浅谈大数据里的Kafka(1)基本架构
** Kafka是一个分布式的的基于发送/订阅模式的消息队列,可以应用于大数据的实时处理领域** 我们都知道消息队列一般都有两种模式,为点对点模式(一对一)和发布/订阅模式(一对多)。 对于先对点模式,它是消息消费者在消费队列里面的消息之后,被消费的消息就会被删除,也就是一个消息只能被一个消...原创 2020-05-08 00:02:58 · 286 阅读 · 0 评论 -
浅谈大数据里的Kafka(2)工作流程及文件存储机制
Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。 topic是逻辑上的概念(可以自己定义),而partition是物理上的概念(可以将一个topic的内容分配到不同节点上的物理磁盘中),每个partition对应于一者log文件,该log文件中存储的就是producer生产的数...原创 2020-05-08 01:58:58 · 406 阅读 · 0 评论