一、kafka是什么
Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。
这个独特的设计是什么样的呢?
首先让我们看几个基本的消息系统术语:
Kafka将消息以topic为单位进行归纳。
将向Kafka topic发布消息的程序成为producers.
将预订topics并消费消息的程序成为consumer.
Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息,如下图所示:
客户端和服务端通过TCP协议通信。Kafka提供了Java客户端,并且对多种语言都提供了支持。
二、安装kafka
前提:要安装jdk
1、去这个页面下载kafka http://kafka.apache.org/downloads.html,我这边下载的是二进制的,不需要自己编译,也可以下载源码版,自己编译安装
2、下载安装
cd /download
wget https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.12-2.0.0.tgz
tar -zxvf kafka_2.11-2.0.0.tgz
cd /download/kafka_2.11-2.0.0/config
编辑 监听的端口,让生产者监听9092端口
vi server.properties
消费者默认监听2182端口,也可以自己去修改
vi zookeeper.properties
三、开启测试
1、开启
cd /download/kafka_2.11-2.0.0
开一个终端1启动zookeeper (这里不懂zookeep是什么,可以看我上一篇博客)
./bin/zookeeper-server-start.sh config/zookeeper.properties
开一个终端2启动启动kafka
./bin/kafka-server-start.sh config/server.properties
开一个终端4启动测试的生产者,并监听topic的test
./bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
开一个终端3启动测试的消费者,并监听topic的test(注意新版的要用--bootstrap-server,旧版的用--zookeeper)
./bin/kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic test --from-beginning
其他操作指令:
a、创建一个test的话题:
bin
/kafka-topics
.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic
test
b、查询话题
bin
/kafka-topics
.sh --list --zookeeper localhost:2181
具体可以看:
http://kafka.apache.org/quickstart
此时
在终端4 输入信息,在终端3可以看到
注意:启动时可能会有一些问题,比如端口占用,等等,不要慌,慢慢来,看报错信息,百度百度,你会成功的,不懂的可以留言给我
2、设置多代理集群
复制两个server.properties
cp
config
/server
.properties config
/server-1
.properties
cp
config
/server
.properties config
/server-2
.properties
分别编辑两个文件
config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs-2
启动两个新节点
终端5:bin/kafka-server-start
.sh config
/server-1
.properties
终端6:bin
/kafka-server-start
.sh config
/server-2
.properties
创建一个新的话题作为这个3个代理的replication-factor
开一个终端向生产者写入信息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
>my test message 1
>my test message 2
>my test message 3
打开终端用消费者获取信息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-replicated-topic --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic my-replicated-topic --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server localhost:9094 --topic my-replicated-topic --from-beginning
可以测试容错能力
1 2 3 |
|
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
虽然最初写的leader已经挂掉。但是这些信息仍然可以用来消费
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
>my test message 1
>my test message 2
>my test message 3