没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
18页
Apache Kafka是一个开源流处理平台,由Scala和Java编写,由Apache软件基金会开发。它最初由LinkedIn公司开发,并于2011年初开源,2012年10月从Apache Incubator毕业。Kafka的目标是为处理实时数据提供一个统一、高通量、低等待的平台。 Kafka是一个分布式消息队列,它对消息保存时根据Topic进行归类。发送消息者称为Producer,消息接受者称为Consumer。此外,Kafka集群由多个Kafka实例组成,每个实例(server)成为broker。无论是Kafka集群,还是Producer和Consumer都依赖于Zookeeper集群保存一些meta信息,来保证系统可用性。 Kafka的特性包括高吞吐量、可持久化、可水平扩展、支持流数据处理等。它能够实时处理大量数据来满足需求,因此被广泛应用于各种场景,如日志收集、消息系统、用户活动追踪和运营指标监控等。 Kafka模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此。此外,Kafka还提供了消息顺序性保障及回溯消费的功能。
资源推荐
资源详情
资源评论
1. 定义
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。它是一种高吞吐量的分布式
发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的
行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志
和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个
可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过
集群来提供实时的消息。
1.1 消息队列
Kafka 本质上是一个 MQ(Message Queue),使用消息队列的好处?
1.解耦:允许我们独立的扩展或修改队列两边的处理过程。
2.可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
3.缓冲:有助于解决生产消息和消费消息的处理速度不一致的情况。
4.灵活性&峰值处理能力:不会因为突发的超负荷的请求而完全崩溃,消息队列能够使关键组件顶住突发的
访问压力。
5.异步通信:消息队列允许用户把消息放入队列但不立即处理它。
1.2 发布/订阅模式
一对多,生产者将消息发布到 topic 中,有多个消费者订阅该主题,发布到 topic 的消息会被所有订阅者消
费,被消费的数据不会立即从 topic 清除。
2. 架构
Kafka 存储的消息来自任意多被称为 Producer 生产者的进程。数据从而可以被发布到不同的 Topic 主题下
的不同 Partition 分区。在一个分区内,这些消息被索引并连同时间戳存储在一起。其它被称为 Consumer
消费者的进程可以从分区订阅消息。Kafka 运行在一个由一台或多台服务器组成的集群上,并且分区可以跨
集群结点分布。
下面给出 Kafka 一些重要概念,让大家对 Kafka 有个整体的认识和感知,后面还会详细的解析每一个概念的
作用以及更深入的原理。
● Producer: 消息生产者,向 Kafka Broker 发消息的客户端。
● Consumer: 消息消费者,从 Kafka Broker 取消息的客户端。
● Consumer Group: 消费者组(CG),消费者组内每个消费者负责消费不同分区的数据,提高消费能
力。一个分区只能由组内一个消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即
消费者组是逻辑上的一个订阅者。
● Broker: 一台 Kafka 机器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个
topic。
● Topic: 可以理解为一个队列,topic 将消息分类,生产者和消费者面向的是同一个 topic。
● Partition: 为了实现扩展性,提高并发能力,一个非常大的 topic 可以分布到多个 broker (即服务器)
上,一个 topic 可以分为多个 partition,每个 partition 是一个 有序的队列, 可以理解为将标准 MQ 的
Queue 的消息进行拆分, 来实现高可用
Producer 发送的 Message, 根据 key 和 partition 数进行 hash, 然后进行投递,一个分区只能被同一个
Consumer Group 中的一个 Consumer 消费. 分区内消费有序 。
● Replica: 副本,为实现备份的功能,保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢
失,且 Kafka 仍然能够继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个
leader 和若干个 follower。
● Leader: 每个分区多个副本的“主”副本,生产者发送数据的对象,以及消费者消费数据的对象,都是
leader。
● Follower: 每个分区多个副本的“从”副本,实时从 leader 中同步数据,保持和 leader 数据的同步。
leader 发生故障时,某个 follower 还会成为新的 leader。
● offset: 消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从消
费位置继续消费。
● Zookeeper: Kafka 集群能够正常工作,需要依赖于 zookeeper,zookeeper 帮助 Kafka 存储和管理集
群信息。
3. 工作流程
Kafka集群将 Record 流存储在称为 topic 的类别中,每个记录由一个键、一个值和一个时间戳组成。Kafka
是一个分布式流平台,这到底是什么意思?
● 发布和订阅记录流,类似于消息队列或企业消息传递系统。
● 以容错的持久方式存储记录流。
● 处理记录流。
Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,面向的都是同一个 topic。
topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中
存储的就是 Producer 生产的数据。Producer 生产的数据会不断追加到该 log 文件末端,且每条数据都有自
己的 offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次
的位置继续消费。
4. 存储机制
由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采
取了分片和索引机制,将每个 partition 分为多个 segment,每个 segment 对应两个文件:“.index” 索引文
件和 “.log” 数据文件。这些文件位于同一文件夹下,该文件夹的命名规则为:topic 名-分区号。例如,first
这个 topic 有三分分区,则其对应的文件夹为 first-0,first-1,first-2。
剩余17页未读,继续阅读
资源评论
孤蓬&听雨
- 粉丝: 7063
- 资源: 326
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功