Kafka基本概念

一、什么是kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,三分之一多的世界500 强公司在使用。Kafka 正在成为管理和处理流式数据的利器。Kafka最初是Linkin的一个内部系统(基于Scala和Java编写),后来贡献了开源社区。

特点:

生产者消费者模型

高性能:单节点支持上千个客户端,百MB/s吞吐,接近网卡的极限

持久性:消息直接持久化在普通磁盘上且性能好直接写到磁盘中去,就是直接append到磁盘里去,这样的好处是直接持久化,数据不会丢失,第二个好处是顺序写,然后消费数据也是顺序的读,所以持久化的同时还能保证顺序,比较好,因为磁盘顺序读比较好。

分布式:数据副本冗余、流量负载均衡、可扩展分布式,数据副本(指定),也就是同一份数据可以到不同的broker上面去,也就是当一份数据,磁盘坏掉的时候,数据不会丢失,比如3个副本,就是在3个机器磁盘都坏掉的情况下数据才会丢,在大量使用情况下看这样是非常好的,负载均衡,可扩展,在线扩展,不需要停服务。

灵活:消息长时间持久化+Client维护消费状态消费方式非常灵活,第一原因是消息持久化时间跨度比较长,一天或者一星期等,第二消费状态自己维护消费到哪个地方了可以自定义消费偏移量。

二、Kafka的基本概念

消息: Kafka 的数据单元被称为消息。那么可以把消息看成是数据库里的一个“数据行”或一条“ 记录”。消息由字节数组组成,所以对于Kafka 来说,消息里的数据没有特别的格式或含义。消息可以有一个可选的元数据,也就是键。键也是一个字节数组,与消息一样,对于Kafka 来说也没有特殊的含义。当消息以一种可控的方式写入不同的分区时,会用到键。

批次:为了提高效率,消息被分批次写入Kafka 。批次就是一组消息,这些消息属于同一个主题和分区。如果每一个消息都单独穿行于网络,会导致大量的网络开销,把消息分成批次传输可以减少网络开销。批次数据会被压缩,这样可以提升数据的传输和存储能力,但要做更多的计算处理。

模式:消息不过是晦涩难懂的字节数组,所以有人建议用一些额外的结构来定义消息内容,让它们更易于理解。根据应用程序的需求, 消息模式( schema )有许多可用的选项。像JSON 和XML 这些简单的系统,不仅易用,而且可读性好。不过,它们缺乏强类型处理能力,不同版本之间的兼容性也不是很好。Kafka 的许多开发者喜欢使用Apache Avro 主题:消息通过主题进行分类,主题类似于数据库的表,或文件系统的文件夹。 主题可以被分为若干个分区。

分区:一个分区就是一个提交日志,消息以追加的方式写入分区,然后以先入先出的顺序读取。 由于一个主题包含多个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。 kafka 也是通过分区来实现数据冗余和伸缩性( 一个主题可以通过多个分区并分布在不同服务器上的方式,横跨多个服务器)。

生产者:创建消息的生产者。通常一个消息会分布到一个特定的主题上,生产者在默认情况下,把消息均衡地分布到主题的所有分区,而不关心特定消息会被写到哪个分区的。但是可以通过消息键和分区器来实现 —— 分区器为键生成一个散列值,并将其映射到指定的分区上,从而保证包含同一个键的消息会被写到同一个分区上(分区器可以自定义)。

消费者:读取消息。消费者订阅一个或多个主题,并按照消息生成的顺序读取它们。

偏移量:偏移量是一种元数据,它是一个不断递增的证书值,消费者通过检查消息的偏移量来区分已经读取过的消息。在给定的分区里,每个消息的偏移量都是唯一的。 消费者将内个分区最后读取的消息偏移量保存在 Zookeeper 或 Kafka 上,如果消费者关闭或重启,它的读取状态不会丢失。

消费群组:消费者是消费群组的一部分,一个或多个消费者共同读取一个主题,群组保证每个分区只能被一个消费者使用。

Broker:一个独立的 Kafka 服务器成为 broker,broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。 broker 为消费者提供服务,对读取分区的请求做出响应,返回已经提交到磁盘上的消息。一个分区可以分配给多个broker,但只从属于一个 broker,这个 broker 是分区的首领。

集群: broker 是集群的组成部分。每个集群都有一个broker 同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来)。控制器负责管理工作,包括将分区分配给broker 和监控broker. 在集群中, 一个分区从属于一个broker, i亥broker 被称为分区的首领。一个分区可以分配给多个broker ,这个时候会发生分区复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值