Kafka 安装

本文由 简悦 SimpRead 转码, 原文地址 www.jianshu.com

作为三大 MQ 队列服务的 Kafka 我们不会默认,Kafka 一般用来堆积海量日志

Kafka 中有以下一些概念。

Broker:任何正在运行中的 Kafka 示例都称为 Broker。
Topic:Topic 其实就是一个传统意义上的消息队列。
Partition:即分区。一个 Topic 将由多个分区组成,每个分区将存在独立的持久化文件,任何一个 Consumer 在分区上的消费一定是顺序的;当一个 Consumer 同时在多个分区上消费时,Kafka 不能保证总体上的强顺序性(对于强顺序性的一个实现是 Exclusive Consumer,即独占消费,一个队列同时只能被一个 Consumer 消费,并且从该消费开始消费某个消息到其确认才算消费完成,在此期间任何 Consumer 不能再消费)。
Producer:消息的生产者。
Consumer:消息的消费者。
Consumer Group:即消费组。一个消费组是由一个或者多个 Consumer 组成的,对于同一个 Topic,不同的消费组都将能消费到全量的消息,而同一个消费组中的 Consumer 将竞争每个消息(在多个 Consumer 消费同一个 Topic 时,Topic 的任何一个分区将同时只能被一个 Consumer 消费)。

Kafka 的特性

高吞吐量、低延迟:kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个 topic 可以分多个 partition, consumer group 对 partition 进行 consume 操作;
可扩展性:kafka 集群支持热扩展;
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
容错性:允许集群中节点失败(若副本数量为 n, 则允许 n-1 个节点失败);
高并发:支持数千个客户端同时读写;
支持实时在线处理和离线处理:可以使用 Storm 这种实时流处理系统对消息进行实时进行处理,同时还可以使用 Hadoop 这种批处理系统进行离线处理;

现在我们在 Mac 下安装 Kafka

执行命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
shumingjiandeMacBook-Pro-2:~ shumingjian$ brew install kafka
Please wait for it to finish or terminate it to continue.
==> Downloading https:

==> Pouring kafka-2.1.1.mojave.bottle.tar.gz
==> Caveats
To have launchd start kafka now and restart at login:
brew services start kafka
Or, if you don't want/need a background service you can just run:
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties & kafka-server-start /usr/local/etc/kafka/server.properties
==> Summary
🍺 /usr/local/Cellar/kafka/2.1.1: 162 files, 52.7MB
shumingjiandeMacBook-Pro-2:~ shumingjian$

安装完成后我们启动它:

1
2
3
shumingjiandeMacBook-Pro-2:~ shumingjian$ brew services start kafka
==> Successfully started `kafka` (label: homebrew.mxcl.kafka)
shumingjiandeMacBook-Pro-2:~ shumingjian$

进入 Kafka 的 bin 目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
shumingjiandeMacBook-Pro-2:kafka shumingjian$ cd /usr/local/Cellar/kafka/2.1.1/libexec/bin
shumingjiandeMacBook-Pro-2:bin shumingjian$ ls
connect-distributed.sh kafka-producer-perf-test.sh
connect-standalone.sh kafka-reassign-partitions.sh
kafka-acls.sh kafka-replica-verification.sh
kafka-broker-api-versions.sh kafka-run-class.sh
kafka-configs.sh kafka-server-start.sh
kafka-console-consumer.sh kafka-server-stop.sh
kafka-console-producer.sh kafka-streams-application-reset.sh
kafka-consumer-groups.sh kafka-topics.sh
kafka-consumer-perf-test.sh kafka-verifiable-consumer.sh
kafka-delegation-tokens.sh kafka-verifiable-producer.sh
kafka-delete-records.sh trogdor.sh
kafka-dump-log.sh zookeeper-security-migration.sh
kafka-log-dirs.sh zookeeper-server-start.sh
kafka-mirror-maker.sh zookeeper-server-stop.sh
kafka-preferred-replica-election.sh zookeeper-shell.sh

创建一个 topic(主题)

1
2
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -create -zookeeper localhost:2181 -replication-factor 1 -partitions 1 -topic test
Created topic "test".

查看刚刚创建的主题:

1
2
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -list -zookeeper localhost:2181
test

生产消息

1
2
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-producer -broker-list localhost:9092 -topic test
>iouiupo

消费信息

1
2
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-consumer -bootstrap-server localhost:9092 -topic test -from-beginning
iouiupo

至此 kafka 安装完成