写点什么

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

  • 2015-02-10
  • 本文字数:1818 字

    阅读完需:约 6 分钟

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-02-10 03:1712099
用户头像

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

关注

评论

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

干货 | 企业如何快速采集分析日志?

嘉为蓝鲸

运维 嘉为蓝鲸

Web3时代到来,腾讯云助力产业提效和互联网创新

科技热闻

详解MySQL隔离级别

Jeremy Lai

隔离级别

阿里云ECS后台CPU占用100%,top却找不到

Jeremy Lai

cpu 100% 阿里云;

手把手教你用Java获取IP归属地

Jeremy Lai

IP地址

腾讯发布数字政务核心产品体系,多方位助力政府数字化转型

科技热闻

中国视频云进入“出海”时代,腾讯云音视频发布海外专门品牌及新产品

科技热闻

Spring Cloud 整合 nacos 实现动态配置中心

Jeremy Lai

nacos 动态配置

PID和TID的区别

源字节1号

软件开发 前端开发 后端开发 小程序开发

详解ConCurrentHashMap源码(jdk1.8)

Jeremy Lai

ConcurrentHashMap 源码阅读

MySQL更新锁表超时 Lock wait timeout exceeded

Jeremy Lai

事务隔离 Mysql死锁

深入理解Redis 数据结构—字典

Jeremy Lai

字典 redis 底层原理

SpringBoot快速整合通用Mapper

Jeremy Lai

通用Mapper spring-boot

小程序正式版报错600002 url not in domain list

Jeremy Lai

小程序

超简单的CDH6部署和体验(单机版)

程序员欣宸

大数据 hadoop CDH 12月月更

友元、异常和其他

Maybe_fl

干货 | 五大关键点,帮助企业快速构建可落地的IT服务管理体系

嘉为蓝鲸

运维 嘉为蓝鲸 IT服务

详解HashMap源码解析(下)

Jeremy Lai

HashMap底层原理

后端程序员实现一个IP归属地的小程序

Jeremy Lai

应用瓴羊Quick BI数据分析,实时掌控企业运营数据

对不起该用户已成仙‖

融云&艾瑞发布《政企数智办公平台行业研究报告》,解读数智化时代的办公新趋势

融云 RongCloud

即时通讯 办公 数智化

嘉为蓝鲸WeOps荣获“2022年度行业科技创新产品”

嘉为蓝鲸

运维 嘉为蓝鲸 #WeOps

商务部研究院信用所、启信宝联合发布《中国商务信用发展指数报告(2022)》

合合技术团队

人工智能 大数据 商业

Java通过反射注解赋值

Jeremy Lai

解决问题 java注解

字节一面:说说TCP的三次握手

Jeremy Lai

三次握手 TCP协议

腾讯云升级云端 IDE Cloud Studio,助力开发“化繁为简”

科技热闻

Seata 环境搭建

Jeremy Lai

分布式事务 seata

EMQ助力阿里云飞天洛神云网络构建新一代“亿级并发、百万级吞吐”NLB网络型负载均衡系统

EMQ映云科技

阿里云 物联网 IoT mqtt 12 月 PK 榜

模拟HashMap冲突

Jeremy Lai

hashmap 哈希冲突

SpringBoot整合RabbitMQ实现六种工作模式

Jeremy Lai

spring-boot Rabbit MQ

Centos7安装Nginx教程,一步安装http和https

Jeremy Lai

nginx Linux安装

Kafka在LinkedIn公司的应用场景、现状与未来_语言 & 开发_孙镜涛_InfoQ精选文章