---
# System prepended metadata

title: Kafka 學習記錄
tags: [infrastructure]

---

---
title: Kafka 學習記錄
---
# Kafka 學習記錄
###### tags: `infrastructure`

參考文章：
---
介紹：https://blog.csdn.net/shangmingtao/article/details/79567921
安裝：https://www.baeldung.com/ops/kafka-docker-setup
****
2021/9/22:
--
ubuntu下透過上述的安裝教學會遇到問題，kafka strat後會在約五秒內關閉

暫時解是先在跳過docker安裝在本地

聖哥安裝資料:
```
wget  http://archive.apache.org/dist/kafka/0.11.0.0/kafka_2.11-0.11.0.0.tgz

tar xvf kafka_2.11-0.11.0.0.tgz

1906  sudo apt-get install openjdk-8-jdk
 1907  which java
 1908  sudo apt-get update
 1909  java
 1910  java -V
 1911  java -v
 1912  ls
 1913  ./bin/kafka-server-start.sh ./config/server.properties 
 1914  telnet 127.0.0.1 2181
 1915  telnet 127.0.0.1 9092
 1916  ls
 1917  ./bin/kafka-server-start.sh ./config/server.properties &
 1918  ./bin/zookeeper-server-start.sh ./config/zookeeper.properties &
```

聖哥kafka指令
```
查看服务是否已启动
netstat -tunlp|egrep "(2181|9092)"
可以输入
./bin/zookeeper-server-start.sh ./config/zookeeper.properties   和
./bin/kafka-server-start.sh ./config/server.properties   确认服务已经启动

b.创建订阅主题
./bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 -replication-factor 1 --partitions 3  --topic deals

./bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 -replication-factor 1 --partitions 3  --topic orders

./bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 -replication-factor 1 --partitions 3  --topic balances

查看订阅的主题
./bin/kafka-topics.sh --list  --zookeeper 127.0.0.1:2181

./bin/kafka-console-consumer.sh -zookeeper 127.0.0.1:12181 192.168.0.122:12181 192.168.0.200:12181 --from-beginning --topic deals    kafka 控制台检监测

删除主题
./bin/kafka-topics --delete –zookeeper 127.0.0.1:2181 --topic futures_deals
```

參考文章
https://juejin.cn/post/6844904054636675086
****

2021/9/24:
---
更新了參考文章，可以通過docker正常啟動kafka系列，唯一要留意的是文章裡面的port要改成９０９２，並且拿掉PLAINTEXT_HOST。
```
version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181
  
  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
```
****
通過docker 操作 wurstmeister/kafka
---
\#創建topic
docker exec kafka \
kafka-topics.sh \
--create --topic topic001 \
--partitions 4 \
--zookeeper zookeeper:2181 \
--replication-factor 1

\#創建producer
docker exec -it kafka \
kafka-console-producer.sh \
--topic topic001 \
--broker-list kafka:9092

\#創建consumer
docker exec kafka \
kafka-console-consumer.sh \
--topic topic001 \
--bootstrap-server kafka:9092

\#list topic
docker exec kafka \
kafka-topics.sh --list --zookeeper zookeeper:2181 
****

kafka 生產者三種發送方式 已被廢棄
---
【摘要】 在kafka-0.8.2之后，producer不再区分同步(sync)和异步方式(async)，所有的请求以异步方式发送，这样提升了客户端效率。producer请求会返回一个应答对象，包括偏移量或者错误信。这种异步方地批量的发送消息到kafka broker节点，因而可以减少server端资源的开销。新的producer和所有的服务器网络通信都是异步地，在ack=-1模式下需要等待所有的re...
在kafka-0.8.2之后，producer不再区分同步(sync)和异步方式(async)，所有的请求以异步方式发送，这样提升了客户端效率。producer请求会返回一个应答对象，包括偏移量或者错误信。这种异步方地批量的发送消息到kafka broker节点，因而可以减少server端资源的开销。新的producer和所有的服务器网络通信都是异步地，在ack=-1模式下需要等待所有的replica副本完成复制时，可以大幅减少等待时间。
https://bbs.huaweicloud.com/blogs/detail/259907