0


kafka基本概念

文章目录

前言

我们小猿在学习到

  1. kafka

这门技术的时候,相信大家已经学习过其它消息队列中间件,例如

  1. RabbitMq

  1. RocketMq

  1. activeMq

了,对于消息队列的基本概念和作用有了一定的了解。

如果没有学习过其它消息队,我们需要了解下消息队列MQ的基本概念。

学习消息队列MQ之前需要了解这些

为什么需要Kafka

我学习过其他消息队列为何还要学

  1. kafka

呢 ?

目前

  1. Apache Kafka

被认为是整个消息引擎领域的执牛耳者,仅凭这一点就值得我们好好学习一下它。另外,从学习技术的角度而言,

  1. Kafka

也是很有亮点的。我们仅需要学习一套框架就能在实际业务系统中实现消息引擎应用、应用程序集成、分布式存储构建,甚至是流处理应用的开发与部署,听起来还是很超值的吧。

Kafka的优势

  1. Kafka

是一种消息队列,主要用来处理大量数据状态下的消息队列,既然是消息队列,那么

  1. Kafka

也就拥有消息队列的相应的特性了,例如

  1. 异步、解耦、削峰

等。

  1. Kafka

的优势如下:

  • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
  • 可扩展性:kafka集群支持热扩展;
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
  • 容错性:允许集群中节点故障(若副本数量为n,则允许n-1个节点故障);
  • 高并发:支持数千个客户端同时读写。

Kafka应用场景

**

  1. Kafka

做消息队列**

比起大多数的消息系统来说,

  1. Kafka

有更好的吞吐量,内置的分区,冗余及容错性,这让

  1. Kafka

成为了一个很好的大规模消息处理应用的解决方案。消息系统 一般吞吐量相对较低,但是需要更小的端到端延时,并尝尝依赖于

  1. Kafka

提供的强大的持久性保障。在这个领域,

  1. Kafka

足以媲美传统消息系统,如

  1. ActiveMQ

  1. RabbitMQ

**

  1. Kafka

行为跟踪**

  1. Kafka

的另一个应用场景是跟踪用户浏览页面、搜索及其他行为,以发布-订阅的模式实时记录到对应的

  1. topic

里。那么这些结果被订阅者拿到后,就可以做进一步的实时处理,或实时监控,或放到

  1. hadoop

/离线数据仓库里处理。

**

  1. Kafka

元信息监控**

作为操作记录的监控模块来使用,即汇集记录一些操作信息,可以理解为运维性质的数据监控吧。

**

  1. Kafka

日志收集**

日志收集方面,其实开源产品有很多,包括

  1. Scribe

  1. Apache Flume

。很多人使用

  1. Kafka

代替日志聚合(

  1. log aggregation

)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或

  1. HDFS

)进行处理。然而

  1. Kafka

忽略掉 文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让

  1. Kafka

处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的 系统比如

  1. Scribe

或者

  1. Flume

来说,

  1. Kafka

提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。

**

  1. Kafka

流处理**

这 个场景可能比较多,也很好理解。保存收集流数据,以提供之后对接的

  1. Storm

或其他流式计算框架进行处理。很多用户会将那些从原始

  1. topic

来的数据进行 阶段性处理,汇总,扩充或者以其他的方式转换到新的topic下再继续后面的处理。例如一个文章推荐的处理流程,可能是先从

  1. RSS

数据源中抓取文章的内 容,然后将其丢入一个叫做“文章”的

  1. topic

中;后续操作可能是需要对这个内容进行清理,比如回复正常数据或者删除重复数据,最后再将内容匹配的结果返 还给用户。这就在一个独立的topic之外,产生了一系列的实时数据处理的流程。

  1. Strom

  1. Samza

是非常著名的实现这种类型数据转换的框架。
**

  1. Kafka

事件源**

