写点什么

Kafka 在 LinkedIn 公司的应用场景、现状与未来

2015 年 2 月 10 日

Apache Kafka 是分布式发布 - 订阅消息系统,它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。Kafka 是一个分布式,分区化,可复制的提交日志服务。LinkedIn 使用 Kafka 实现了公司不同应用程序之间的松耦和,那么作为一个可扩展、高可靠的消息系统,它在 LinkedIn 公司内部都有哪些应用场景、其生态系统是什么样的、未来又会向哪些方面发展呢?最近,LinkedIn 的工程总监 Mammad Zadeh 在其公司博客上发表了一篇题为《Kafka 在 LinkedIn 公司的发展现状和未来 》的文章,对此进行了介绍。

用例

  1. 监控:主机通过 Kafka 发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监控仪表盘并发送警告。除此之外,LinkedIn 还利用 Apache Samza 实现了一个能够实时处理事件的富调用图分析系统。
  2. 传统的消息: 应用程度使用 Kafka 作为传统的消息系统实现标准的队列和消息的发布—订阅,例如搜索和内容提要(Content Feed)。
  3. 分析: 为了更好地理解用户行为,改善用户体验,LinkedIn 会将用户查看了哪个页面、点击了哪些内容等信息发送到每个数据中心的 Kafka 集群上,并通过 Hadoop 进行分析、生成日常报告。
  4. 作为分布式应用程序或平台的构件(日志):大数据仓库解决方案 Pinot 等产品将 Kafka 作为核心构件(分布式日志),分布式数据库 Espresso 将其作为内部副本并改变传播层。

Kafka 生态系统

为了支持各种使用场景,Kafka 还需要其他组件的配合,包括:

  1. MirrorMaker:一个用来在不同的 Kafka 集群之间移动数据的开源项目。在很多情况下我们需要对多个数据中心产生的事件执行业务逻辑,MirrorMaker 的作用就是收集这些数据中心产生的事件。
  2. REST 接口:让非 Java 应用程序能够很容易地发布和消费 Kafka 消息。
  3. 模式注册表:LinkedIn 使用 AVRO 处理事件模式的标准化,在核心的 Kafka API 之上有一层独立的 API 负责发送和接收 AVRO 事件,该 API 使用了模式注册表服务处理 Kafka 事件的序列化和反序列化。
  4. 审计服务:一个数据中心产生的事件通常会被移动到其他数据中心进行离线处理,此时消费应用程序(例如 MapReduce 任务)需要清楚一个特定时间窗口所产生的事件何时才能接收完成以便进行离线处理,为此需要基于 Kafka 构建一个审计服务。
  5. 一个能够将数据从 Hadoop 推送到 Kafka 的工具:大部分经过 MapReduce 集群处理后的数据都需要存储到服务数据库中(例如 Voldemort),桥接工具能够帮助我们将数据从 Hadoop 推送到 Kafka 上进而进行存储。

Kafka 的未来

  1. 安全:为 Kafka 代理添加基础的认证授权功能。即使是在一个安全的网络中,该功能对于某些类型的数据而言也是必须的,因为这样能够避免人为的错误。这一部分工作开源社区已经在做了。
  2. 限额:考虑到很多不同的应用程序会使用同一个 Kafka 集群,保证某个应用程序不会突然耗尽所有的系统资源以致于影响集群上其他应用程序的运行是非常重要的。 目前,当应用程序开始从 Kafka 日志的开头读取数据或者在长时间的暂停之后再次启动时,网络会饱和,此时会对共享该网络的其他应用程序造成意想不到的后果,2015 年 LinkedIn 将重点处理这一问题。
  3. 可靠性和可用性:Kafka 有很多开源贡献者,但是即使有大量的开发工程师,所有的代码也都会经过严格的测试才会发布到最终的产品中,同时 LinkedIn 还将积极解决自己日常使用时发现的问题。
  4. 核心功能:在过去的一年中,LinkedIn 创建了一组新的 API 让 Kafka 能够执行流水线发布操作从而提升将事件发布到 Kafka 上的性能。新的一年,LinkedIn 还将开发一个新的消费 API,该 API 将移除对 Zookeeper 的依赖,让我们能够拥有一个完全安全的模型。此外,LinkedIn 还会将 Kafka REST 接口作为一等公民,使其支持核心的 SLAs 和监控。
  5. 有效地节约成本:Kafka 能够随着公司业务规模的扩大而扩展,同时不会在扩展的过程中出现各种各样的问题让人应接不暇。
  6. 新举措: 目前,LinkedIn 主要使用 Kafka 解决高吞吐量的问题,将来 Kafka 将会被应用到新的场景中。例如,分布式数据库 Espresso 将会利用 Kafka 实现主、副 Espresso 存储节点之间的复制。
  7. 提升可操作性:现在 Kafka 有很多人工流程,为此 LinkedIn 公司的可靠性工程师创建了很多实用工具,将来这些工具或功能将会集成到 Kafka 中以减少人为的错误。

感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 2 月 10 日 03:1711637
用户头像

发布了 321 篇内容, 共 103.5 次阅读, 收获喜欢 8 次。

关注

评论

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

架构师训练营第四周作业

韩儿

架构师训练营第四周作业2

韩儿

系统架构总结

Mars

系统架构

Architecture Phase1 Week8:Summarize

phylony-lu

极客大学架构师训练营

「八大排序算法」16张图带你彻底搞懂基数排序

bigsai

排序算法 基数排序

产品发布 | 准备好提升你的 ITSM 了吗?

Atlassian

DevOps Atlassian ITSM ITIL

week4学习小结

幸福小子

互联网系统架构

架构师训练营-week08

睁眼看世界

极客大学架构师训练营

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

幸福小子

互联网系统架构

Wi-Fi+BLE 通断器开发资料全开源!快速打造您的智能家居“改装神器”

智能物联实验室

人工智能 物联网 智能家居 通断器

为什么继承 Python 内置类型会出问题?!

Python猫

c Python 编程 程序员

架构师训练营第 4 周课后练习

菜青虫

极客大学架构师训练营

亚新资本开创金融理财新征程

Geek_459987

极客时间架构师训练营 1 期 - 第 8 周总结

Kaven

架构师训练营第 1 期第 8 周作业

好吃不贵

极客大学架构师训练营

架构师入门学习感悟四

莫问

架构师训练第4周:作业二

leo

极客大学架构师训练营

架构师训练营第四周作业

丁乐洪

Architecture Phase1 Week8:HomeWork

phylony-lu

极客大学架构师训练营

第四周课后练习作业一

lithium

极客大学架构师训练营

第四周课后练习作业二

lithium

架构师训练营 W04 作业

Geek_f06ede

极客大学架构师训练营

架构师系列之5:互联网大数据分析系统架构例子解析

桃花原记

架构师训练营第八周课后作业

Gosling

极客大学架构师训练营

推荐好书:《使用Python进行图像处理和采集》第二版(附下载方式)

计算机与AI

Python 图像处理

为什么说 Pulsar 是云原生的消息平台?

tison

云原生 消息队列 Apache Pulsar

Week 8总结

黄立

架构师训练第4周:作业一

leo

极客大学架构师训练营

架构师训练营第 4 周学习总结

菜青虫

极客大学架构师训练营

架构师训练营第 1 期 -- 第八周作业

发酵的死神

极客大学架构师训练营

架构师训练营第 1 期 -- 第八周学习总结

发酵的死神

极客大学架构师训练营

Hummer 轻量级跨端技术框架详解及实战

Hummer 轻量级跨端技术框架详解及实战

Kafka在LinkedIn公司的应用场景、现状与未来-InfoQ