写点什么

Kafka 权威指南(三):Kafka 起源故事

  • 2020-03-31
  • 本文字数:1950 字

    阅读完需:约 6 分钟

Kafka权威指南(三):Kafka起源故事

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

起源故事

Kafka 是为了解决 LinkedIn 数据管道问题应运而生的。它的设计目的是提供一个高性能的消息系统,可以处理多种数据类型,并能够实时提供纯净且结构化的用户活动数据和系统度量指标。


数据为我们所做的每一件事提供了动力。

——Jeff Weiner,LinkedIn CEO

LinkedIn 的问题

本章开头提到过,LinkedIn 有一个数据收集系统和应用程序指标,它使用自定义的收集器和一些开源工具来保存和展示内部数据。除了跟踪 CPU 使用率和应用性能这些一般性指标外,LinkedIn 还有一个比较复杂的用户请求跟踪功能。它使用了监控系统,可以跟踪单个用户的请求是如何在内部应用间传播的。不过监控系统存在很多不足。它使用的是轮询拉取度量指标的方式,指标之间的时间间隔较长,而且没有自助服务能力。它使用起来不太方便,很多简单的任务需要人工介入才能完成,而且一致性较差,同一个度量指标的名字在不同系统里的叫法不一样。


与此同时,我们还创建了另一个用于收集用户活动信息的系统。这是一个 HTTP 服务,前端的服务器会定期连接进来,在上面发布一些消息(XML 格式)。这些消息文件被转移到线下进行解析和校对。同样,这个系统也存在很多不足。XML 文件的格式无法保持一致,而且解析 XML 文件非常耗费计算资源。要想更改所创建的活动类型,需要在前端应用和离线处理程序之间做大量的协调工作。即使是这样,在更改数据结构时,仍然经常出现系统崩溃现象。而且批处理时间以小时计算,无法用它完成实时的任务。


监控和用户活动跟踪无法使用同一个后端服务。监控服务太过笨重,数据格式不适用于活动跟踪,而且无法在活动跟踪中使用轮询拉取模型。另一方面,把跟踪服务用在度量指标上也过于脆弱,批处理模型不适用于实时的监控和告警。不过,好在数据间存在很多共性,信息(比如特定类型的用户活动对应用程序性能的影响)之间的关联度还是很高的。特定类型用户活动数量的下降说明相关应用程序存在问题,不过批处理的长时间延迟意味着无法对这类问题作出及时的反馈。


最开始,我们调研了一些现成的开源解决方案,希望能够找到一个系统,可以实时访问数据,并通过横向扩展来处理大量的消息。我们使用 ActiveMQ 创建了一个原型系统,但它当时还无法满足横向扩展的需求。LinkedIn 不得不使用这种脆弱的解决方案,虽然 ActiveMQ 有很多缺陷会导致 broker 暂停服务。客户端的连接因此被阻塞,处理用户请求的能力也受到影响。于是我们最后决定构建自己的基础设施。

Kafka 的诞生

LinkedIn 的开发团队由 Jay Kreps 领导。Jay Kreps 是 LinkedIn 的首席工程师,之前负责分布式键值存储系统 Voldemort 的开发。初建团队成员还包括 Neha Narkhede,不久之后, Jun Rao 也加入了进来。他们一起着手创建一个消息系统,可以同时满足上述的两种需求,并且可以在未来进行横向扩展。他们的主要目标如下:


  • 使用推送和拉取模型解耦生产者和消费者;

  • 为消息传递系统中的消息提供数据持久化,以便支持多个消费者;

  • 通过系统优化实现高吞吐量;

  • 系统可以随着数据流的增长进行横向扩展。


最后我们看到的这个发布与订阅消息系统具有典型的消息系统接口,但从存储层来看,它更像是一个日志聚合系统。Kafka 使用 Avro 作为消息序列化框架,每天高效地处理数十亿级别的度量指标和用户活动跟踪信息。LinkedIn 已经拥有超过万亿级别的消息使用量(截止到 2015 年 8 月),而且每天仍然需要处理超过千万亿字节的数据。

