在LinkedIn的 Kafka 生态系统

Apache Kafka是一个高度可扩展的消息传递系统,作为LinkedIn的中央数据管道起着至关重要的作用。 Kafka 是在2010年在LinkedIn开发的,它目前在1400多家经纪商处理超过1.4万亿条消息。Kafka 强大的耐用性和低延迟使我们能够使用Kafka为LinkedIn提供一些新的关键任务用例。其中包括用基于Kafka的复制,威尼斯替代Espresso中的 MySQL复制,并支持下一代Databus(正在开发中)。

随着我们的 Kafka 使用量继续快速增长,我们必须解决一些重大问题,以使所有这些成为可能,所以我们围绕 Kafka 开发了一个完整的生态系统。在这篇文章中,我将总结一些我们的解决方案,这些解决方案对于使用 Kafka 的人来说可能是有用的,并且强调几个即将到来的活动,您可以从中了解更多。

Kafka 生态系统在LinkedIn
上图并未完全捕捉到LinkedIn上的各种数据管道和拓扑结构,但是可以说明LinkedIn Kafka部署中的关键实体以及它们如何相互影响。

核心 Kafka 服务
Kafka 经纪人

我们为每个数据中心的不同目的运行几组 Kafka 经纪人。我们目前在LinkedIn上部署了近1400名经纪人,每周收到超过2 PB的数据。我们通常运行Apache Kafka主干,每个季度都会削减一个新的内部版本。

Kafka 镜子制造商

镜像制造商使我们能够通过从源集群中消费并生成目标集群来制作集群副本。在数据中心和数据中心内都有多个镜像管道。Todd Palino的文章总结了我们如何使用这个来促进LinkedIn上的Kafka的多色。

模式注册表

我们已经在LinkedIn的数据管道内将Avro标准化为通用语言。因此,每个生产者都编码Avro数据,在模式注册中注册Avro模式,并在每个序列化消息中嵌入一个模式ID。消费者从模式注册表服务中获取与ID相对应的模式,以反序列化Avro消息。虽然我们的数据中心有多个模式注册表实例,但这些实例由包含模式的单个(复制)数据库支持。

Kafka REST代理

Kafka REST是我们为非Java客户端提供的HTTP代理。我们的大多数Kafka集群都有一个关联的REST代理。Kafka REST也是主题行政运作的官方网关。

Nuage

Kafka大部分都是自助服务:用户定义自己的事件模式并开始制作主题。Kafka代理自动创建具有默认配置和分区计数的主题。最后,任何消费者都可以消费这个话题,使 Kafka 完全开放。

随着 Kafka 的使用量不断增加,出现新的使用案例,上述方法中出现了一些限制。首先,一些主题需要自定义配置,需要对Kafka SRE进行特殊请求。其次,大多数用户很难发现和检查他们拥有的主题的元数据(例如,字节率,审计完整性,模式历史等)。第三,由于Kafka包含了各种安全功能,某些主题所有者可能希望限制对主题的访问,并自行管理ACL。

Nuage是LinkedIn在线数据基础设施资源的自助服务门户,最近我们与Nuage团队合作,在Nuage内增加了对Kafka的支持。这为用户提供了一个方便的地方来管理他们的主题和相关的元数据。Nuage将主题CRUD操作委托给Kafka REST,它抽象出Kafka行政事业的细微差别。

图书馆
LiKafka客户端库

LiKafka制作人包装开放源码制作人,但也进行模式注册,Avro编码,审计和支持大消息。审计事件计算在10分钟窗口中发送给每个主题的事件数量。同样,消费者包装开源消费者,并进行模式查找,Avro解码和审计。

Kafka 推工作

Kafka推送工作用于将丰富的数据从Hadoop发送到Kafka,供在线服务使用。推送作业在CORP环境中的Hadoop集群上运行,并将数据生成到CORP数据部署Kafka集群中。镜像制造者将这些数据复制到PROD数据部署集群中。

Gobblin

