精华内容
下载资源
问答
  • kafka源码阅读

    2020-03-24 15:59:21
    1.kafka源码-broker的基础模块serversocket

    1、疑问点:

    • kakfa 网络模型
    • kafka 协议&基础数据结构
    • kafka 分区&副本逻辑
    • kafka 文件读写
    • kafka offset和highWatermark原理
    • kafka leader&follower数据同步
    • kafka leader如何选举
    • kafka producer和consumer源码
    • kafka和rocketmq/qmq/rabbitmq/activemq的优缺点比较

    接下来带着疑问点撸源码......

     

    2、源码解读:

    3、参考文章

    kafka集群metadata管理:https://cloud.tencent.com/developer/article/1329510

    4、fork代码-加上部分自己的注释

    https://gitee.com/shandadadada/kafka-annotation

     

    展开全文
  • Kafka源码阅读

    2021-03-04 11:10:10
    一、源码编译 官网下载源码,17年出版的书中源码使用的... 配置kafka源码中的maven地址,改为: maven { url'http://maven.aliyun.com/nexus/content/groups/public/'} maven { url'http://maven.aliyun...

    一、源码编译

    1. 官网下载源码,17年出版的书中源码使用的版本为kafka-0.10.1。
    2. 准备JDK1.8、Idea、maven、gradle环境。注:kafka-0.10.1不支持gradle5.X,请使用gradle4.X版本
    3. 配置kafka源码中的maven地址,改为:

      maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }

      maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }

      注:所有地方均修改,否则可能依赖包下载失败。

    4. 如提示You can't map a property that does not exist: propertyName=testClassesDir,是因为kafka-0.10.1版本不支持gradle5.X
    5. 本地编译,build.gradle文件顶部增加配置

      ScalaCompileOptions.metaClass.daemonServer = true

      ScalaCompileOptions.metaClass.fork = true

      ScalaCompileOptions.metaClass.useAnt = false

      ScalaCompileOptions.metaClass.useCompileDaemon = false

    6. 点击gradle编译。编译成功后的结构如下:

    展开全文
  • kafka源码阅读环境

    千次阅读 2018-06-03 01:31:04
    在开始分析kafka的源码之前,我们先要手动搭建kafka源码的调试环境,需要准备的软件有,java、scala、gradle、zookeeper、kafka、ide 软件版 java:1.8.0_141 scala:2.11.4 gradle:4.7 zookeeper:3.4.6 kafka...

    在开始分析kafka的源码之前,我们先要手动搭建kafka源码的调试环境,需要准备的软件有,java、scala、gradle、zookeeper、kafka、ide
    软件版

    java:1.8.0_141
    scala:2.11.4
    gradle:4.7
    zookeeper:3.4.6
    kafka:1.0.0  
    ide:idea 2017.1.5
    OS:window7  64

    1、安装:
    首先安装 jdk 、scala 、gradle。这里就不详细介绍了,这个网上应该很多说明。这个主要介绍一下window下面安装zookeeper。
    从zookeeper官网下载其二进制压缩包,之后解压缩,这里我们部署的是单机模式,因为主要是给kafka来使用,
    解压以后,将%ZOOKEEPER%\conf\zoo_sample.cfg文件复制一份,重命名为zoo.cfg。修改zoo.cfg配置文件,这里主要就是修改dataDir配置项,此配置项指向zookeeper存储数据的目录,其他配置可以不进行修改
    这里写图片描述
    以上修改了以后,和java一样需要配置环境变量
    由于kafka使用依赖于zookeeper服务,在启动kafka之前,需要先使用zkServer命令,启动上文已经配置好的zookeeper服务
    这里写图片描述

    2、kafka源码构建
    从kafka官网上面下载kafka-1.0.0-src,解压,使用命令行进入kafka的根目录,使用gradle idea 命令进行构建,如果是eclipse工程请使用gradle eclipse命令。在构建过程中会从网上下载各种依赖包,时间会有点长,最终输出BUILD SUCCESSFUL字样,表示构建成功
    这里写图片描述
    3、idea 安装scala 插件
    在 settings -》plugins->scala
    这里写图片描述

    4、配置、启动kafka
    在kafka服务端使用log4j输出日志,启动前需要把log4j.properties配置文件放置到src/main/scala路径下,然后运行程序,这样才能正确输出日志信息,此log4j.properties文件可以从conf目录中获取
    这里写图片描述
    这里写图片描述

    server.properties是kafka的主要配置文件,这里我们主要修改一下log.dirs,其他的配置文件后面在介绍
    这里写图片描述

    5、配置kafka的启动参数
    kafka 服务端的入口类是kafka.Kafka,除了指定入口类,还需要指定server.properties配置文件所在位置,即在kafka源代码的config目录下
    第一次启动时,idea会重新编译整个项目,编译完成后启动,
    这里写图片描述
    这里写图片描述

    6、验证
    为了验证上文配置的源码环境是否成功,可以使用kafka二进制包中自带的三个脚本进行验证,分布是kafka-topics用于创建topic,kafka-console-producer是一个命令行producer,kafka-console-consumer是一个命令行consumer
    首先使用kafka-topics.bat创建一个”test” topic其中的partition和replication-factor都为1

    首先我们需要在kafka的源码路径上面执行 gradle jarAll,执行完成以后会出现BUILD SUCCESSFUL的字眼
    这里写图片描述
    接下来进入到%KAFKA_HOME%\bin\windows下面
    执行
    kafka-topics.bat –create –zookeeper 192.168.1.106:2181 –replication-factor 1 –partitions 1 –topic test
    这里写图片描述
    当topic创建成功以后,启动2个命令行窗口,分别执行下面2行命令,一个作为生产者,另一个作为消费者
    kafka-console-producer.bat –broker-list 192.168.1.106:9092 –topic test
    kafka-console-consumer.bat –zookeeper 192.168.1.106:2181 –topic test
    启动完成以后,在命令行里面随便输入内容,可以在消费者命令行窗口中看到相应的消息,这就表明我们搭建的kafka源码环境可以正常运行了,安装完成之后,可以直接在IDE中进行debug分析kafka的工作流程了
    这里写图片描述
    这里写图片描述

                                                     更多请关注微信公众号
                                                 更多请关注微信公众号

    展开全文
  • kafka 源码阅读 idea

    2018-03-01 21:21:49
    开发环境: Java 1.8 + Idea2016.2.1 + Scala 2.10.6 +Gradle 4.5.1 + Kafka 0.10.0.0kafka下载地址:http://kafka.apache.org/downloads.htmlgradle下载地址:...

    开发环境: Java 1.8 + Idea2016.2.1 + Scala 2.10.6 +Gradle 4.5.1 + Kafka 0.10.0.0


    kafka下载地址:http://kafka.apache.org/downloads.html

    gradle下载地址:https://services.gradle.org/distributions/gradle-4.5.1-bin.zip


    一、Gradle安装配置

    Kafka代码自0.8.x之后就使用Gradle来进行编译和构建了,因此首先需要安装GradleGradle集成并吸收了Maven主要优点的同时还克服了Maven自身的一些局限性——你可以访问https://www.gradle.org/downloads/ 下载最新的Gradle版本。下载解压到一个目录,然后创建一个环境变量GRADLE_HOME指向解压的目录,再将%GRADLE_HOME%\bin加到PATH环境变量中,Gradle就安装配置好了。打开一个cmd输入gradle -v 验证一下:



    二、Kafka源代码下载

    安装好Gradle之后我们开始下载Kafka的源代码,当前下载的版本是0.10.0.0你可以从http://kafka.apache.org/downloads.html处下载源代码包。下载之后解压缩到一个目录,目录结构如下图所示:


    重要目录的作用如下:

    bin目录:     WindowsUnix平台下的执行脚本,比如kafka-server-startconsole-producerconsole-consumer
    clients目录:      Kafka客户端代码
    config目录:       Kafka配置文件,其中比较重要的是server.properties,启动Kafkabroker需要直接加载这个文件
    contrib目录:     Kafkahadoop集成的代码,包括hadoop-consumerhadoop-producer
    core目录:         Kafka的核心代码,也是作者后面重点要学习的部分
    examples目录: Kafka样例代码,例如如何使用Java编写简单的producerconsumer
    system_test:   系统测试脚本,主要用python编写
    其他的目录和配置文件大多和gradle配置有关,就不赘述了。


    三、下载gradle wrapper类库

      将这个配置单独作为一个步骤是因为官网的教程中并没有详细给出这方面的配置方法。如果直接从官网下载了源代码进而执行gradlew eclipse生成项目工程就会报错:

    Error: Could not find or load main classorg.gradle.wrapper.GradleWrapperMain

      在Kafka源代码的gradle子目录中果然没有wrapper类库,因此我们要先安装一个Gradle Wrapper库,方法也很简单,打开个cmd窗口,在Kafka源代码根目录下执行gradle wrapper即可。你只需运行这个命令一次即可。如果是首次安装需要花一些时间去下载所需的jar包。Kafka的源代码是用Scala语言编写的,下图中清晰地显示我们使用Scala版本是2.10.6。你可以在gradle.properties文件中指定Scala版本

    执行报错:



    解决方法:vim kafka-0.10.0.0-src/build.gradle文件

    添加如下行

    ScalaCompileOptions.metaClass.daemonServer = true  
    ScalaCompileOptions.metaClass.fork = true  
    ScalaCompileOptions.metaClass.useAnt = false  
    ScalaCompileOptions.metaClass.useCompileDaemon = false  

    修改后再执行,成功:


    命令运行成功之后,在kafkagradle子目录中会多出一个wrapper子目录,里面包含了一个jar包和一个配置文件。至此Gradle wrapper已被成功安装在本机:


    四、生成IDEA工程文件并导入到IDEA

    上述准备工作一切就绪后,我们现在可以生成IDEA工程文件。具体做法为打开一个cmd窗口,切换到kafka源代码根路径下,运行gradle idea,如果是第一次运行,可能会花费一些时间去下载必要的jar包,在等待了一段时间之后,终于看到了BUILDSUCCESSFUL的字样表示项目工程文件生成成功:



    项目导入到IDEA工程中

    File-->Open

    IDEA中查看源码工程



    五、配置server.properties

    kafka broker启动时需要加载server.properties文件。该文件默认位置是在config目录下,因此需要设置运行kafka.Kafka.scala时的Program arguments../config/server.properties以保证Kafka.scala能够找到该配置文件。

      另外,由于kafka broker会将一些元数据信息保存在zookeeper中,因此在启动kafka broker之前必须要先有一个启动着的zookeeper实例或集群,然后我们还需要在server.properties文件更新zookeeper连接信息(主机名:端口CSV列表),如下图所示:

     

    # Zookeeper connection string (seezookeeper docs for details).

    # This is a comma separated host:portpairs, each corresponding to a zk

    # server. e.g."127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".

    # You can also append an optional chrootstring to the urls to specify the

    # root directory for all kafka znodes.

    zookeeper.connect=10.11.207.97:2181

     

    # Timeout in ms for connecting to zookeeper

    zookeeper.connection.timeout.ms=6000

     

    六、启动kafka broker

    Okay! 现在可以说一切准备就绪了,可以运行kafka了,如果前面所有步骤都执行正确的话,一个kafka broker进程应该会正确地启动起来,如下图所示:

    wKiom1hRNWuR6HMTAAG8Yaveh58455.png-wh_50

    另外说一下,如果启动时没有看到任何log输出,可以将config目录下的log4j.properties文件拷贝到core\src\main\scala目录下,应该就能解决此问题。

    好了,至此你就可以使用这个可运行的环境来研究Kafka源代码了。祝大家好运:)

    七、log4j.properties文件路径设置

    启动kafka server很奇怪, log4j.properties文件找不到,报如下错误。

    log4j:WARN No appenders could be found forlogger (kafka.utils.VerifiableProperties). 
    log4j:WARN Please initialize the log4j system properly.

    只有把 log4j.properties放置到src/main/Scala路径下,才能找到文件,然后运行程序,正确输出日志信息。

     

    通过如上7步后就可以正确启动kafka程序,进行相关debug,并研究其源代码了。


    本文出自 “数字科技” 博客,请务必保留此出处http://7639538.blog.51cto.com/7629538/1882808


    展开全文
  • 首先感谢@王小日 提供的书《Apache kafka 源码剖析》。参照本书的第一章,先进行环境搭建。 一 依赖: jdk:1.8 gradle: https://services.gradle.org/distributions/gradle-5.2.1-all.zip scala: ...
  • kafka源码阅读环境搭建

    千次阅读 2016-09-28 11:19:13
    1、源码地址 http://archive.apache.org/dist/kafka/0.10.0.0/kafka-0.10.0.0-src.tgz 2、环境准备 centOS gradle 下载地址 https://services.gradle.org/distributions/gradle-3.1-bin.zip 安装请参考 这里 ...
  • Kafka源码阅读环境搭建

    千次阅读 2017-10-01 14:23:57
    1,搭建kafka代码阅读环境 2,搭建kafka运行环境,并测试 3,分析kafka启动部署原理 4,分析kafka工作机制 5,对关键部分进行分析 马上开干。。。。 1,jdk下载安装  下载地址:链接:...
  • storm-kafka源代码阅读和使用

    千次阅读 2012-12-31 14:48:41
    KafkaSpout.java 功能: 从kafka集群的各个节点读取消息, ...代码阅读: 重要对象: Map stateCconf:保存kafka消费者信息的zookeeper配置信息. ZkState _state:提供从zookeeper读写kafka消费者信息功能. D
  • 看到写的比较好的源码, 分析里面的一些架构技巧,代码编程的技巧。 内容介绍: producer生产数据的流程 broker端 broker如何接收数据(高并发) 数据写入(leader partition) 副本数据同步(HW, LEO) kafka的...
  • 搭建步骤类似与eclipse下类似 个人推荐IDEA下阅读,IDEA对kafka项目兼容性更好 ... IDEA下导入kafka项目 ...1 在kafka源码路径下执行gradle idea 2 import project 转载于:https://www.cnblogs.c...
  • 本节是图解kafka producer的整体流程, 如下图:
  • Kafka源码编译阅读环境搭建开发环境: Oracle Java 1.7.0_25 + Idea + Scala 2.10.5 +Gradle 2.1 + Kafka 0.9.0.1一、Gradle安装配置Kafka代码自0.8.x之后就使用Gradle来进行编译和构建了,因此首先需要安装Gradle。...
  • ,因为KafkaController一个操作一般会需要向多个broker发送消息,通过新建ControllerBrokerRequestBatch实例,并组装向各个broker的消息,可以简化代码。需要说明的是,在向ControllerBrokerRequestBatch中添加...
  • Author:赵志乾 ...kafka源码包中的案例代码在/kafka-2.0.0-src/examples/src/main目录下。导入IDEA后,对应的项目为main4。其包含一个package包:kafka.examples;在该包下共有4个类文件,分别为Consumer.ja...
  • 四种情况下拉取请求回立刻返回: + 请求要求立刻返回 + 请求不要求任何数据 + 由足够数据量回应请求 + 处理时发生错误。 +
  • 源码阅读,编译和调试至关重要,这篇文章主要介绍如何搭建开发环境
  • kafka源码阅读-connector,distributed模式

    千次阅读 2018-07-16 10:20:17
    运行 bin/connect-distributed.sh config/connect-distributed....kafka-serde-tools" "monitoring-interceptors“ kafka-connect-* 的jar包设置到CLASSPATH中,程序运行起来后会加载到内存中。b...
  • 尤其是Kafka源码。 2、下载 到kafka官网下载你要学习的版本,新版本由于编程风格以及commit的人的风格不一。最好是学习后几个版本。下载好,放入指定位置解压 官网: http://kafka.apache.org/ 下载地址:...
  • amp;format=all2.配置环境变量,GRADLE_HOME,path,注意:要在系统变量中配置3.cmd进入dos窗口,gradle -v查看版本4.下载kafka源码,下载地址:http://kafka.apache.org/downloads.html5.解压ka...
  • response = simpleConsumer.fetch(fetchRequest)
  • kafka源码IDEA阅读环境

    2020-04-25 20:08:46
    kafka源码阅读环境 kafka源码导入idea
  • //其中PartitionFetchInfo的定义如下: case class PartitionFetchInfo(offset: Long, fetchSize: Int)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,378
精华内容 26,551
关键字:

kafka源码阅读