走向开源

2010 年底,Kafka 作为开源项目在 GitHub 上发布。2011 年 7 月,因为倍受开源社区的关注,它成为 Apache 软件基金会的孵化器项目。2012 年 10 月,Kafka 从孵化器项目毕业。从那时起,来自 LinkedIn 内部的开发团队一直为 Kafka 提供大力支持,而且吸引了大批来自 LinkedIn 外部的贡献者和参与者。现在,Kafka 被很多组织用在一些大型的数据管道上。2014 年秋天,Jay Kreps、Neha Narkhede 和 Jun Rao 离开 LinkedIn,创办了 Confluent。 Confluent 是一个致力于为企业开发提供支持、为 Kafka 提供培训的公司。这两家公司连同来自开源社区持续增长的贡献力量,一直在开发和维护 Kafka,让 Kafka 成为大数据管道的不二之选。

命名

关于 Kafka 的历史,人们经常会问到的一个问题就是,Kafka 这个名字是怎么想出来的,以及这个名字和这个项目之间有着怎样的联系。对于这个问题,Jay Kreps 解释如下:


我想既然 Kafka 是为了写数据而产生的,那么用作家的名字来命名会显得更有意义。我在大学时期上过很多文学课程,很喜欢 Franz Kafka。况且,对于开源项目来说,这个名字听起来很酷。因此,名字和应用本身基本没有太多联系。


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



相关阅读


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


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


2020-03-31 10:002503

评论

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

知识付费的感想

玄兴梦影

F5G-A万兆光网商用启航,挥动FTTR F50星光之翼

脑极体

光网络

linux查看ip命令

百度搜索:蓝易云

云计算 Linux IP 云服务器 ifconfig

linux学了有什么作用

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

ChatGPT竟然有记忆力功能了,这对用户体验有哪些改变?

蓉蓉

openai #人工智能 ChatGPT GPT-4

哪些公司擅长开发类似HohoBuy的电商代购系统软件

tbapi

淘宝代购系统 Pandabuy Hohobuy

解锁弹框:Python 下的 Playwright 弹框处理完全指南

霍格沃兹测试开发学社

探索车路云深度融合的优化与实践

观测云

人工智能

9大原因分析贝莱德投资RWA赛道的ONDO 逻辑,内附

股市老人

文档解析与向量化技术加速多模态大模型训练与应用

热爱编程的小白白

linux可以用来干嘛

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

俄罗斯方块游戏编程

芯动大师

编程 俄罗斯方块游戏 51单片机

PrismNET棱镜协议丨安全吗?可靠吗?

PrismNET

区块链 web3 PrismNET棱镜协议 PrismNET

linux查看ip和端口

百度搜索:蓝易云

云计算 Linux 运维 IP 云服务器

Python函数与模块的精髓与高级特性

华为云开发者联盟

Python 华为云 函数 华为云开发者联盟 企业号2024年5月PK榜

图数据库原理在构建实体血缘关系图中的应用与实践

鲸品堂

企业号 5 月 PK 榜 实体血缘

解锁!智能代码助手 Baidu Comate 硬核能力

百度Geek说

编码 大模型 企业号 5 月 PK 榜 企业号2024年5月PK榜 Baidu Comate

浅谈设计模式

Ethan

Java 设计模式

linux查看ip地址命令有哪些

百度搜索:蓝易云

云计算 Linux 运维 IP 云服务器

JDBC连接openGauss6.0和PostgreSQL16.2性能对比

华为云开发者联盟

数据库 JDBC 华为云 华为云开发者联盟 企业号2024年5月PK榜

hoobuy淘宝代购系统 VS Pandabuy淘宝代购系统哪些软件公司可以开发

tbapi

淘宝代购系统 Pandabuy 淘宝代购集运 Hohobuy

芯盾时代特权账号管理系统帮你填坑

芯盾时代

iam 企业安全 统一身份认证 特权账号管理

Kafka权威指南(三):Kafka起源故事_架构_Neha Narkhede_InfoQ精选文章