作为三大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
执行命令:
shumingjiandeMacBook-Pro-2:~ shumingjian$ brew install kafka
Please wait for it to finish or terminate it to continue.
==> Downloading https://homebrew.bintray.com/bottles/kafka-2.1.1.mojave.bottle.t
######################################################################## 100.0%
==> 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$
安装完成后我们启动它:
shumingjiandeMacBook-Pro-2:~ shumingjian$ brew services start kafka
==> Successfully started `kafka` (label: homebrew.mxcl.kafka)
shumingjiandeMacBook-Pro-2:~ shumingjian$
进入Kafka的bin目录:
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(主题)
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -create -zookeeper localhost:2181 -replication-factor 1 -partitions 1 -topic test
Created topic "test".
查看刚刚创建的主题:
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -list -zookeeper localhost:2181
test
生产消息
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-producer -broker-list localhost:9092 -topic test
>iouiupo
消费信息
shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-consumer -bootstrap-server localhost:9092 -topic test -from-beginning
iouiupo
至此 kafka安装完成