kafka企业级入门企业级入门
1.kafka概述
什么是kafka?
kafka是一个消息系统,消息中间件,是一个高吞吐量的分布式发布订阅消息系统。
2.kafka角色介绍
broker:kafka集群包含一个或多个服务器,服务器即broker
topic:每条发布到kafka集群的消息都有一个类别,类别即topic
message:消息,由定长的消息头和变长的消息体组成
partition:partition是物理上的概念,每个topic包含一个或多个partition
producer:消息生产者,负责发布消息到kafka broker
consumer:每个consumer属于一个特定的consumer group。如果没有指定group name,则属于默认的group
consumer group:每一个消费者组,会选择一个broker作为协调者
3.kafka集群环境搭建:
集群主机规划
安装zookeeper集群
安装kafka集群
4.kafka生产者与消费者
生产者:
连接kafka集群地址
创建生产者主体
生产消息信息record
消费者:
配置地址信息
创建消费者主体
循环取消息
5.发送消息的三种方式:
同步阻塞发送
使用场景:发送消息不能出错,发送消息的顺序不能出错,不关心高吞吐量
异步发送(发送并忘记)
使用场景:发送消息不管会不会出错,发送消息错乱没有关系,只关心高吞吐量
异步发送(发送并回调)
使用场景:发送消息不能出错,但是我不关心消息的具体顺序
6.消息的存储和查询机制
topic:
每条发布到kafka集群的消息都有一个类别,该类别就是topic
partition:
partition是物理上的概念,每个topic包含一个或多个partition
每个分区由一系列有序的不可变的消息组成,是一个有序队列
每个分区在物理上是一个文件夹,分区命名规则:topicname-partitionId
分区目录下,存储该分区的日志段。包含一个数据文件和两个索引文件
每条消息被追加到对应的分区中,是顺序写磁盘。这也是kafka高吞吐量的重要保证
kafka是局部有序,即只保证一个分区内的消息顺序性,不保证全局有序
logSegment:
日志文件按照大小,或者时间滚动,切分成一个或者多个日志段(logSegment),日志段大小默认1gb
消息的查询:
根据文件存储的有序性,通过二分查找先找到文件,再找文件中具体的消息
7.三种数据发送策略
指定分区发送
不指定分区,没有key,轮询发送
不指定分区,有key,hash发送
8.消费者负载均衡策略
消费者与partition的对应关系:同一个分区的数据,只能被一个消费组中的一个消费者消费