Kafaka 基本概念
-
物理概念
-
逻辑概念
- Producer:消息和数据的生产者,向Kafka的一个topic发布消息的进程/代码/服务
- Consumer:消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息的进程/代码/服务
- Consumer Group:逻辑概念,对于一个topic,会广播给不同的group,一个group中只有一个consumer可以消费该消息。
- Broker:物理概念,Kafka集群中的每个Kafka节点
- Topic:逻辑概念,Kafka消息的类别,对数据进行分区,隔离
- Partition:物理盖帘,Kafka下数据存储的基本单元。一个Topic的数据,会被分散的存储到多个Partition,每一个Partition是***有序***的。
- Replication:(副本)同一个Partition可能会有多个Replication,多个Replication之间的数据是一样的。
- Replication Leader:一个Partition的多个Repliaction上,需要一个Leader负责该Partition上与Producer和Consumer交互
- ReplicaManager:负责管理当前Broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换添加/读取消息等
Kafka概念延伸
Partition
- 每一个Topic被切分为多个Partitions
- 消费者数目少于或等于Partition的数目(每一个消费者会消费一个Partition)
- Broker Group中的每一个Broker保存Topic的一个或多个Partition
- Consumer group中的仅有一个Consumer读取Topic的一个或多个Partitions,并且是唯一的Consumer
Replication
- 当前集群中有Broker挂掉的时候,系统可以主动地是Replicas提供服务
- 系统默认设置一个Topic的replication的系数为1,可以在创建Topic是单独设置
Replication的特点
- Replication的基本单位是Topic的partition
- 所有的读和写都从Leader进,Followers只是做为备份
- Follower必须能够及时复制Leader的数据
- 增加容错性和可扩展性
Kafka的基本结构
- Producer Api
- Consumer Api
- Connector Api
- Stream Api
Kafka的消息结构
- 当前消息偏移量
- 消息长度
- 检验字段,校验当地信息的完整性
- 魔数 判断是不是Kafka消息
- 可选 消息属性
- 时间戳
- Key的长度
- Key值
- Value的长度
- Value的值
Kafka的特点
分布式
- 多分区
- 多副本
- 多订阅者
- 基于Zookeeper调度
高性能
- 高吞吐量
- 低延迟
- 高并发
- 时间复杂度为O(1)
持久性与扩展性
- 数据可持久化
- 容错性(多副本,Group等技术)
- 支持在线水平扩展
- 消息自动平衡(意味着避免在服务端消息过分集中在几台机器,造成热点问题)
Kafka的应用场景
- 消息队列
- 行为跟踪(比如跟踪用户浏览行为等)
- 元信息监控(比如记录一些操作信息)
- 日志收集(类似Euraka的功能,以消息流的形式在系统流通,与传统文件不同)
- 流处理
- 事件源(按状态转移记录事件转移顺序)
- 持久性日志(commit log)
Kafka的简单案例
- 环境启动
- 简单生产者
- 简单消费者
Kafka的下载与安装
-
Zookeeper下载
-
Kafka下载:http://kafka.apache.org/downloads
最好下载二进制版本
-
安装:解压,配置环境变量
-
Mac便捷安装 brew install kafka