Kafka模块
1、Kafka入门
Kafka是消息引擎系统,不同系统之间传递消息,实现系统之间的松耦合的异步式数据传递
消息格式:纯二进制的字节序列
消息传输方式:点对点模型;发布订阅模型。
消息队列和JMS的区别。
直接调用接口和使用消息队列的区别?
削峰填谷。避免流量高峰期时数据请求压力直接穿透到下游服务。使流量更加平滑
Kafka基本术语
客户端:生产者、消费者
服务端:Kafka集群的Broker构成的,一台机器上可以运行多个Broker进程,不同机器运行多个Broker进程
高可用:Broker进程运行在不同的机器上、备份机制(副本机制)
副本指的是保存消息具体内容,副本包含:LeaderReplica、FollowerReplica,leader与客户端进行交互,follower只同步leader的数据
分区:每个主题划分成多个分区Partition,每个分区是一组有序的消息日志。生产者一条消息只会发送到某个分区
主题、分区、副本、消息之间的关系
Kafka Broker如何持久化数据?使用消息日志来保存数据,日志就是只能追加写入的物理文件。写入数据量过大时如何操作,
日志段机制。定期检查并删除老的日志段
高吞吐:持久化数据时使用仅可追加写入的方式保存数据。
消息位移和消费者位移概念的区别?
Kafka角色定位
消息引擎基础
参数设置:
1、Broker参数:
log.dirs、log.dir // Broker中配置存储信息,使用哪些磁盘? 指定路径
1.1、Zookeeper参数:
Zookeeper在Kafka中的作用:Zookeeper是一个分布式协调框架,负责协调管理并保存Kafka集群的所有元数据信息,比如集群有哪些Broker在运行,创建的Topic列表,每个Topic的分区,以及分区的leader副本存储在哪些机器上
zookeeper.connect
1.2、Broker连接相关参数
listeners 监听器
advertised.listeners 对外发布的监听器
1.3、关于Topic参数
auto.create.topics.enable:false 是否允许自动创建Topic
unclean.leader.election.enable:false 关闭Unclean Leader选举.。在leader副本不可用时,是否支持落后较多的follower的副本参与选主
auto.leader.rebalance.enable:false 是否允许定期进行Leader选举
1.4、数据留存参数
log.retention.{hours|minutes|ms} :控制一条消息数据保存时长
log.retention.bytes:-1 指定Broker为消息保存的总磁盘容量大小
message.max.bytes :控制Broker能够接受的最大消息大小
Topic级别的参数设置
2.1、消息保存方面
retention.ms :tipic内保存消息的时长。默认7天
retention.bytes 为topic预留的磁盘空间大小,默认-1无上限
2.2、处理消息方面
max.message.bytes Broker能够正常接收该topic的最大消息大小
JVM级别参数设置
3.1、堆大小
KAFKA_HEAP_OPTS=--Xms6g 指定堆大小
3.2、垃圾收集器
使用的垃圾回收器:CMS -XX:UseCurrentMarkSweepGC
或者使用吞吐量收集器。-XX:UseParallelGC
Java8 时可设置为G1收集器
2、客户端
2.1、生产者:
分区机制
压缩算法
无消息丢失配置
高级功能
TCP连接管理
幂等性生产者与事务
2.2、消费者:
消费者组
位移主题 __consumer_offsets
Rebalance
位移提交
异常处理
多线程开发实例
TCP连接管理
group监控
3、Kafka原理
备份机制
请求处理
Rebalance全流程解析
高水位
Controller
什么是IO模型?操作系统执行IO指令的方法
阻塞式 I/O、非阻塞式 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O
Kafka底层使用了Java的Selector,selector在Linux上实现机制是epoll,epoll机制比select的更高效
零拷贝技术,数据在磁盘和网络进行传输时避免昂贵的内核态数据拷贝实现的快速数据传输
\