kafka基本使用
1.1kafka是什么有什么作用
kafka不仅仅是一款开源的消息引擎(System Messaging)系统,而且是一个分布式流处理平台(Distributed Streaming Platform)
1.1.1 消息引擎
消息引擎模型:
- 点对点模型
- 发布订阅模型
消息引擎消息格式(消息的编码方式)
- CSV,XML,Json,Protocol Buffer Thrift
- kafka选择的是二进制
说起消息引擎就不得不说大名鼎鼎的JMS(Java Message System),JMS仅仅是一组API规范但是因为它太过于出名和努都主流的消息引擎都支持JMS规范例如:ActiveMQ,RabbitMQ,kafka等等,但是kafka并未完全遵照JMS规范。
1.1.2 Distributed Steraming Platform
是一款分布式流处理平台,是kafka1.0和2.0版本刚刚完善的一个新功能。
1.2 kafaka docker环境搭建
安装server端
#1.docker 拉取 zookeeper 和kafka 景象
docker search container_name
#2.拉取你需要的容器 默认最新版本
docker pull container_name
#3.启动容器 首先启动zk 然后启动kafka容器
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
#4.启动kafka容器
#先简单的介绍一下这几个参数 下边后仔细说明 KAFKA_ZOOKEEPER_CONNECT:zk地址
#KAFKA_LISTENERS 监听器 告诉外部系统用什么协议和主机号端口去访问开放的kafka服务
# KAFKA_ADVERTISED_LISTENERS advertised:空开的。这组监听器是Broker 公开对外暴露的
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0
-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.7:2181
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.7:9092
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
进入kafka容器进行基本操作
#进入kafka容器
docker exec -ti kafka(containerName or containerId) /bin/bash
#创建主题 test
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
#查看有多少主题
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
#查看当前主题详情
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test
#主题详情如下
# Topic:test PartitionCount:1 ReplicationFactor:1 Configs:segment.bytes=1073741824
# Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
#Isr 存活着的replicas
#发送消息 创建producer端
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
#接收消息 常见consumer端
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
1.3 kafka集群环境搭建及其使用
#集群kafka操作 setting up a muliti-broker cluster KAFKA_BROKER_ID kafka在进群中的唯一标示不能重复
docker run -d --name kafka2 -p 9093:9093 -e KAFKA_BROKER_ID=1
-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.7:2181
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.115.209:9093
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
#创建一个两个副本两个分区的Topic
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 2 --partitions 2 --topic test2
#主题详情如下
# Topic:my PartitionCount:2 ReplicationFactor:2 Configs:segment.bytes=1073741824
# Topic: my Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0
#Isr 还在活着的副本 说明partitin1挂了