Gobblin是LinkedIn的新的摄取框架,并贬低了 Camus,这是我们以前的Kafka to Hadoop桥梁。它基本上是一个大的Hadoop作业,它将Kafka中的所有数据复制到Hadoop中进行离线处理。

监测服务
Kafka 监视器

这是Kafka部署的一套持续运行的验证测试,我们利用这些测试来验证新版本以及监控现有部署。我们目前正在监控基本但重要的指标,如端到端延迟和数据丢失。我们预计未来我们将在测试集群中使用这个框架来不断地测试管理操作的正确性(例如分区重新分配),甚至利用诸如Simoorg之类的错误注入框架来确保我们能够满足我们的可用性SLA即使在各种失败的情况下。

Kafka 审计

我们的审计跟踪基础架构中有两个关键组件:

一种 Kafka 审计服务,用于消费和重新计算 Kafka 集群中的所有数据,并发出类似于追踪生产者的审计事件。这使我们能够将Kafka集群上的计数与生产者计数进行协调,并检测数据丢失(如果有的话)。
Kafka 审计验证服务,持续监控数据的完整性,并提供用于查看审计跟踪的用户界面。此服务消耗并将审计事件插入审计数据库,并在数据延迟或丢失时发出警报。我们使用审计数据库来调查发生的警报,并精确地指出数据丢失的位置。
Kafka 生态系统
地洞

Burrow是监控Kafka消费者健康的棘手问题的一个优雅的答案,并提供了一个消费者状态的全面视图。它提供消费滞后检查作为服务,而不需要指定阈值。它以主题分区粒度监视所有消费者的承诺偏移,并根据需要计算这些消费者的状态。

流处理在LinkedIn
Samza是LinkedIn的流处理平台,可以帮助用户尽快完成流处理工作并投入生产。流处理领域一直嗡嗡作响,有许多开源系统正在做类似的事情。与专注于非常广泛的功能集的其他流处理系统不同,我们专注于使Samza在LinkedIn规模下可靠,高性能和可操作。现在我们有很多生产工作量正在运行,我们可以把注意力放在拓宽功能集上。这篇较早的博客文章详细介绍了我们关于相关性,分析,站点监控,安全等方面的生产用例以及我们正在开发的一些新功能。

即将举行的活动
如果您有兴趣进一步了解我们的Kafka生态系统,我们如何部署和排除Kafka故障,以及我们的新特性 /用例,我们邀请您参加这些即将到来的会议:

4月26日:Espresso数据库复制与Kafka @ Kafka峰会:Espresso是LinkedIn的分布式文档商店,托管我们最重要的成员数据。Tom Quiggle将介绍为什么Espresso将从MySQL的内置复制机制切换到Kafka,以及Espresso如何将Kafka作为复制流 - 这是一个将Kafka的耐久性和可用性保证加入测试的用例!
4月26日:更多的数据中心,更多的问题 @ Kafka峰会:Todd Palino将谈论多数据中心和多层 Kafka 集群的基础架构,并就如何监控整个生态系统提供实用技巧。
4月26日: 在LinkedIn Kafka 天,2015年 @ Kafka 峰会:霍埃尔·科什将深入了解一些最困难,最突出的 Kafka 生产问题是LinkedIn创下2015年该谈话会在每个停运及其影响,以及方法到检测,调查和整治。
5月10日:建立一个自助服务 Kafka 系统 @ 阿帕奇:大数据:霍埃尔·科什将提供一个深入了解成什么需要通过共同编织的安全性,配额的RESTful API和Nuage使 Kafka 一个真正的多租户服务。
5月9日: 背后缩放流处理应用程序的秘密 @ 阿帕奇:大数据:Navina拉梅什将描述阿帕奇Samza对国家管理和容错方法,并讨论了如何可以有效地用于扩展状态流处理应用程序。
6月28-30日: λ-少在LinkedIn @流处理@规模的Hadoop峰会:Yi·潘和卡蒂克·帕拉梅西瓦姆将突出Samza的主要优势是实时流处理平台,其在LinkedIn使用的动手概述。