事件源是一种应用程序设计的方式,该方式的状态转移被记录为按时间顺序排序的记录序列。

  1. Kafka

可以存储大量的日志数据,这使得它成为一个对这种方式的应用来说绝佳的后台。比如动态汇总(

  1. News feed

)。

**

  1. Kafka

持久性日志(

  1. commit log

)**

Kafka可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并为故障节点数据回复提供一种重新同步的机制。Kafka中日志压缩功能为这种用法提供了条件。在这种用法中,

  1. Kafka

类似于

  1. Apache BookKeeper

项目。

Kafka消费模式

  1. Kafka

的消费模式主要有两种:一种是一对一的消费,也即点对点的通信,即一个发送一个接收。第二种为一对多的消费,即一个消息发送到消息队列,消费者根据消息队列的订阅拉取消息消费。

一对一

在这里插入图片描述

消息生产者发布消息到

  1. Queue

队列中,通知消费者从队列中拉取消息进行消费。消息被消费之后则删除,

  1. Queue

支持多个消费者,但对于一条消息而言,只有一个消费者可以消费,即一条消息只能被一个消费者消费。

一对多
在这里插入图片描述

这种模式也称为发布/订阅模式,即利用

  1. Topic

存储消息,消息生产者将消息发布到

  1. Topic

中,同时有多个消费者订阅此

  1. topic

,消费者可以从中消费消息,注意发布到

  1. Topic

中的消息会被多个消费者消费,消费者消费数据之后,数据不会被清除,

  1. Kafka

会默认保留一段时间,然后再删除。

Kafka的基础架构

在这里插入图片描述

  1. Kafka

像其他

  1. Mq

一样,也有自己的基础架构,主要存在生产者

  1. Producer

  1. Kafka

集群

  1. Broker

、消费者

  1. Consumer

、注册消息

  1. Zookeeper

.

  • Producer:消息生产者,向Kafka中发布消息的角色。
  • Consumer:消息消费者,即从Kafka中拉取消息消费的客户端。
  • Consumer Group:消费者组,消费者组则是一组中存在多个消费者,消费者消费Broker中当前Topic的不同分区中的消息,消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。某一个分区中的消息只能够一个消费者组中的一个消费者所消费
  • Broker:经纪人,一台Kafka服务器就是一个Broker,一个集群由多个Broker组成,一个Broker可以容纳多个Topic
  • Topic:主题,可以理解为一个队列,生产者和消费者都是面向一个Topic
  • Partition:分区,为了实现扩展性,一个非常大的Topic可以分布到多个Broker上,一个Topic可以分为多个Partition,每个Partition是一个有序的队列(分区有序,不能保证全局有序)
  • Replica:副本Replication,为保证集群中某个节点发生故障,节点上的Partition数据不丢失,Kafka可以正常的工作,Kafka提供了副本机制,一个Topic的每个分区有若干个副本,一个Leader和多个-Follower
  • Leader:每个分区多个副本的主角色,生产者发送数据的对象,以及消费者消费数据的对象都是Leader
  • Follower:每个分区多个副本的从角色,实时的从Leader中同步数据,保持和Leader数据的同步,Leader发生故障的时候,某个Follower会成为新的Leader

上述一个

  1. Topic

会产生多个分区

  1. Partition

,分区中分为

  1. Leader

  1. Follower

,消息一般发送到

  1. Leader

  1. Follower

通过数据的同步与

  1. Leader

保持同步,消费的话也是在

  1. Leader

中发生消费,如果多个消费者,则分别消费

  1. Leader

和各个

  1. Follower

中的消息,当

  1. Leader

发生故障的时候,某个

  1. Follower

会成为主节点,此时会对齐消息的偏移量。

标签: kafka 分布式

本文转载自: https://blog.csdn.net/qq_29917503/article/details/136042705
版权归原作者 欲无缘 所有, 如有侵权,请联系我们删除。

“kafka基本概念”的评论:

还没有评论