Kafka介绍PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Kafka介绍PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kafka 介绍 PPT 课件
- 资源描述:
-
1、Kafka介绍研发二部内容kafka是什么kafka体系结构kafka设计理念简介kafka安装部署kafka producer和consumer开发Kafka关键词分布式发布-订阅消息系统LinkedIn 公司开发Scala语言分布式的,可划分的,多订阅者冗余备份持久性重复消费Kafka关键特性同时为发布和订阅提供高吞吐量。据了解,Kafka 每秒可以生产约 25 万消息(50 MB),每秒处理 55 万消息(110 MB)。可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如 ETL,以及实时应用程序。通过将数据持久化到硬盘以及 replication 防止数据丢失。分布式系统,
2、易于向外扩展。所有的 producer、broker 和 consumer 都会有多个,均为分布式的。无需停机即可扩展机器。消息被处理的状态是在 consumer 端维护,而不是由 server 端维护。当失败时能自动平衡。支持 online 和 offline 的场景。Kafka的两大法宝数据文件的分段:Kafka解决查询效率的手段之一是将数据文件分段;为数据文件建索引:为了进一步提高查找的效率,为了进一步提高查找的效率,Kafka为每个分段后的数据文件建立了索引文件,文为每个分段后的数据文件建立了索引文件,文件名与数据文件的名字是一样的,只是文件扩展名为件名与数据文件的名字是一样的,只是文
3、件扩展名为.index。索引文件中包含若干个索引条目,每个条目表示数据文件中一条Message的索引。索引包含两个部分(均为4个字节的数字),分别为相对offset和position。索引优化:稀疏存储,每隔一定字节的数据建立一条索引。消息队列分类点对点:消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。注意:消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。发布/订阅:消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息
4、。和点对点方式不同,发布到topic的消息会被所有订阅者消费。消息队列MQ对比RabbitMQ:支持的协议多,非常重量级消息队列,对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。ZeroMQ:号称最快的消息队列系统,尤其针对大吞吐量的需求场景,擅长的高级/复杂的队列,但是技术也复杂,并且只提供非持久性的队列。ActiveMQ:Apache下的一个子项,类似ZeroMQ,能够以代理人和点对点的技术实现队列。Redis:是一个key-Value的NOSql数据库,但也支持MQ功能,数据量较小,性能优于RabbitMQ,数据超过10K就慢的无法忍受Jafk
5、a,基于Kafka孵化,非Apache官方孵化,活跃度也不是很高Kafka架构Kafka的基本概念Producers:消息和数据生产者,向 Kafka 的一个 topic 发布消息的过程叫做 producers。Consumers:消息和数据消费者,订阅 topics 并处理其发布的消息的过程叫做 consumers。Broker:缓存代理,Kafka 集群中的一台或多台服务器统称为 broker。Topic:特指 Kafka 处理的消息源(feeds of messages)的不同分类。Partition:Topic 物理上的分组,一个 topic 可以分为多个 partition,每个 p
6、artition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的 id(offset)。Message:消息,是通信的基本单位,每个 producer 可以向一个 topic(主题)发布一些消息。Kafka的ProducersProducer将消息发布到指定的Topic中,同时Producer也能决定将此消息归属于哪个partition;比如基于round-robin方式或者通过其他的一些算法等.消息和数据生产者,向 Kafka 的一个 topic 发布消息的过程叫做 producers。异步发送批量发送可以很有效的提高发送效率。Kafka producer的异步发送模
7、式允许进行批量发送,先将消息缓存在内存中,然后一次请求批量发送出去。Kafka的broker1. Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。2. Broker:缓存代理,Kafka 集群中的一台或多台服务器统称为 broker。 broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘3. Broker不保存订阅者的状态,由订阅者自己保存。4. 无状态导致消息的删除成为难题(可能删除的消息正在被订阅),kafka采用基于时间的SLA(服务水平保证),消息保存一定时间(通常为7天)后会被删除。5. 消息订阅者可以re
8、wind back到任意位置重新进行消费,当订阅者故障时,可以选择最小的offset(id)进行重新读取消费消息。Kafka的Consumers消息和数据消费者,订阅 topics 并处理其发布的消息的过程叫做 consumers。本质上kafka只支持Topic.每个consumer属于一个consumer group;反过来说,每个group中可以有多个consumer.发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费.可以认为一个group是一个订阅者,一个Topic中的每个partions,只会被一个订阅者中的一个consumer消费,不过一个
9、 consumer可以消费多个partitions中的消息.kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺 序的.事实上,从Topic角度来说,消息仍不是有序的.注: kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息.一个partition中的消息只会被group中的一个consumer消费;每个group中consumer消息消费互相独立;Kafka的Topics/Log一个Topic可以认为是一类消息,每个topic将被分成多p
10、artition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),partition是以文件的形式存储在文件系统中。Logs文件根据broker中的配置要求,保留一定时间后删除来释放磁盘空间。Partition:Topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。 partition 中的每条消息都会被分配一个有序的 id(offset)。Kafka的partitions 设计目的:kaf
11、ka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力.Kafka的MessageMessage消息:是通信的基本单位,每个 producer 可以向一个 topic(主题)发布一些消息。Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的pa
12、rtition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。partition中的每条Message包含了以下三个属性:offset对应类型:longMessageSize对应类型:int32data是message的具体内容Kafka的MessageKafka的 offset每条消息在文件中的位置称为offset(偏移量)。offset 为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几 乎不允许对消息进行“随机读写”。Part
13、ition中的每条Message由offset来表示它在这个partition中的偏移量,这个offset不是该Message在partition数据文件中的实际存储位置,而是逻辑上一个值,它唯一确定了partition中的一条Message。因此,可以认为offset是partition中Message的id。怎样记录每个consumer处理的信息的状态?在Kafka中仅保存了每个consumer已经处理数据的offset。这样有两个好处:1)保 存的数据量少 2)当consumer出错时,重新启动consumer处理数据时,只需从最近的offset开始处理数据即可。Kafka的消息处理机制
14、 1. 发送到partitions中的消息将会按照它接收的顺序追加到日志中 2. 对于消费者而言,它们消费消息的顺序和日志中消息顺序一致. 3. 如果Topic的replication factor为N,那么允许N-1个kafka实例失效.4. kafka对消息的重复、丢失、错误以及顺序型没有严格的要求。5. kafka提供at-least-once delivery,即当consumer宕机后,有些消息可能会被重复delivery。6. 因每个partition只会被consumergroup内的一个consumer消费,故kafka保证每个partition内的消息会被顺序的订阅。7. K
15、afka为每条消息为每条消息计算CRC校验,用于错误检测,crc校验不通过的消息会直接被丢弃掉。ack校验,当消费者消费成功,返回ack信息!数据传输的事务定义at most once: 最多一次,这个和JMS中非持久化消息类似.发送一次,无论成败,将不会重发.at least once: 消息至少发送一次,如果消息未能接受成功,可能会重发,直到接收成功.exactly once: 消息只会发送一次.at most once: 消费者fetch消息,然后保存offset,然后处理消息;当client保存offset之后,但是在消息处理过程中出现了异常,导致部分消息未能继续处理.那么此后未处理的
16、消息将不能被fetch到,这就是at most once.at least once: 消费者fetch消息,然后处理消息,然后保存offset.如果消息处理成功之后,但是在保存offset阶段zookeeper异常导致保存操作未能执行成功,这就导致接下来再次fetch时可能获得上次已经处理过的消息,这就是at least once,原因offset没有及时的提交给zookeeper,zookeeper恢复正常还是之前offset状态.exactly once: kafka中并没有严格的去实现(基于2阶段提交,事务),我们认为这种策略在kafka中是没有必要的.注:通常情况下at-least-
17、once是我们首选.(相比at most once而言,重复接收数据总比丢失数据要好).Kafka的储存策略1. kafka以topic来进行消息管理,每个topic包含多个part(ition),每个part对应一个逻辑log,有多个segment组成。2. 每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。3.broker 收到发布消息往对应 partition 的最后一个 segment 上添加该消息Kafka的储存策略4. 每个part在内存中对应一个index,记录每个segment中的第一条消息偏
展开阅读全文