介绍

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性:

  • 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  • 高吞吐量,即使是非常普通的硬件Kafka也可以支持每秒数百万 的消息。
  • 支持通过Kafka服务器和消费机集群来分区消息。
  • 支持Hadoop并行数据加载。

下载安装

安装包模式

  • 下载Kafka并解压

  • Kafka目录介绍

    • /bin 操作kafka的可执行脚本,还包含windows下脚本
    • /config 配置文件所在目录
    • /libs 依赖库目录
    • /logs 日志数据目录,目录kafka把server端日志分为5种类型,分为:server,request,state,log-cleaner,controller
  • 配置

    • Kafka的配置部署依赖Zookeeper,请参考Zookeeper
    • 进入kafka安装工程根目录编辑config/server.properties,kafka最为重要三个配置依次为:broker.id、log.dir、zookeeper.connect,kafka server端config/server.properties参数说明和解释如下:server.properties配置属性说明

Docker模式

  • 下载Zookeeper镜像

    • docker pull wurstmeister/zookeeper
  • 下载Kafka镜像

    • docker pull wurstmeister/kafka

启动服务

  • 命令行模式

    • 启动

      • 进入kafka目录,敲入命令 bin/kafka-server-start.sh config/server.properties &
    • 检测2181与9092端口

      • netstat -tunlp|egrep “(2181|9092)”
  • Docker模式

    • 启动Zookeeper容器

      • docker run -d —name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
    • 启动Kafka容器

      • docker run -d —name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.204.128:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.204.128:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

功能使用

常见问题

参考资料