生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

Kafka 权威指南(二):为什么选择 Kafka

  • 2020-03-30
  • 本文字数:2471 字

    阅读完需:约 8 分钟

Kafka权威指南(二):为什么选择Kafka

编者按:本文节选自图灵程序设计丛书 《Kafka 权威指南》一书中的部分章节。

为什么选择 Kafka

基于发布与订阅的消息系统那么多,为什么 Kafka 会是一个更好的选择呢?

多个生产者

Kafka 可以无缝地支持多个生产者,不管客户端在使用单个主题还是多个主题。所以它很适合用来从多个前端系统收集数据,并以统一的格式对外提供数据。例如,一个包含了多个微服务的网站,可以为页面视图创建一个单独的主题,所有服务都以相同的消息格式向该主题写入数据。消费者应用程序会获得统一的页面视图,而无需协调来自不同生产者的数据流。

多个消费者

除了支持多个生产者外,Kafka 也支持多个消费者从一个单独的消息流上读取数据,而且消费者之间互不影响。这与其他队列系统不同,其他队列系统的消息一旦被一个客户端读取,其他客户端就无法再读取它。另外,多个消费者可以组成一个群组,它们共享一个消息流,并保证整个群组对每个给定的消息只处理一次。

基于磁盘的数据存储

Kafka 不仅支持多个消费者,还允许消费者非实时地读取消息,这要归功于 Kafka 的数据保留特性。消息被提交到磁盘,根据设置的保留规则进行保存。每个主题可以设置单独的保留规则,以便满足不同消费者的需求,各个主题可以保留不同数量的消息。消费者可能会因为处理速度慢或突发的流量高峰导致无法及时读取消息,而持久化数据可以保证数据不会丢失。消费者可以在进行应用程序维护时离线一小段时间,而无需担心消息丢失或堵塞在生产者端。消费者可以被关闭,但消息会继续保留在 Kafka 里。消费者可以从上次中断的地方继续处理消息。

伸缩性

为了能够轻松处理大量数据,Kafka 从一开始就被设计成一个具有灵活伸缩性的系统。用户在开发阶段可以先使用单个 broker,再扩展到包含 3 个 broker 的小型开发集群,然后随着数据量不断增长,部署到生产环境的集群可能包含上百个 broker。对在线集群进行扩展丝毫不影响整体系统的可用性。也就是说,一个包含多个 broker 的集群,即使个别 broker 失效,仍然可以持续地为客户提供服务。要提高集群的容错能力,需要配置较高的复制系数。第 6 章将讨论关于复制的更多细节。

高性能

上面提到的所有特性,让 Kafka 成为了一个高性能的发布与订阅消息系统。通过横向扩展生产者、消费者和 broker,Kafka 可以轻松处理巨大的消息流。在处理大量数据的同时,它还能保证亚秒级的消息延迟。

数据生态系统

已经有很多应用程序加入到了数据处理的大军中。我们定义了输入和应用程序,负责生成数据或者把数据引入系统。我们定义了输出,它们可以是度量指标、报告或者其他类型的数据。我们创建了一些循环,使用一些组件从系统读取数据,对读取的数据进行处理,然后把它们导到数据基础设施上,以备不时之需。数据类型可以多种多样,每一种数据类型可以有不同的内容、大小和用途。


Kafka 为数据生态系统带来了循环系统,如图 1 所示。它在基础设施的各个组件之间传递消息,为所有客户端提供一致的接口。当与提供消息模式的系统集成时,生产者和消费者之间不再有紧密的耦合,也不需要在它们之间建立任何类型的直连。我们可以根据业务需要添加或移除组件,因为生产者不再关心谁在使用数据,也不关心有多少个消费者。



图 1:大数据生态系统

