06 2015 档案
摘要:本文分析的Kafka代码为kafka-0.8.2.1。另外,由于Kafka目前提供了两套Producer代码,一套是Scala版的旧版本;一套是Java版的新版本。虽然Kafka社区极力推荐大家使用Java版本的producer,但目前很多已有的程序还是调用了Scala版的API。今天我们就分析一下...
阅读全文
摘要:本文着重介绍几个常用的topic命令行命令,包括listTopic,createTopic,deleteTopic和describeTopic等。由于alterTopic并不是很常用,本文中就不涉及了。另外本文的代码分析是基于kafka_2.10-0.8.2.1的(虽然截图是Kafka 0.8.1的...
阅读全文
摘要:admin包定义了命令行的一些实现一、AdminOperationException.scala一个异常类,表示执行admin命令时候抛出的异常二、AdminUtils.scalaadmin一些常用工具方法:1. assignReplicasToBrokers:负责分配副本到不同的broker上。主...
阅读全文
摘要:1. 概述 Paxos算法被用来实现一个容错的分布式系统,一直以来以晦涩难懂著称。这可能是因为该算法最开始使用希腊文表述的。事实上,它是所有分布式算法中最简单易懂的。Paxos算法的本质其实就是一个共识算法(我不太同意国内把consensusalgorithm翻译成一致性算法,因为一致性的标准英文应...
阅读全文
摘要:该包下只有一个文件:ClientUtils.scala。它是一个object,里面封装了各种client(包括producer,consumer或admin)可能会用到的方法:1. fetchTopicMetadata(producer版本): producer client会调用该方法来发送一个T...
阅读全文
摘要:顾名思义,就是kafka的consumer api包。一、ConsumerConfig.scalaKafka consumer的配置类,除了一些默认值常量及验证参数的方法之外,就是consumer的配置参数了,比如group.id, consumer.id等,详细列表见官网。二、ConsumerIt...
阅读全文
摘要:十四、AbstractFetcherManager.scala该scala定义了两个case类和一个抽象类。两个case类很简单:1. BrokerAndFectherId:封装了一个broker和一个fetcher的数据结构2. BrokerAndInitialOffset:封装了broker和初...
阅读全文