Kafka学习笔记
目录
Kafka
- 生产者
- 消费者
- 主题(Topic)
Kafka常用命令
启动 | 命令 |
---|---|
启动zookeeper | nohup bin/zookeeper-server-start.sh.config/zookeeper.properties & |
启动server | nohup bin/kafka-server-start.sh config/server.properties & |
查看topic | bin/kafka-topics.sh –list –zookeeper localhost:2181 |
创建一个topic | bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test |
发送数据 | bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test |
消费数据 | bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic test –from-beginning |
一些优点
-
多个消费者
kafka支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。另外,多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。
-
消费者可以被关闭,但消息会继续保留在kafka里。消费者可以从上次中断的地方继续处理消息。
-
伸缩性
为了能够处理大量数据,kafka从一开始就被设计成一个具有灵活伸缩性的系统。用户在开发阶段可以额先使用单个broker,再扩展到包含三个broker的小型开发集群,然后随着数据量不断增长,部署到生产环境的集群可能包含上百个broker。对在线集群进行扩展,丝毫不影响整体系统的可用性。一个包含多个broker的集群,即使个别broker失效,仍然可以持续地为客户提供服务。要提高集群的容错能力,需要配置较高的复制系数。
-
Kafka充当缓冲区,系统不会崩溃
以前,外部源系统的数据转换通常在晚上分批进行。Kafka通过充当从源系统接收数据的中介,然后实时地将这些数据提供给目标系统来解决这个缓慢的多步骤过程。更重要的是,系统不会崩溃,因为 Kafka是它自己独立的一组服务器(称为 Kafka集群)。
-
有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。
一些缺点
- 重复消息。Kafka保证每条消息至少送达一次,虽然几率很小,但一条消息可能被送达多次。
- 消息乱序。Kafka某一个固定的Partition内部的消息是保证有序的,如果一个Topic有多个Partition,partition之间的消息送达不保证有序。
- 复杂性。Kafka需要Zookeeper的支持,Topic一般需要人工创建,部署和维护比一般MQ成本更高。