设计架构
使用场景
大数据领域网站行为分析日志聚合应用监控流式数据处理在线和离线数据分析数据集成消息导入MaxCompute、OOS、RDS、Hadoop、HBase等离线数据仓库流计算集成StreamComputeE-MapReduceSparkStorm集成流计算引擎架构
依赖Zookeeper实现配置和节点管理
如上图所示,一个Kafka集群架构中:
3台Broker。两个Topic:Topic0和Topic1。Topic0有2个分区:partition0和partition1,每个分区一共3个副本。Topic1只有1个分区:partition0,每个分区一共3个副本。图中红色字体的副本代表是Ieader,黑色字体的副本代表是follower。绿色的线代表是数据同步。蓝色的线是写消息,橙色的线是读消息,都是针对leader节点。有两个消费者组的两个分区。第1个消费者,消费topic0的partition0,还消费topic1的partition0。第2个消费者,消费topic0的partition1。第3个消费者,没有partition可以消费。第一个消费者组,消费了topic0的两个分区。第二个消费者组,既消费topic0,又消费topic1:Broker
只支持一种消费模式poll支持一次性获取多条(参数传入数目)Topic
使用Topic的订阅和发送,来实现生产者和消费者的关联,多对多
Topic分区扩展,增强并发访问能力
副本机制
副本同步主节点数据,但是不允许读follow节点,避免读写不一致的问题,降低延迟。存储
*.index索引文件*.log数据文件*.timeindex时间戳索引文件数据分段(针对文件过大,超出1G)
segment消费分组
消费组数目小于等于Topic数目消费者可以消费多个分区消费编号
连续消费切换消费者consumer_offset-[0~49]保存消费者消费的偏移量数据多写支持
业务场景:数据同步存储到mysql、ES
基于binlog实现主从复制
canal伪装为slave节点,进行数据同步,解析binlog,可以对接kafka,实现数据的多写。
MYSQL的数据修改,通过kafka完成数据变更的自动推送,实现多写操作。
Kafka的进阶功能
消息幂等性
enable.idempotence=true
PIDProducerID生产者编号sequencenumber消费者编号只能保证单分区、单一会话事务
操作API初始化producer.initTransactions()开启producer.beginTransaction()提交producer.