kafka
文章平均质量分 85
luo_shui
这个作者很懒,什么都没留下…
展开
-
Kafka源码阅读 —— KafkaController(1)
KafkaController 启动在KafkaServer.startup()中,KafkaController对象被构建,在启动KafkaApis、replicaManager后,KafkaController.startup()被调用。Kafka集群中每个Broker都会调用startup()函数,但是一个集群只有一个Broker能够成为Controller。那么,谁将成为这个被选中的人呢?原创 2016-09-25 23:19:36 · 656 阅读 · 0 评论 -
Kafka源码阅读 —— KafkaController(2)
Controller与broker之间的消息通道当Controller做出动作时,需要向集群中的broker发送控制消息。发送的消息三种:LeaderAndIsrRequest、UpdateMetadataRequest和StopReplicaRequest, broker收到消息后,通过KafkaApis.handle进行处理————事实上,KafkaApis.handle是broker上的业务线原创 2016-09-25 23:40:41 · 774 阅读 · 0 评论 -
KAFKA源码阅读———处理ProduceRequest,FetchRequest
KafkaApis类中有个handle函数,这里是消息分发中心,根据request中的requestId采用不同的处理方式。当requestId == RequestKeys.produceKey时,通过函数handleProducerOrOffsetCommitRequest处理request。 这个函数中把ProducerRequest和OffsetCommitRequest请求都作为生产消息原创 2016-11-14 20:36:10 · 2096 阅读 · 0 评论 -
KAFKA源码阅读——ReplicaFetcherManager,同步log
在ReplicaManager.makeFollowers函数中,对于成为Follower的broker,需要执行这么一段代码:val partitionsToMakeFollowerWithLeaderAndOffset = partitionsToMakeFollower.map(partition => new TopicAndPartition(partition) ->原创 2016-11-14 20:37:06 · 1391 阅读 · 0 评论 -
KAFKA源码阅读——FetchRequestPurgatory, ProducerRequestPurgatory
RequestPurgatorypurgatory,炼狱的意思。第一次看RequestPurgatory类的代码时,一头雾水,不明白是干什么的。要理解这个,需要先理解kafka处理FetchRequest和ProduceRequest的思路: 1. 请求到达,先判断该请求执行完成的条件是否满足(例如ProduceRequest,需要判断是否有足够多的Follower都已经同步了指定的offset原创 2016-11-14 20:32:55 · 1087 阅读 · 0 评论 -
Kafka源码阅读 —— KafkaController(3)
执行 kafka-topics.sh –createKafka官网给出的创建Topic的命令如下: bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 这条命令中的信息包括:zookeeper地址、分区副本数、分区数和topic名。原创 2016-11-14 22:18:33 · 612 阅读 · 0 评论 -
Kafka源码阅读 —— KafkaController(4)
在kafka 0.8以后开始提供High Availability机制,即一个broker宕机后可以不影响服务。在集群规模越来越大的今天,HA对于消息中间件至关重要。broker startup“Kafka源码阅读 —— KafkaController(1)”中提到,在broker启动时会调用KafkaServer.startup,该函数中会创建一个KafkaHealthcheck类对象,并调用Ka原创 2016-11-14 22:19:21 · 563 阅读 · 0 评论 -
Kafka源码阅读 —— KafkaController(5)
重新分配 replica当新增机器到集群中时,可能需要调整topic下partition的replica分配。kafka不会根据负载自动调整replica assignment,这时候就需要集群管理员手动调整。 下面的例子是将foo1和foo2两个topic的所有replica重新分配到broker 5和broker 6上。 首先,需要提供文件指明需要迁移哪些topic:>cat topics-原创 2016-11-14 22:20:52 · 552 阅读 · 0 评论