Kafka(2)——第一章:初始Kafka

一、发布与订阅消息系统

数据(消息)的发送者(发布者)不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类,接收者(订阅者)订阅他们,以便接收特定类型的消息。发布与订阅系统一般会有一个 broker,也就是发布消息的中心点。

1. Kafka的产生过程

在这里插入图片描述
随着业务的扩展,有更多的服务器需要加入到这个系统中,这个时候架构变成下图的演这个i

在这里插入图片描述
你创建了一个独立的应用程序,用于接收来自其他应用程序的度量指标,并为其他系统提供了一个查询服务器。这样,之前架构的复杂度变为下图的样子。而下图就是一个给予发布订阅的消息系统。

在这里插入图片描述

2. 独立的队列系统

在你与度量指标打得不可开交的时候,你的同事也正在跟日志消息奋战。还有另一个同事正在跟踪网站用户的行为,为负责机器学习开发的同事提供信息,同时为管理团队生成报告。

在这里插入图片描述
从图1-4中我们也可以看出来,这里面有很多重复的地方。此时,你真正需要的是一个单一的集中式系统,它可以用来发布通用类型的数据,其规模可以随着公司业务的增长而增长。

而我们接下来要学习的 Kafka 就是为了解决上述问题而设计的一款基于发布订阅的消息系统

二、Kafka登场

2.1 消息 与 批次

Kafka 的数据单元被称为 消息。 消息由字节数组组成,消息可以由一个可选的元数据,就是键。键也是一个字节数组。当消息以一种可控的方式写入不同的分区的时候,会用到键。最简单的例子就是为键生成一个一致性散列值,然后使用散列值对主题分区数进行取模,为消息选取分区。这样可以保证具有相同键的消息总是被写到相同的分区上。

为了提高效率,消息被分批次写入到 Kafka。 批次就是一组消息,这些消息属于同一个主题和分区。

2.2 主题topic 和 分区partition

Kafka 的消息通过 主题 进行分类。主题就好比数据库的表。主题可以被分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。由于一个主题包含几个分区,因此无法在整个主题范围内保证消息的顺序,但是可以保证消息在单个分区内的顺序。分许可以分布在不同的服务器上,即,一个主题可以横跨多个服务器,一次来提供比单个服务器更强大的性能。

在这里插入图片描述

2.3 生产者 与 消费者
  • 生产者

    • 生产者创建消息。在其他发布与订阅系统中,生产者可能被称为发布者或者写入者。一般情况下,一个消息会被发布到一个特定的主题上。生产者在默认情况下把消息均衡地分布到主题的所有分区上,而并不关心特定消息会被写入到哪个分区。不过,在某些情况下,生产者会把消息直接写到指定分区。这通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上。这样可以保证包含同一个键的消息会被写到同一个分区上。
  • 消费者

    • 消费者读取消息。在其他发布与订阅系统中,消息这可能被程唯订阅者或者读者。消息订阅一个或者多个主题,并按照消息生成的顺序读取它们。消费者通过检查消息的偏移量来区分已经度过的消息。偏移量是一个不断递增的整数值,在创建消息时,Kafka 会把它添加到消息里。在给定分区里,每个消息的偏移量都是唯一的。消息者把每个分区最后读取的消息偏移量保存在 ZK 或者 Kafka 上,如果消费者关闭或者重启,它的读取状态不会丢失。

消费者与分区之间的映射通常被称为消费者对分区的所有权的关系。

通过这种方式,消费者可以包含大量消息的主题。而且,如果一个消费者失效,群组中的其他消费者可以接管失效消费者的工作。

在这里插入图片描述

2.4 broker 与 集群

一个独立的 Kafka 服务器被称为 broker。broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker 为消费者提供服务,对读取分区的请求作出相应,返回已经提交到磁盘的消息。

broker 是集群的组成部分。每个集群都有一个 broker 同时充当了集群控制器的角色。在集群中,一个分区从属于一个 broker,该 broker 被称为分区的首领。一个分区可以分配给多个 broker,这个时候会发生分区复制。这个复制机制为分区提供了消息冗余,如果有一个 broker 失效,其他broker 可以接管领导权。

保留消息: 保留消息是 Kafka的一个重要特性。Kafka broker 默认的消息保留策略是这样的:要么保存一段时间,要么保存到消息达到一定大小的字节数。(可以自己设置)

参考并感谢

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值