使用场景

  1. 活动跟踪

  2. Kafka 最初的使用场景是跟踪用户的活动。网站用户与前端应用程序发生交互,前端应用程序生成用户活动相关的消息。这些消息可以是一些静态的信息,比如页面访问次数和点击量,也可以是一些复杂的操作,比如添加用户资料。这些消息被发布到一个或多个主题上,由后端应用程序负责读取。这样,我们就可以生成报告,为机器学习系统提供数据,更新搜索结果,或者实现其他更多的功能。

  3. 传递消息

  4. Kafka 的另一个基本用途是传递消息。应用程序向用户发送通知(比如邮件)就是通过传递消息来实现的。这些应用程序组件可以生成消息,而不需要关心消息的格式,也不需要关心消息是如何被发送的。一个公共应用程序会读取这些消息,对它们进行处理:

  5. 格式化消息(也就是所谓的装饰);

  6. 将多个消息放在同一个通知里发送;

  7. 根据用户配置的首选项来发送数据。

  8. 使用公共组件的好处在于,不需要在多个应用程序上开发重复的功能,而且可以在公共组件上做一些有趣的转换,比如把多个消息聚合成一个单独的通知,而这些工作是无法在其他地方完成的。

  9. 度量指标和日志记录

  10. Kafka 也可以用于收集应用程序和系统度量指标以及日志。Kafka 支持多个生产者的特性在这个时候就可以派上用场。应用程序定期把度量指标发布到 Kafka 主题上,监控系统或告警系统读取这些消息。Kafka 也可以用在像 Hadoop 这样的离线系统上,进行较长时间片段的数据分析,比如年度增长走势预测。日志消息也可以被发布到 Kafka 主题上,然后被路由到专门的日志搜索系统(比如 Elasticsearch)或安全分析应用程序。更改目标系统(比如日志存储系统)不会影响到前端应用或聚合方法,这是 Kafka 的另一个优点。

  11. 提交日志

  12. Kafka 的基本概念来源于提交日志,所以使用 Kafka 作为提交日志是件顺理成章的事。我们可以把数据库的更新发布到 Kafka 上,应用程序通过监控事件流来接收数据库的实时更新。这种变更日志流也可以用于把数据库的更新复制到远程系统上,或者合并多个应用程序的更新到一个单独的数据库视图上。数据持久化为变更日志提供了缓冲区,也就是说,如果消费者应用程序发生故障,可以通过重放这些日志来恢复系统状态。另外,紧凑型日志主题只为每个键保留一个变更数据,所以可以长时间使用,不需要担心消息过期问题。

  13. 流处理

  14. 流处理是又一个能提供多种类型应用程序的领域。可以说,它们提供的功能与 Hadoop 里的 map 和 reduce 有点类似,只不过它们操作的是实时数据流,而 Hadoop 则处理更长时间片段的数据,可能是几个小时或者几天,Hadoop 会对这些数据进行批处理。通过使用流式处理框架,用户可以编写小型应用程序来操作 Kafka 消息,比如计算度量指标,为其他应用程序有效地处理消息分区,或者对来自多个数据源的消息进行转换。第 11 章将通过其他案例介绍流处理。


图书简介https://www.ituring.com.cn/book/2067



相关阅读


Kafka权威指南(一):初识Kafka


2020-03-30 10:002219

评论

发布
暂无评论
发现更多内容

这些面试技巧,助你升职加薪、迎娶白富美

伤感汤姆布利柏

Kafka优化

数新网络官方账号

大数据 zookeeper

Flume简述

数新网络官方账号

数据采集 flume

hive数据迁移

数新网络官方账号

大数据 hadoop hadoop spark hive

SpringBoot 2 种方式快速实现分库分表,轻松拿捏!

程序员小富

分库分表 springboot ShardingSphere

香港云主机为你的业务注入强大的云端动力!

一只扑棱蛾子

香港云主机

低代码会是开发者的可选项

这我可不懂

开发者 软件开发 低代码 传统开发

通过腾讯云SES服务发送邮件

排骨虾

腾讯云 #go 邮件通知

为什么需要数字化?如果实现数字化?

高端章鱼哥

低代码 数字化 企业管理软件 JNPF

拉链表的原理及简单实现

数新网络官方账号

大数据 拉链式散列表

全球NDR市场“客户之声”首次发布:那些最挑剔的用户都选了谁?

Geek_2d6073

Android SDK安全加固问题与分析

百度Geek说

android 安全加固 企业号 6 月 PK 榜 6 月 优质更文活动

华为云CodeArts TestPlan测试设计:守护产品开发质量之魂

华为云PaaS服务小智

云计算 软件开发 华为云 产品测试

BI商业智能工具改变企业发展态势

对不起该用户已成仙‖

一名中级程序员应该具备的技能

树上有只程序猿

编程 程序员 低代码 职业生涯 JNPF

k8s实战案例之部署redis单机和redis cluster

不在线第一只蜗牛

k8s

玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具

NineData

数据库 百度智能云 云市场 玖章算术 NineData

如何使用 Terraform 和 Git 分支有效管理多环境?

SEAL安全

git Terraform

svn提交规范,与Git相得益彰

互联网工科生

git svn

使用堡垒机的意义你知道吗?能解决哪些问题?

行云管家

网络安全 信息安全 堡垒机 数据泄露

一年省七位数,得物自建HFDS在 Flink Checkpoint 场景下的应用实践

得物技术

大数据 阿里云 成本优化

从“云原生”到“比Flink快十倍”:RisingWave的寻找自我认知之旅

吴英骏

数据库 sql 流处理

一次搞懂线性稳压器/LDO的工作原理

元器件秋姐

物理 电路 元器件 PCB 稳压器

鲸鸿动能荣获2023 TopDigital 3项大奖

最新动态

玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具

Baidu AICLOUD

BI商业智能工具成宠儿,企业降本增效优质工具

夜雨微澜

行云管家- 积极探索“AI+信息安全”的创新融合

行云管家

网络安全 信息安全 智能 AI智能

车联网 CAN Bus 协议介绍与数据实时流处理

EMQ映云科技

物联网 mqtt canbus

解读 RocketMQ 5.0 全新的高可用设计

阿里巴巴云原生

阿里云 RocketMQ 高可用 云原生

一定要看的前端codeReview规范指南

快乐非自愿限量之名

前端 技术框架

AIGC+办公|大厂争先抢占高位的AI,开始“卷”打工人了吗?

TE智库

人工智能 办公 打工人 AIGC 生成式AI

Kafka权威指南(二):为什么选择Kafka_架构_Neha Narkhede_InfoQ精选文章