没有合适的资源?快使用搜索试试~ 我知道了~
2、在吞吐量,kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的
资源详情
资源评论
资源推荐
第 4 章 Kafka........................................................................................................................................204
4.1 kafka 的介绍.......................................................................................................................204
4.2 kafka 的架构.......................................................................................................................207
4.3 kafka 集群的安装与搭建 ................................................................................................210
4.4 kafkfa 的原理.....................................................................................................................213
4.5 kafka 的 API 使用..............................................................................................................216
4.6 kafka 与其他的整合使用 ................................................................................................220
第4章 Kafka
4.1 kafka 的介绍
1 什么是 kafka?
Apache Kafka 是一个开源消息系统,由 Scala 写成。是由 Apache 软件基金会开发的一个开
源消息系统项目。
Kafka 最初是由 LinkedIn 开发,并于 2011 年初开源。2012 年 10 月从 Apache Incubator 毕
业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka 是一个分布式消息队列:生产者、消费者的功能。它提供了类似于 JMS 的特性,但是
在设计实现上完全不同,此外它并不是 JMS 规范的实现。
Kafka 对消息保存时根据 Topic 进行归类,发送消息者称为 Producer,消息接受者称为
Consumer,此外 kafka 集群有多个 kafka 实例组成,每个实例(server)成为 broker。
无论是 kafka 集群,还是 producer 和 consumer 都依赖于 zookeeper 集群保存一些 meta 信
息,来保证系统可用性
2 kafka 与传统消息系统的区别
1、在架构模型方面,
RabbitMQ 遵循 AMQP 协议,RabbitMQ 的 broker 由 Exchange,Binding,queue 组成,其中
exchange 和 binding 组成了消息的路由键;客户端 Producer 通过连接 channel 和 server
进行通信,Consumer 从 queue 获取消息进行消费(长连接,queue 有消息会推送到
consumer 端,consumer 循环从输入流读取数据)。rabbitMQ 以 broker 为中心;有消息的
确认机制。
kafka 遵从一般的 MQ 结构,producer,broker,consumer,以 consumer 为中心,消息的
消费信息保存的客户端 consumer 上,consumer 根据消费的点,从 broker 上批量 pull 数
据;无消息确认机制。
2、在吞吐量,
kafka 具有高的吞吐量,内部采用消息的批量处理,zero-copy 机制,数据的存储和获取是
本地磁盘顺序批量操作,具有 O(1)的复杂度,消息处理的效率很高。
rabbitMQ 在吞吐量方面稍逊于 kafka,他们的出发点不一样,rabbitMQ 支持对消息的可靠
的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬
盘。
3、在可用性方面,
rabbitMQ 支持 miror 的 queue,主 queue 失效,miror queue 接管。
kafka 的 broker 支持主备模式。
4、在集群负载均衡方面
kafka 采用 zookeeper 对集群中的 broker、consumer 进行管理,可以注册 topic 到
zookeeper 上;通过 zookeeper 的协调机制,producer 保存对应 topic 的 broker 信息,可
以随机或者轮询发送到 broker 上;并且 producer 可以基于语义指定分片,消息发送到
broker 的某分片上。
3 kafka 与 activeMQ 的区别
Topic:主题,即一个标识,类似于 map 里面的 key,通过它来给消息分类,消息根据 Topic 进行
归类。
共同点:都有生产者和消费者两大组件,生产者发送消息给各自的服务器,(发送消息是就会
定义一个 topic)并进行存储。
不同点:
activeMQ:消费者会提前订阅自己需要的 topic,当该 topic 中有了消息以后,activeMQ
服务器会发送消息给消费者,然后消费者再去服务器中拿到自己想要的数据。
Kafka:消费者(指定 topic)会定时去 kafka 服务器中拿该 topic 中的数据。
4.2 kafka 的架构
基于 producer consumer topic broker 等的一个基本架
构
kafka 的组件介绍
producer:生产者,主要用于我们的消息的生产,通过 producer 将我们的消息 push 到 kafka
集群当中
topic:某一类消息的高度抽象,可以理解成某一类消息的集合,一类消息,每个 topic 将被
分成多个 partition(区),在集群的配置文件中配置。
broker:kafka 的服务器,一个 broker 就代表一个服务器的节点
partition:分区的概念,一个 topic 当中的消息,可以拆分成多个 partition 分区,存放
在多个不同的服务器上,实现数据存放的横向扩展
repliaction:副本,所有的 partition 都可以指定存放几个副本,做到数据的冗余,保证
数据的安全
segment:每个 partiiton 由多个 segment 组成,segment 又包含了两部分,一个.log 文件,
一个是.index 文件
.log:存放我们的日志文件,所有的数据,最后都以日志文件的形式存放到了 kafka 集群当
中
.index :索引文件,所有的.log 文件的索引都存放在了这里,便于我们查找某一条日志文
件的快速
consumer:消费者,消费我们 kafka 集群当中的消息,
问题:如何知道消费者消费到了哪一条消息来了???
可以通过记录的方式,记下来每次我们消费的位置
第一种记录方式:kafka 的本地文件系统,比较慢,对应 kafka 的一个慢速消费的方式
第二种记录方式:zookeeper 当中的节点数据记录,比较快,对应 kafka 的一个快速消费的
方式
offset:偏移量,就是记录的我们消费到了哪一条数据来了。
发布者发到某个 topic 的消息会被均匀的分布到多个 part 上,broker 收到发布消息往对应
part 的最后一个 segment 上添加该消息。
partition 分布
1、 partitions 分区到不同的 server 上,一个 partition 保存在一个 server 上,避免一个
server 上的文件过大,同时可以容纳更多的 consumer 消费,有效提升并发消费的能力。
2、 这个 server(如果保存的是 partition 的 leader)负责 partition 的读写。可以配置备
份。
3、 每 个 partition 都 有 一 个 server 为 "leader" , 负 责 读 写 , 其 余 的 相 对 备 份 机 为
follower,follower 同步 leader 数据,负责 leader 死了之后的接管。n 个 leader 均
衡的分散在每个 server 上。
4、 partition 的 leader 和 follower 之间监控通过 zookeeper 完成。
剩余32页未读,继续阅读
三山卡夫卡
- 粉丝: 16
- 资源: 323
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0