目录
1.1 什么是kafka
1.2 Kafka可以用来做什么
1.3 kafka的特点
1. 高吞吐量、低延迟
2. 可扩展性
3. 持久性、可靠性
4. 容错性
5. 高并发
1.4 Kafka的基本架构
1. Producer:生产者
2. Broker:中间组件,存储数据
Topic:主题。类似于表的概念
partition:分区。类似于hbase里面的region的概念
3. Consumer:消费者
4. Zookeeper
Kafka 最初是由 LinkedIn 即领英公司基于 Scala 和 Java 语言开发的分布式消息发布-订阅系统,现已捐献给Apache 软件基金会。其具有高吞吐、低延迟的特性,许多大数据实时流式处理系统比如 Storm、Spark、Flink等都能很好地与之集成。
一句话概括:Kafka 是一个分布式的基于发布/订阅模式的消息中间件,遵循先进先出的原则,分区内严格有序,但是不能保证全局的有序。
在业界主要应用于大数据实时流式计算领域,起解耦合和削峰填谷的作用。
总的来讲,Kafka 通常具有 3 重角色:
存储系统:通常消息队列会把消息持久化到磁盘,防止消息丢失,保证消息可靠性。Kafka 的消息持久化机制和多副本机制使其能够作为通用数据存储系统来使用。正常在公司都是存储的json串。
消息系统:Kafka 和传统的消息队列比如 RabbitMQ、RocketMQ、ActiveMQ 类似,支持流量削峰、服务解耦、异步通信等核心功能。
流处理平台(不主流):Kafka 不仅能够与大多数流式计算框架完美整合,并且自身也提供了一个完整的流式处理库,即 Kafka Streaming。Kafka Streaming 提供了类似 Flink 中的窗口、聚合、变换、连接等功能。
kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, 由多个consumer group 对partition进行consume操作。
kafka集群支持热扩展
热扩展是指在系统运行时,无需停机或中断服务的情况下,向系统添加新的资源或节点。对于Kafka集群来说,热扩展意味着可以在不影响正在进行的生产和消费操作的情况下,动态地增加新的Broker节点来提高系统的吞吐量和容量。
消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
允许集群中有节点失败(若副本数量为n,则允许n-1个节点失败)
支持数千个客户端同时读写
Kafka在各种应用场景中,起到的作用可以归纳为这么几个术语:削峰填谷,解耦!
在大数据流式计算领域中,kafka主要作为计算系统的前置缓存和输出结果缓存;
往broker里面写入数据
副本:leader,follower
从broker里面读出数据
用来和kafka一起管理整个集群,存储元数据信息