资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,Kafka,介绍及简单应用示例,1,2025/5/22 周四,PPT,模板:,PPT,素材:,PPT,图表:,PPT,教程:,PPT,课件:,录,一、背景介绍,二、,kafka,执行过程以及组件介绍,三、,实例演示,四、,核心原理初探,五、性能怪兽,kafka,(对比,MQ),2,2025/5/22 周四,1,背景介绍,3,2025/5/22 周四,Kafka,产生的背景:,1.,为什么要做消息系统。,-,数据分析,4,2025/5/22 周四,2.Kafka,是个怎样的消息系统。,-,A distributed publish-subscribe messaging system,消息订阅和发布系统,5,2025/5/22 周四,3.,目前有哪些公司应用到了,Kafka,-LinkedIn,Tumblr,等等,4.Kafka,在我们项目中的意义,-,公交数据分析,停车场数据分析,流量数据分析,6,2025/5/22 周四,2,kafka执行过程以及组件介绍,7,2025/5/22 周四,简单用例,8,2025/5/22 周四,官方图,broker,:Kafka集群包含一个或多个服务器,这种服务器被称为broker,producer,:负责发布消息到Kafka broker,consumer,:消费消息。每个consumer属于一个特定的consuer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。,9,2025/5/22 周四,前图再细分,topic,:每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处),10,2025/5/22 周四,分区的概念,partition,:parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件,11,2025/5/22 周四,3,实例演示,12,2025/5/22 周四,linux,运行环境环境搭建,1.,安装,JDK,2.,安装,Kafka,13,2025/5/22 周四,启动,Linux,服务,步骤,01,zookeeper,步骤,02,kafka,步骤,03,topic,步骤,04,producer,步骤,05,customer,启动成功,14,2025/5/22 周四,启动,Java,代码,Scala,Java,MyProducer,MySimpleConsumer,15,2025/5/22 周四,4,核心原理初探,16,2025/5/22 周四,核心原理,kafka,消息删除和压缩,负载均衡,磁盘缓存的利用,主从及副本分布,消息格式,Zero-copy,文件系统,17,2025/5/22 周四,负载均衡,负载均衡的两种策略,partition.assignment.strategy=range|round-robin,Range:,每个,topic,的分区独立分配,分区按数字排序,线程按字典排序,分区数量,/,线程数量,整除,partition,多于,thrad,(?),partition,等于,thread,partition,少于,thread,Round-robin,所有,topic,所有分区循环分配到所有分区上,限制,每个,topic,在每个,consumer,中线程数量必须相,同,每,consumer,消费的,topic,必须相同,18,2025/5/22 周四,主从分布,leader:,处理消息,分配要均匀,follower,:备份,均匀分布,Replicas,:,Isr,:,in-sync,P0,P1,P2,P3,四个分区,3,副本,19,2025/5/22 周四,持久化,-,消息格式,20,2025/5/22 周四,持久化,-,文件系统,进入,kafka,配置的数据目录,-broker-topic,21,2025/5/22 周四,消息删除和压缩,直接删除(默认策略),按时间:,按大小:,压缩(只在特定的业务场景下有意义):,保留,key,最后一个版本的消息,22,2025/5/22 周四,磁盘缓存的利用,1.kafka,是顺序存取的(页缓存),2.,硬盘的顺序读写比随机读写要快,23,2025/5/22 周四,非,zero-copy,传统数据发送:,read(file,temp_buff,len,);,write(socket,tmp_buff,len),四次拷贝,四次内核态和用户态的切换,24,2025/5/22 周四,zero-copy,zero-copy,:,sendfile(out_fd,in_fd,offset,count,);,数据不用经过内存,java.nio.channel.FileChannel transferTo(),25,2025/5/22 周四,4,性能怪兽,kafka,26,2025/5/22 周四,快,1.afka大量使用了磁盘作为传统意义的缓存,2.zero copy,技术,27,2025/5/22 周四,扩展强,1.kafka,就为可扩展性而生(集群,负载均衡),28,2025/5/22 周四,容错能力强,1.,副本机制,自动选举,leader,机制,29,2025/5/22 周四,THANK YOU,30,2025/5/22 周四,
展开阅读全文