kafka学习(一) ---- 基本概念以及环境搭建

kafka学习(一) ---- 基本概念以及环境搭建

前言

因为项目涉及到kafka,本身之前没有接触过这方面的,学习了下,将搭建kafka运行环境同你们分享(单机搭建的Windows下的运行环境,Linux下的因为懒得装虚拟机就没有搭建,之后有时间在分享一次,搭建这个环境就是只为了学习)。html

一、基本概念

1.1 什么是kafka

Apache Kafka is publish-subscribe messaging rethought as a distributed commit log。Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.//官方解释apache

Kafka是一种高吞吐量的分布式发布订阅消息系统,它提供了相似于JMS的特性,可是在设计实现上彻底不一样,此外它并非JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每一个实例(server)成为broker。不管是kafka集群,仍是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。 总体运行机制以下图:windows

图来源于官网服务器

更多内容请参看:官方文档,这里就不一一翻译了。数据结构

1.2 kafka的特色

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

1.3 涉及的术语

  • Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker
  • Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不一样Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic便可生产或消费数据而没必要关心数据存于何处)
  • Partition Partition是物理上的概念,每一个Topic包含一个或多个Partition.
  • Producer 负责发布消息到Kafka broker
  • Consumer 消息消费者,向Kafka broker读取消息的客户端。
  • Consumer Group 每一个Consumer属于一个特定的Consumer Group(可为每一个Consumer指定group name,若不指定group name则属于默认的group)

二、环境搭建

2.1 下载

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

2.2 单机搭建win下的运行环境

官网没有win版本的,下载以后直接按照Linux下解压缩同样,解压以后文件结构以下:ide

2.2.1 配置kafka####

  1. 进入Kafka配置目录:S:\devTools\kafka_2.11-0.10.0.0\config
  2. 编辑文件“server.properties” 主要配置日志所在目录(也可使用默认的)
  3. 找到并编辑“log.dirs=/tmp/kafka-logs” to “log.dirs= S:/devTools/kafka_2.11-0.10.0.0/kafka-logs”
  4. 若是Zookeeper在某些其余的机器或集群上运行,能够将“zookeeper.connect:2181”修改成自定义IP与端口。在这个演示中咱们使用了同一个机器,所以不必作修改。文件中的Kafka端口和broker.id也是能够配置的。其余设置不变。
  5. Kafka会按照默认在9092端口上运行,并链接zookeeper的默认端口:2181。

2.2.2 运行kafka

重要:请确保在启动Kafka服务器前,Zookeeper实例已经准备好并开始运行。oop

Zookeeper如何安装运行请参看个人博客:Dubbo与Zookeeper、SpringMVC整合和使用中有关Zookeeper的介绍。性能

kafka在win下的启动命令都在bin目录下的Windows文件下,以下图: 学习

不知道是否是win脚本问题,直接运行这些命令都是失败的启动不了kafka,没有办法仍是cmd启动吧。

  1. 进入Kafka安装目录S:\devTools\kafka_2.11-0.10.0.0\
  2. 按下Shift+右键,选择“打开命令窗口”选项,打开命令行。
  3. 如今输入.\bin\windows\kafka-server-start.bat .\config\server.properties 并回车。
  4. 若是一切正常,命令行应当是这样:
  5. 如今Kafka已经准备好并开始运行,能够建立主题来存储消息了。咱们也能从Java/Scala代码中,或直接从命令行中生成或使用数据。

2.2.3 建立主题

  1. 如今建立主题,命名为“demo”,replication factor=1(由于只有1个Kafka服务器在运行)。若是集群中所运行的Kafka服务器不止1个,能够相应增长replication-factor,从而提升数据可用性和系统容错性。
  2. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  3. 输入下面的命令,回车:

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo

结果以下:

2.2.4 建立生产者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  2. 输入下面的命令,回车:

kafka-console-producer.bat --broker-list localhost:9092 --topic demo

2.2.5 建立消费者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  2. 输入下面的命令,回车:

kafka-console-consumer.bat --zookeeper localhost:2181 --topic demo

2.2.6 演示

执行以上的命令以后有两个窗口:一个生产者,一个消费者。

在producer命令行中任意输入内容,回车;在其余consumer命令行中能看到相应消息。若是可以将消息推送到consumer端并显示出来的话,Kafka安装就完成了。

最后上个成功的截图:

2.3 经常使用的命令

  1. 列出主题:kafka-topics.bat --list --zookeeper localhost:2181
  2. 描述主题:kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
  3. 从头读取消息:kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from -beginning
  4. 删除主题:kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
  5. 演示一个删除的:

相关文章
相关标签/搜索