大数据消息中间件之Kafka-01

Posted IT二叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据消息中间件之Kafka-01相关的知识,希望对你有一定的参考价值。

大数据消息中间件之Kafka

此篇文章讲述大数据消息中间件Kafka入门及使用



前言

市面上的消息中间件有很多,人尽皆知的有RabbitMQ,RocketMQ,Kafka等等


提示:以下是本篇文章正文内容,下面案例可供参考

一、Kafka是什么?

1.1 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

二、消息队列

2.1消息队列的应用场景


由此可见同步处理的话会消耗更多的时间,异步处理会节省很多时间

2.2那么我们为什么使用消息队列呢?

  • 解耦:降低了我们程序和服务的耦合性,允许两边各自扩展修改,互不影响
  • 异步:有时候用户不需要马上就得到或处理消息,将消息放入到消息队列中,等需要的时候再来消费消息即可
  • 削峰:可以顶住高并发的压力

三、Kafka

3.1Kafka的两种模式

  • 点对点模式(一对一)

    生产者发送消息到队列中,唯一消费者进行消费,消费完之后队列将消息进行删除

  • 发布,订阅模式(一对多,消费者消费数据之后不会清除消息)

    消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 中的消息会被所有订阅者消费。

3.2 Kafka架构实现

名词解释

  • Producer:生产者,负责生产消息到消息队列中
  • Comsumer:负责从消息队列中取出消息并且消费消息
  • Consumer Group:消费者组,多个消费者组成,组内每个消费者负责消费不同分区的内容,一个分区只能由同一组的消费者消费,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • Topic:主题,相当于一个队列
  • Broker:相当于一个Kafka服务器
  • Leader:每个分区多个副本的 ”主“,生产者发送数据的对象,以及消费者消费数据时的对象都是 leader。
  • Follower:每个分区多个副本的 “从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 leader。
  • Partiton:为了实现拓展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 Partition,每个 partition 都是一个有序的队列。
  • Replication:副本,为保证集群中某个节点发生故障时,该节点上的 partition 数据不丢失,且 Kafka 仍然可以继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。

3.3 Kafka工作流程


 Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。topic 是逻辑上的概念。而 partition 是物理上的概念,每个 partition 对应一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。producer 生产的数据会不断追加到该 log 文件末端,且每条数据都有自己的 offset(偏移量)。消费者组中每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位置继续消费。

3.4 Kafka 文件存储机制


由于生产者生产的消息不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment。每个 segment 对应两个文件,“.index” 文件和 “.log 文件”。这些文件位于一个文件夹下,该文件夹命名规则为:topic 名称 + 分区序号。例如,demo 这个 topic 有两个分区,则其对应的文件夹为 demo-0,demo-1。

总结

此篇文章介绍kafka,下一篇介绍kafka的生产者与消费者

以上是关于大数据消息中间件之Kafka-01的主要内容,如果未能解决你的问题,请参考以下文章

MQ之Kafka

消息中间件之kafka

数据传输王者之争:如何在IBM WebSphere MQ与TongLINK/Q间做选择?

详解大数据中必不可少的消息中间件 kafka(3.x 新版本)

消息中间件之RabbitMQ

Python与消息中间件