Kafka 教程
1. Kafka 简介2. 什么是消息系统
**1) 点对点消息系统**2) 发布-订阅消息系统 3. Kafka 用途
1) 主要功能2) Kafka 主要用途3) Kafka 使用场景 4. Kafka 优势5. 分布式系统消息系统对比 Kafka 基本概念
1. Kafka 概念之间的关系图2. 主题 Topic3. 生产者 Producer4. 消费者 Consumer5. 集群 Cluster 和 代理 Broker kafka的使用:
修改配置文件
zookeeper.properties文件server.properties文件 启动zookeeper启动kafka启动类:
配置kafka 启动消费者
Kafka 教程Apache Kafka 是一个分布式发布-订阅消息系统,具有高吞吐、低延时、可扩展、容错以及持久化存储等特点,使用 Kafka 可以方便地构建分布式应用程序。
Kafka 将消息保存在磁盘上,并在集群内复制以防止数据丢失。
Kafka 建立在 ZooKeeper 同步服务之上,能与 Apache Storm 和 Spark 很好地集成,进行实时流数据分析。
Apache Kafka 官网地址:https://kafka.apache.org/
1. Kafka 简介
Apache Kafka 是由 Apache 软件基金会开发的一个开源消息系统,使用 Scala 和 Java 编写。
Kafka 最初是由 linkedIn 开发,并于 2011 年初开源。2012 年10 月从 Apache Incubator 毕业,成为 First-class Apache 项目。
Kafka 的目标是为处理实时数据提供一个统一的高吞吐、低延时的平台。
2. 什么是消息系统消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不必担心如何共享数据。
消息传递模式有两种:一种是点对点的,另一种是发布-订阅(pub-sub)的消息传递系统。大多数消息传递模式遵循 pub-sub。
1) 点对点消息系统在点对点系统中,消息将保留在队列中。一个或多个使用者可以使用队列中的消息,但是特定消息最多只能由一个使用者使用。使用者读取队列中的消息后,该消息将从该队列中消失。
点对点系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但是多个订单处理器可以同时工作。
如下图所示:
2) 发布-订阅消息系统在发布-订阅系统中,消息保留在主题中。与点对点系统不同,消费者可以订阅一个或多个主题,并消费该主题中的所有消息。
在发布-订阅系统中,消息生产者称为发布者,消息消费者称为订阅者。
一个真实的例子是Dish TV,它发布了体育,电影,音乐等不同的频道,任何人都可以订阅自己的频道集,并在订阅频道可用时获取它们。
如下图所示:
3. Kafka 用途Kafka是一个分布式流式处理平台。
1) 主要功能消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是Kafka被归类为消息队列的原因。容错和持久方式存储消息流:Kafka会把消息持久化到磁盘,有效避免消息丢失的风险。流式处理平台:在消息发布的时候进行处理,Kafka提供了一个完整的流式处理类库。 2) Kafka 主要用途
消息队列:构建信息系统,可靠地在应用程序传递数据。数据处理:构建实时的流数据处理程序来转换或处理数据流。 3) Kafka 使用场景
指标 - Kafka 操作监控数据,汇总来自分布式应用程序的统计信息,生成集中的运行数据指标。日志聚合 - Kafka 从多种服务中收集日志,并以标准格式提供给多个消费者。流处理 - 提供给 Storm 和 Spark 流处理框架进行数据处理,并将处理后的数据写入一个新的主题,供用户和应用程序使用。 4. Kafka 优势
高吞吐、低延时 - Kafka 能够达到百万级的消息吞吐量,延迟可达毫秒级。持久化存储 - Kafka可以将消息直接持久化在普通磁盘上,且磁盘读写性能优异。分布式可扩展 - Kafka集群支持热扩展,Kaka集群启动运行后,用户可以直接向集群添加节点。容错性 - Kafka会将数据备份到多台服务器节点,集群中任意一个 broker 节点宕机,Kafka 仍能对外提供服务。多语言支持 - Kafka支持Java、.NET、PHP、Python、Go等多种语言。 5. 分布式系统消息系统对比
Kafka 基本概念::Kafka 是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。Kafka 基本概念包括:Topic、Producer、Consumer、Cluster 和 Broker。Kafka producers(生产者)通过网络将消息发送到 Kafka 集群,集群负责保存消息,并向消费者提供消息。Kafka
Kafka 基本概念Kafka 是一个分布式的、可分区的、可复制的消息系统。不仅提供了普通消息系统的功能,还具有自己独特的设计。
Kafka 基本概念包括:主题 Topic、生产者 Producer、消费者 Consumer、集群 Cluster 和 代理 Broker。
1. Kafka 概念之间的关系图**Kafka producers(生产者)**通过网络将消息发送到 Kafka 集群,Kafka 集群负责保存消息,并向消费者提供消息。**Kafka cluster(集群)**负责保存生产者提交的消息,并向消费者提供消息。Kafka 集群有多个 broker(代理服务器)组成。**Kafka consumers(消费者)**通过网络从 Kafka 集群拉取消息,进行消费。 2. 主题 Topic
Kafka 将消息以 Topic 为单位进行分类,每一类的消息称之为一个主题(Topic)。
3. 生产者 Producer发布消息的对象称之为主题生产者(Kafka topic producer)。生产者通常是一个应用程序。
4. 消费者 Consumer订阅消息并处理发布消息的对象称之为主题消费者(consumers)。消费者通常也是一个应用程序。
5. 集群 Cluster 和 代理 Broker已发布的消息保存在一组服务器中,称为 Kafka 集群(cluster)。
Kafka 集群中的每一个服务器都是一个代理(Broker)。
消费者可以订阅一个或多个主题(topic),并从 Broker 拉取数据,从而消费这些已发布的消息。
Kafka 消息是指由生产者发送的一条记录,它在 Kafka 中以特定的格式进行存储。随着 Kafka 的迅猛发展,消息格式也在不断的升级改进。Kafka 的消息格式也经历了3个版本:v0、v1 和 v2。Kafka 的消息格式对于使用 Kafka 的开发人员是透明的。也就是说无论是使用生产者发送消息,还是使用消费者使用消息,都无需更关心。
kafka的使用: 修改配置文件 zookeeper.properties文件 server.properties文件 启动zookeeper在kafka文件下启动命令窗口
输入:
.binwindowszookeeper-server-start.bat .configzookeeper.properties启动kafka
输入:
binwindowskafka-server-start.bat configserver.properties启动类: 配置kafka
package main
import (
"fmt"
"github.com/Shopify/sarama"
)
func main() {
//1. 生产者配置
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll //ACK
config.Producer.Partitioner = sarama.NewRandomPartitioner //分区
config.Producer.Return.Successes = true //确认
//2.连接kafka
client, err := sarama.NewSyncProducer([]string{"127.0.0.1:9092"}, config)
if err != nil {
fmt.Println("producer closed,err:", err)
return
}
defer client.Close()
//3. 封装消息
msg := &sarama.ProducerMessage{}
msg.Topic = "shopping"
msg.Value = sarama.StringEncoder("happy aaaa")
//4.发送消息
pid, offset, err := client.SendMessage(msg)
if err != nil {
fmt.Println("send msg failed,err:", err)
return
}
fmt.Printf("pid : %v offset : %v", pid, offset)
}
启动消费者
binwindowskafka-console-consumer.bat --bootstrap-server 127.0.0.1:9092 --topic shopping --from-beginning
shopping是Topic的值



