写点什么

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:002562

评论

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

GrowingIO Design 组件库搭建之开发工具

GrowingIO技术专栏

设计 大前端

重学JS | 异步编程 Generator()

梁龙先森

面试 大前端 编程语言 28天写作

2020DevOps状态报告——变更管理

禅道项目管理

DevOps 运维 开发 趋势 自动化测试

安卓开发在线!字节跳动Android研发岗这些知识点内部泄露出来了,已拿到offer

欢喜学安卓

android 程序员 面试 移动开发

盘点2020 | 人生是一场马拉松-OBKoro1的2020年年终总结

OBKoro1

2020 大前端 年终总结 OBKoro1

普通人必须掌握的五个必学理财知识

v16629866266

跨越全场景统一架构三大挑战,MindSpore亮出“四招”

华为云开发者联盟

深度学习 联邦学习 mindspore 算子 ai框架

从美国《拜杜法案》到中国供应链体系形成的内在逻辑

JiangX

供应链 28天写作 制造

electron实战练习-三个文件实现一个命令行终端

OBKoro1

node.js Electron electron实战 命令行终端 electron学习

WebRTC ICE 状态与提名处理

阿里云CloudImagine

阿里云 WebRTC 通信 流媒体开发 流媒体传输

研发管理101军规#003 实战规模化敏捷:从8人到百人的敏捷之路

爱吃小舅的鱼

程序人生 Scrum 敏捷开发

林昊获中国计算机学会杰出工程师奖,阿里中间件再获高度肯定,“三位一体”推动技术普惠

阿里巴巴云原生

阿里巴巴 阿里云 开发者 云原生 中间件

新鲜出炉!阿里内部开源SpringCloud Alibaba全解(全彩版)全网首发

Java架构追梦

Java 学习 架构 面试 SpringCloud Alibaba

阿里中间件团队技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java架构之路

Java 程序员 架构 面试 编程语言

我以为自己够牛逼了,直到看到了Alibaba专家的面试笔记,我学习了三个月,却入职京东,税前36K

Java架构之路

Java 程序员 架构 面试 编程语言

阿里P8内部架构核心学习知识笔记在各大互联网上流传,限时开放下载

Java架构之路

Java 程序员 架构 面试 编程语言

mysql字符串字段索引优化

瞌睡的李先生

MySQL 索引

备战2O2I新年资料

ios 面试

Java 程序经验小结:用私有构造器或者枚举类型强化Singleton属性

后台技术汇

28天写作

细节决定成败!致Android高级工程师的一封信,实战解析

欢喜学安卓

android 程序员 面试 移动开发

最近线上发生的两个坑爹锅

艾小仙

后端

架构师训练营第二周作业 - 命题作业

阿德儿

快抛弃你错误的坚持

石君

生活随想 28天写作

高频量化交易机器人系统开发|高频量化交易机器人APP软件开发

系统开发

如何对AD和Exchange进行安全加固满足护网需要?

嘉为蓝鲸

安全 asm AD 邮件系统 权限

顶级!13位专家力荐Spring5为企业级开发提供一站式方案

996小迁

Java spring 编程 架构 面试

工业传感器:工业互联网的第一道门

工业互联网

新思科技静态应用安全测试解决方案获得Forrester Wave认可

InfoQ_434670063458

新思科技 Forrester Wave 静态应用安全测试

低代码开发平台的技术路线

Sam678678

软件测试--selenium安装使用

测试人生路

软件测试

快速入门案例实战:电商网站商品管理(一)

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

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