浏览代码

修改了kafka笔记

seamew 2 年之前
父节点
当前提交
19cabb6c11
共有 1 个文件被更改,包括 44 次插入43 次删除
  1. 44 43
      大数据/kafka/1.kafka笔记.md

+ 44 - 43
大数据/kafka/1.kafka笔记.md

@@ -37,7 +37,7 @@ kafka、JMS(ActiveMQ)就属于这个流派,⽣产者会发送 key 和数
 
 这种的代表是 RabbitMQ(或者说是 AMQP)。⽣产者发送 key 和数据,消费者定义订阅的队列,Broker 收到数据之后会通过⼀定的逻辑计算出 key 对应的队列,然后把数据交给队列
 ![image-20210910174538743](../../照片/image-20210910174538743.png)
-这种模式下解耦了 key 和 queue,在这种架构中 queue 是⾮常轻级的(在 RabbitMQ 中它的上限取决于你的内存),消费者关⼼的只是⾃⼰的 queue;⽣产者不必关⼼数据最终给谁只要指定 key 就⾏了,中间的那层映射在 AMQP 中叫 exchange(交换机
+这种模式下解耦了 key 和 queue,在这种架构中 queue 是⾮常轻级的(在 RabbitMQ 中它的上限取决于你的内存),消费者关⼼的只是⾃⼰的 queue;⽣产者不必关⼼数据最终给谁只要指定 key 就⾏了,中间的那层映射在 AMQP 中叫 exchange(交换机)
 
 AMQP 中有四种 exchange
 * Direct exchange:key 就等于 queue
@@ -53,7 +53,7 @@ AMQP 中有四种 exchange
 ![image-20210910174906661](../../照片/image-20210910174906661.png)
 节点之间通讯的消息都是发送到彼此的队列中,每个节点都既是⽣产者⼜是消费者。ZeroMQ做的事情就是封装出⼀套类似于 Socket 的 API 可以完成发送数据,读取数据
 
-ZeroMQ 其实就是⼀个跨语⾔的、᯿ᰁ级的 Actor 模型邮箱库。你可以把⾃⼰的程序想象成⼀个 Actor,ZeroMQ 就是提供邮箱功能的库;ZeroMQ 可以实现同⼀台机器的 RPC 通讯也可以实现不同机器的 TCP、UDP 通讯,如果你需要⼀个强⼤的、灵活、野蛮的通讯能⼒,别犹豫 ZeroMQ
+ZeroMQ 其实就是⼀个跨语⾔的、轻量级的 Actor 模型邮箱库。你可以把⾃⼰的程序想象成⼀个 Actor,ZeroMQ 就是提供邮箱功能的库;ZeroMQ 可以实现同⼀台机器的 RPC 通讯也可以实现不同机器的 TCP、UDP 通讯,如果你需要⼀个强⼤的、灵活、野蛮的通讯能⼒,别犹豫 ZeroMQ
 
 
 # 三、Kafka的基本知识
@@ -66,18 +66,18 @@ ZeroMQ 其实就是⼀个跨语⾔的、᯿ᰁ级的 Actor 模型邮箱库。你
 * 上传到kafka服务器上:/usr/local/kafka
 * 解压缩压缩包
 * 进入到config目录内,修改server.properties
-```
+```shell
 #broker.id属性在kafka集群中必须要是唯⼀
 broker.id=0
 #kafka部署的机器ip和提供服务的端⼝号
-listeners=PLAINTEXT://192.168.245.21:9092
+listeners=PLAINTEXT://127.0.0.1:9092
 #kafka的消息存储⽂件
 log.dir=/usr/local/kafka/data/kafka-logs
 #kafka连接zookeeper的地址
 zookeeper.connect=localhost:2181
 ```
 * 进入到bin目录内,执行以下命令来启动kafka服务器(带着配置文件)
-```
+```shell
 # 先启动zookeeper,使用自带的zookeeper
 bin/zookeeper-server-start.sh -daemon   config/zookeeper.properties 
 # 启动kafka
@@ -85,7 +85,7 @@ bin/kafka-server-start.sh -daemon  config/server.properties
 # 这里的-daemon为可选参数,加上就是后台启动,不加就是前台启动会打印到控制台。
 ```
 * 校验kafka是否启动成功:
-```
+```shell
 # 进入到zk内查看是否有kafka的节点:
 bin/zookeeper-shell.sh 127.0.0.1:2181
 ls /brokers/ids/
@@ -108,21 +108,22 @@ ls /brokers/ids/
 ## 3.创建topic
 
 * 通过kafka命令向zk中创建⼀个主题
-```
-./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
+
+```sh
+kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
 ```
 
 * 查看当前zk中所有的主题
-```
-./kafka-topics.sh --list --zookeeper 192.168.0.:2181
+```shell
+kafka-topics.sh --list --zookeeper 127.0.0.1:2181
 ```
 
 ## 4.发送消息
 
 kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内容,或者我们也可以以命令⾏中直接输⼊内容,并将这些内容以消息的形式发送到kafka集群中。在默认情况下,每⼀个⾏会被当做成⼀个独⽴的消息。使⽤kafka的发送消息的客户端,指定发送到的kafka服务器地址和topic
 
-```
-./kafka-console-producer.sh --broker-list 192.168.245.21:9092 --topic test
+```shell
+kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
 ```
 
 
@@ -131,13 +132,13 @@ kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内
 对于consumer,kafka同样也携带了⼀个命令⾏客户端,会将获取到内容在命令中进⾏输出,默认是消费最新的消息。使⽤kafka的消费者消息的客户端,从指定kafka服务器的指定topic中消费消息
 
 * ⽅式⼀:从最后⼀条消息的偏移量+1开始消费
-```
-# 创建消费者时,若不指定group.id,则该消费者属于默认消费组
-./kafka-console-consumer.sh --bootstrap-server 192.168.245.21:9092 -topic test
+```shell
+# 创建消费者时,若不指定group.id,则会创建一个默认的消费者组,组里面只有test这一个消费者
+kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 -topic test
 ```
 * ⽅式⼆:从头开始消费
-```
-./kafka-console-consumer.sh --bootstrap-server 192.168.245.21:9092 --from-beginning --topic test
+```shell
+kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic test
 ```
 
 
@@ -147,7 +148,7 @@ kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内
 ![image-20210911113428475](../../照片/image-20210911113428475.png)
 
 * ⽣产者将消息发送给broker,broker会将消息保存在本地的⽇志⽂件中
-```
+```shell
 /usr/local/kafka/data/kafka-logs/主题-分区/00000000.log
 ```
 * 消息的保存是有序的,通过offset偏移量来描述消息的有序性
@@ -158,27 +159,27 @@ kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内
 在⼀个kafka的topic中,启动两个消费者,⼀个⽣产者,问:⽣产者发送消息,这条消息是否同时会被两个消费者消费?
 
 如果多个消费者在同⼀个消费组,那么只有⼀个消费者可以收到订阅的topic中的消息。换⾔之,同⼀个消费组中只能有⼀个消费者收到⼀个topic中的消息。
-```
-./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --consumer-property group.id=testGroup --topic test
+```shell
+kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --consumer-property group.id=testGroup --topic test
 ```
 
 ## 8.多播消息
 
 不同的消费组订阅同⼀个topic,那么不同的消费组中只有⼀个消费者能收到消息。实际上也是多个消费组中的多个消费者收到了同⼀个消息。
-```
-./kafka-console-consumer.sh --bootstrap-server 192.168.0.4:9092 --consumer-property group.id=testGroup1 --topic test
+```shell
+kafka-console-consumer.sh --bootstrap-server 192.168.0.4:9092 --consumer-property group.id=testGroup1 --topic test
 
-./kafka-console-consumer.sh --bootstrap-server 192.168.245.21:9092 --consumer-property group.id=testGroup2 --topic test
+kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --consumer-property group.id=testGroup2 --topic test
 ```
 下图就是描述多播和单播消息的区别
 ![image-20210913161137166](../../照片/image-20210913161137166.png)
 
 ## 9. 查看消费组的详细信息
-```
+```shell
 # 查看当前主题下有哪些消费组
-./kafka-consumer-groups.sh --bootstrap-server 192.168.245.21:9092 --list
+kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
 # 通过以下命令可以查看到消费组的详细信息:
-./kafka-consumer-groups.sh --bootstrap-server 192.168.245.21:9092 --describe --group testGroup
+kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group testGroup
 ```
 重点关注以下⼏个信息:
 * current-offset: 最后被消费的消息的偏移量
@@ -204,12 +205,12 @@ kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内
 
 ### 2.2创建多分区的主题
 
-```
+```shell
 # 为⼀个主题创建多个分区
-./kafka-topics.sh --create --zookeeper 192.168.245.21:2181 --replicationfactor 1 --partitions 2 --topic test1
+kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replicationfactor 1 --partitions 2 --topic test1
 
 # 可以通过这样的命令查看topic的分区信息
-./kafka-topics.sh --describe --zookeeper 192.168.245.21:2181 --topic test1
+kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic test1
 ```
 
 
@@ -232,18 +233,18 @@ kafka⾃带了⼀个producer命令客户端,可以从本地⽂件中读取内
 
 * 创建三个server.properties⽂件
 
-```
+```shell
 # 0 1 2
 broker.id=2
 // 9092 9093 9094
-listeners=PLAINTEXT://192.168.245.21:9094
+listeners=PLAINTEXT://127.0.0.1:9094
 //kafka-logs kafka-logs-1 kafka-logs-2
 log.dir=/usr/local/data/kafka-logs-2
 ```
 
 * 通过命令来启动三台broker
 
-```
+```shell
 ./kafka-server-start.sh -daemon ../config/server.properties
 ./kafka-server-start.sh -daemon ../config/server1.properties
 ./kafka-server-start.sh -daemon ../config/server2.properties
@@ -251,7 +252,7 @@ log.dir=/usr/local/data/kafka-logs-2
 
 * 校验是否启动成功
 
-```
+```shell
 # 进入到zk内查看是否有kafka的节点:
 bin/zookeeper-shell.sh 127.0.0.1:2181
 ls /brokers/ids/
@@ -261,17 +262,17 @@ ls /brokers/ids/
 
 在创建主题时,除了指明了主题的分区数以外,还指明了副本数,那么副本是⼀个什么概念呢?
 
-```
+```shell
 # 副本是对分区的备份。在集群中,不同的副本会被部署在不同的broker上。下⾯例⼦:创建1个主题,2个分区、3个副本。
-./kafka-topics.sh --create --zookeeper 192.168.245.21:2181 --replication-factor 3 --partitions 2 --topic my-replicated-topic
+kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 2 --topic my-replicated-topic
 ```
 
 副本是为了为主题中的分区创建多个备份,多个副本在kafka集群的多个broker中,会有⼀个副本作为leader,其他是follower。
 查看topic情况:
 
-```
+```shell
 # 查看topic情况
-./kafka-topics.sh --describe --zookeeper 192.168.245.21:2181 --topic my-replicated-topic
+kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic my-replicated-topic
 ```
 ![image-20210913171740164](../../照片/image-20210913171740164.png)
 ![image-20210913172708931](../../照片/image-20210913172708931.png)
@@ -290,19 +291,19 @@ kafka的写和读的操作,都发⽣在leader上。leader负责把数据同步
 ## 3.关于集群消费
 
 ### 3.1向集群发送消息:
-```
-./kafka-console-producer.sh --broker-list 192.168.245.21:9092,192.168.245.21:9093,192.168.245.21:9094 --topic my-replicated-topic
+```shell
+./kafka-console-producer.sh --broker-list 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --topic my-replicated-topic
 ```
 
 ### 3.2从集群中消费消息
-```
+```shell
 ./kafka-console-producer.sh --broker-list
-192.168.245.21:9092,192.168.245.21:9093,192.168.245.21:9094 --topic my-replicated-topic
+127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --topic my-replicated-topic
 ```
 ### 3.3指定消费组来消费消息
-```
+```shell
 ./kafka-console-consumer.sh --bootstrap-server
-192.168.245.21:9092,192.168.245.21:9093,192.168.245.21:9094 --frombeginning --consumer-property group.id=testGroup1 --topic my-replicated-topic
+127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 --frombeginning --consumer-property group.id=testGroup1 --topic my-replicated-topic
 ```
 
 ### 3.4分区分消费组的集群消费中的细节