在LinkedIn的 Kafka 生态系统的更多相关文章

  1. 【转载】LinkedIn是如何优化Kafka的

    http://www.wtoutiao.com/p/18d5RY0.html 在LinkedIn的数据基础设施中,Kafka是核心支柱之一.来自LinkedIn的工程师曾经就Kafka写过一系列的专题 ...

  2. LinkedIn是如何优化Kafka的

    作者 张卫滨                发布于        2015年9月21日   转载 在LinkedIn的数据基础设施中,Kafka是核心支柱之一.来自LinkedIn的工程师曾经就Kaf ...

  3. Kafka详细的设计和生态系统

    欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 译者:人工智能资讯小编 本译文自Jean-Paul Azar 在 https://dzone.com 发表的 Kafka Detailed De ...

  4. 初识kafka

    简介     Kafka经常用于实时流数据架构,用于提供实时分析.本篇将会简单介绍kafka以及它为什么能够广泛应用. kafka的增长是爆炸性的.2017年超过三分之一的世界五百强公司在使用kafk ...

  5. 使用 Kafka 在生产环境构建大规模机器学习

    智能实时应用为所有行业带来了革命性变化.机器学习及其分支深度学习正蓬勃发展,因为机器学习让计算机能够在无人指引的情况下挖掘深藏的洞见.这种能力正是多种领域所需要的,如非结构化数据分析.图像识别.语音识 ...

  6. kafka实时流数据架构

    初识kafka https://www.cnblogs.com/wenBlog/p/9550039.html 简介 Kafka经常用于实时流数据架构,用于提供实时分析.本篇将会简单介绍kafka以及它 ...

  7. 详解Kafka: 大数据开发最火的核心技术

    详解Kafka: 大数据开发最火的核心技术   架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟. 广告 大数据时代来临,如果你还不知道Kafka那你就真 ...

  8. 01 . 消息队列之(Kafka+ZooKeeper)

    消息队列简介 什么是消息队列? 首先,我们来看看什么是消息队列,维基百科里的解释翻译过来如下: 队列提供了一种异步通信协议,这意味着消息的发送者和接受者不需要同时与消息保持联系,发送者发送的消息会存储 ...

  9. 四万字32图,Kafka知识体系保姆级教程宝典

    本文目录: 一.消息队列 Apache Pulsar Pulsar 与 Kafka 对比 二.Kafka基础 三.Kafka架构及组件 四.Kafka集群操作 五.Kafka的JavaAPI操作 六. ...

随机推荐

  1. JS学习笔记--变量类型

    1.js数据类型分为基本数据类型和引用数据类型 基本数据类型:string.number.boolean.null.undefined.symbol(ES6中新增) 引用数据类型:object.arr ...

  2. docker-compose 构建mongodb并导入基础数据示例

    使用docker-compose构建mongodb服务并导入基础数据示例. 1.文件目录结构 ——mongo/ |——docker-compose.yml |——mongo-Dockerfile |— ...

  3. js | JavaScript中数据类型转换总结

    转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...

  4. [异常笔记] spring boot 启动-2018040201

    异常 1.编码引发异常 00:59:49.311 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - ...

  5. 微信网页授权access_token与基础支持的access_token

    问题1:网页授权access_token与分享的jssdk中的access_token一样吗? 答:不一样.网页授权access_token 是一次性的,而基础支持的access_token的是有时间 ...

  6. python获取Excel数据

    Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取 ...

  7. 图解HTTP总结(2)——简单的HTTP协议

    HTTP协议是一种不保存状态,即无状态(stateless)协议.HTTP协议自身不对请求和响应之间的通信状态进行保存.也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理. 使用H ...

  8. order-by-offset-fetch

  9. [Link-Cut-Tree][BZOJ2002]弹飞绵羊

    题面 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上\(n\)个 ...

  10. 20145202马超 《Java程序设计》第六周学习总结

    进程:是一个正在执行中的程序,每一个进程都有一个执行程序,该顺序是一个执行路径,或者说是一个控制单元. 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行. 一个进程至少有一线程. Java ...