php kafka扩展使用

一、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,我这边下载的是二进制的,不需要自己编译,也可以下载源码版,自己编译安装

php kafka扩展使用_第1张图片

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

php kafka扩展使用_第2张图片

消费者默认监听2182端口,也可以自己去修改

vi zookeeper.properties

php kafka扩展使用_第3张图片

三、开启测试

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可以看到

php kafka扩展使用_第4张图片

注意:启动时可能会有一些问题,比如端口占用,等等,不要慌,慢慢来,看报错信息,百度百度,你会成功的,不懂的可以留言给我

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

> ps aux | grep server-1.properties

7564 ttys002    0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.8/Home/bin/java...

> kill -9 7564

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

你可能感兴趣的:(php,linux)