本文由 简悦 SimpRead 转码, 原文地址 www.jianshu.com
作为三大 MQ 队列服务的 Kafka 我们不会默认,Kafka 一般用来堆积海量日志
Kafka 中有以下一些概念。
Broker:任何正在运行中的 Kafka 示例都称为 Broker。
Topic:Topic 其实就是一个传统意义上的消息队列。
Partition:即分区。一个 Topic 将由多个分区组成,每个分区将存在独立的持久化文件,任何一个 Consumer 在分区上的消费一定是顺序的;当一个 Consumer 同时在多个分区上消费时,Kafka 不能保证总体上的强顺序性(对于强顺序性的一个实现是 Exclusive Consumer,即独占消费,一个队列同时只能被一个 Consumer 消费,并且从该消费开始消费某个消息到其确认才算消费完成,在此期间任何 Consumer 不能再消费)。
Producer:消息的生产者。
Consumer:消息的消费者。
Consumer Group:即消费组。一个消费组是由一个或者多个 Consumer 组成的,对于同一个 Topic,不同的消费组都将能消费到全量的消息,而同一个消费组中的 Consumer 将竞争每个消息(在多个 Consumer 消费同一个 Topic 时,Topic 的任何一个分区将同时只能被一个 Consumer 消费)。
Kafka 的特性
高吞吐量、低延迟:kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个 topic 可以分多个 partition, consumer group 对 partition 进行 consume 操作;
可扩展性:kafka 集群支持热扩展;
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
容错性:允许集群中节点失败(若副本数量为 n, 则允许 n-1 个节点失败);
高并发:支持数千个客户端同时读写;
支持实时在线处理和离线处理:可以使用 Storm 这种实时流处理系统对消息进行实时进行处理,同时还可以使用 Hadoop 这种批处理系统进行离线处理;
现在我们在 Mac 下安装 Kafka
执行命令:
1 | shumingjiandeMacBook-Pro-2:~ shumingjian$ brew install kafka |
安装完成后我们启动它:
1 | shumingjiandeMacBook-Pro-2:~ shumingjian$ brew services start kafka |
进入 Kafka 的 bin 目录:
1 | shumingjiandeMacBook-Pro-2:kafka shumingjian$ cd /usr/local/Cellar/kafka/2.1.1/libexec/bin |
创建一个 topic(主题)
1 | shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -create -zookeeper localhost:2181 -replication-factor 1 -partitions 1 -topic test |
查看刚刚创建的主题:
1 | shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-topics -list -zookeeper localhost:2181 |
生产消息
1 | shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-producer -broker-list localhost:9092 -topic test |
消费信息
1 | shumingjiandeMacBook-Pro-2:bin shumingjian$ kafka-console-consumer -bootstrap-server localhost:9092 -topic test -from-beginning |
至此 kafka 安装完成