百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

LinkedIn的Kafka生态系统

bigegpt 2025-02-28 14:57 34 浏览

原文:Kafka Ecosystem at LinkedIn

作者:Joel Koshy

翻译:孙薇

责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。

Apache Kafka是一个高度可扩展的消息系统,它在 LinkedIn 的中央数据管道中扮演着十分重要的角色。Kafka 是 LinkedIn 于2010年开发的消息系统,目前每天通过1400个 broker (消息中间件处理结点)处理逾1.4万亿条消息。鉴于其高耐久与低延迟两项优点,我们在 LinkedIn 使用 Kafka 为大量新的关键用例提供支持,包括使用基于 Kafka 的 replication 机制来取代Espresso集群间的 MySQL 主从复制(replication),支持Venice系统以及正在开发中的第二代Databus实时低延迟数据抓取系统等。

随着我们对 Kafka 的依赖迅速增长,为了支持这些用例,必须先解决掉一些重大的问题,因此我们围绕着 Kafka 开发出了一套完整的生态系统。在本文中,我会总结及列出部分解决方案,可能对 Kafka 的使用者有所帮助;另外我会列出一些即将举行的大会动向,以饕读者。

LinkedIn 的 Kafka 生态环境

上图并未将 LinkedIn 所有各类的数据管道与拓扑结构全部列出,仅作为 LinkedIn Kafka 关键功能部署及其互动方式的图示说明。

核心的 Kafka 服务

Kafka 的 Broker

每个数据中心都有各种用途的 Kafka broker 集群运行,在 LinkedIn 我们目前部署了将近1400个 broker,这些 broker 每周接收2个多 PB 的数据。我们一般使用 Apache Kafka 的 trunk 版本,大约每个季度发布一个新的内部版。

Kafka 的 Mirror-Maker

我们使用Kafka内置的 Mirrormaker 工具来创建集群的镜像——读取源集群,生成目标集群。有多个可在同一个数据中心上或跨数据中心运行的镜像管道,Todd Palino曾撰文总结过在 LinkedIn 我们使用 Mirrormaker 来执行多管道复制的方式。

Schema 注册中心

我们设定 Avro为 LinkedIn 数据管道的标准编码通用语,这样一来每个生产者(producer)都会编译 Avro 数据,在 schema 注册中心注册 Avro schema,每个序列化信息中也都要嵌入 schema-ID;而消费者(consumer)则会根据 ID 从 schema 注册中心获取相应的 schema ,以便反序列化 Avro 信息。尽管各数据中心有多个 schema 注册实例,但都受同一个包含 schema 的单个(复制)数据库支持。

Kafka REST 代理

Kafka REST 是我们提供给非 Java 客户端的 HTTP 代理,大多 Kafka 集群都有相关的 REST 代理, Kafka REST 也是负责 topic 管理的正式网关。

Nuage

Kafka 所提供的大多都是自助服务:用户定义自己的事件 schema ,然后开始生产 topic ;Kakfa 的 broker 通过默认设置与分区数自动生成 topic ;最后,任何消费者都能消费该 topic,这使得 Kafka 完全开放。

随着使用 Kafka 的地方越来越多,新的用例不断出现,上述方法的诸多限制也愈发明显。首先,一些对 Kafka SRE (网站可靠性工程师)有着特殊要求的 topic 需要用户自定义配置;其次对大多用户来说,发现和检查 topic 相关的元数据(比如字节率、审计完整性、schema 历史等)都十分困难;再次,Kafka 整合了各种安全功能,特定 topic 的拥有者可能想要限制自己的访问权,并自行管理 ACL。

Nuage是 LinkedIn 的在线数据架构自助服务门户,我们最近曾与 Nuage 团队合作过,在 Nuage 中添加了对 Kafka 的支持。这种做法为用户管理自己的 topic 和相关元数据提供了方便,Nuage 将 topic 的增删 (CRUD)操作指派给了负责总结 Kafka 管理工具之间细微差异的 Kafka REST。

各种库

LiKafka 客户端库

LiKafka 的生产者对开源生产者进行包装,并负责 schema 注册、 Avro 编码、审计等工作,还对大型消息提供支持。审计事件会计算在10分钟内通过窗口发送给每个 topic 的事件数量。同样,消费者也负责包装开源消费者、查找 schema、Avro编码及审计任务等工作。

Kafka 推送任务

Kafka 推送任务负责将各类数据从 Hadoop 运送到 Kafka 供在线服务消费,它们运行在公司内部(CORP)环境的 Hadoop 集群上,为 CORP 的数据部署 Kafka 集群生产数据,另有 Mirrormaker 将这些数据复制到生产(PROD)数据部署的集群上。

Gobblin

Gobblin是 LinkedIn 新数据摄取框架,负责沟通 Kafka 与 Hadoop,它取代了我们之前使用的Camus。基本上它就是一个大型 Hadoop 任务,将 Kafka 中的所有数据复制到 Hadoop 上以供离线操作。

监控服务

Kafka 监控

这是一个连续运行的 Kafka 部署验证测试套件,我们用它来验证新版发布,并监控现有的部署情况。目前我们用它来监控基础却十分关键的指标,比如端对端延迟以及数据丢失。我们预想未来在测试集群中,使用这一框架来连续测试管理操作的正确性(比如分区再分配),甚至利用诸如 Simoorg之类的故障注入框架来确保即便有各种故障存在的情况下,我们也能满足可用的 SLA 要求。

Kafka 审计

在我们的跟踪审计框架中有两个关键组件:

  • 一个 Kafka 审计服务负责消费并重新计算 Kafka 集群的所有数据,并发出与被追踪生产者相似的审计事件数量。我们可以按照生产者计数来调整 Kafka 集群的计数,及时检测到数据丢失的情况。

  • Kafka 的审计验证服务会持续监控数据的完整度,并为审计追踪的可视化提供相应 UI。这个服务是审计事件的消费者,它会插入审计数据库中,并在数据出现延迟或丢失时发出警告。我们使用审计数据库来调查警告出现的情况,并确切定义数据丢失的位置。

Kafka 生态环境

Burrow

Burrow是监控 Kafka 消费者健康情况这一棘手问题的恰当方式,它为我们提供了消费者状态的综合概览,并提供了无需指定阈值的消费者延迟验证服务。Burrow 会按照 topic 分区来监控所有消费者所提交数据的偏差值,并根据需求计算相应消费者的状态。

在 LinkedIn 的流处理

Samza是 LinkedIn 的流处理平台,它授权用户获取自己流处理任务,并第一时间运行在生产环境中。在流处理领域,各种讨论一直很积极,有很多开源系统也负责类似的工作。但与其他的流处理系统不同,我们之前并未涉及较大范围的功能集,而是着重于让 Samza 在可用性、性能与规模运行方面获得提高。不过现在,鉴于我们有很多生产工作负载已经启动运行,也能将注意力转向功能集的扩展了。之前曾有文章描述过我们在相关生产用例上所实现的功能细节,包括分析、网站监控、安全性等许多新功能。

即将举行的会议

如果想要就我们的 Kafka 生态环境、我们的新功能与新用例了解更多信息,欢迎参与下面这些演讲会议:

  • 4月26日,在 Kafka 峰会上:“使用 Kafka 执行 Espresso 数据库复制” —— Espresso 是 LinkedIn 的分布式文件存储系统,保存了我们会员的一些最重要的数据。Tom Quiggle将会展示为什么我们会将 Espresso 集群复制从 MySQL 内置的复制机制替换成 Kafka 的复制机制,以及 Espresso 是如何利用 Kafka 作为流复制方式的,这也正是将 Kafka 的耐久性与可用性在测试中的应用用例。

  • 4月26日,同样在 Kafka 峰会上:“” —— Todd Palino将会探讨多数据中心与 Kafka 多层集群的基础架构,并针对如何监控整体生态环境给出实用的技巧。

  • 4月26日,同样在 Kafka 峰会上:“在2015年 LinkedIn 的 Kafka 时光” ——Joel Koshy将会深入讨论在2015年 LinkedIn 在 Kafka 生产环境中所遇到一些最困难、最突出的问题,该演讲会涉及2015年所有的宕机事件及其影响,以及相关的检测、调查与补救办法。

  • 5月10日,在 Apache 大数据会议上:“构建自助式的 Kafka 系统” ——Joel Koshy将会深入讲解集合了安全性、资源分配、 REST API 及 Nuage 的 Kafka 如何成为了真正的多租户服务。

  • 5月9日,在 Apache 大数据会议上:“扩展流处理应用背后的秘密” ——Navina Ramesh将会描述 Apache Samza 在状态管理和容错方面的方法,并讨论如何将其有效地用于可伸缩、有状态的流处理应用之上。

  • 6月28-30日,在 Hadoop 峰会上:“在 LinkedIn 扩展方面:减少使用 Lambda 的流处理” ——Yi Pan和Kartik Paramasivam会通过在 LinkedIn的实践经验概述,突出描述 Samza 作为实时流处理平台的关键优势。欢迎列席!

2016年5月13日-15日,由CSDN重磅打造的2016中国云计算技术大会(CCTC 2016)将于5月13日-15日在北京举办,今年大会特设“中国Spark技术峰会”、“Container技术峰会”、“OpenStack技术峰会”、“大数据核心技术与应用实战峰会”四大技术主题峰会,以及“云计算核心技术架构”、“云计算平台构建与实践”等专场技术论坛。大会讲师阵容囊括Intel、微软、IBM、AWS、Hortonworks、Databricks、Elastic、百度、阿里、腾讯、华为、乐视、京东、小米、微博、迅雷、国家电网、中国移动、长安汽车、广发证券、民生银行、国家超级计算广州中心等60+顶级技术讲师,CCTC必将是中国云计算技术开发者的顶级盛会。详情访问CCTC 2016官网。

相关推荐

Linux 系统启动完整流程

一、启动系统流程简介如上图,简述系统启动的大概流程:1:硬件引导UEFi或BIOS初始化,运行POST开机自检2:grub2引导阶段系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器GRU...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图:这张图大体上描述了Linux系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。这篇文章就以这张图为基础,介绍Linux在I/O上做了哪些事情。文件系统什么是...

linux入门系列12--磁盘管理之分区、格式化与挂载

前面系列文章讲解了VI编辑器、常用命令、防火墙及网络服务管理,本篇将讲解磁盘管理相关知识。本文将会介绍大量的Linux命令,其中有一部分在“linux入门系列5--新手必会的linux命令”一文中已经...

Linux环境下如何设置多个交叉编译工具链?

常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:sudoapt-getinstallgcc-arm-linux-gnueab...

可算是有文章,把Linux零拷贝技术讲透彻了

阅读本文大概需要6.0分钟。作者:卡巴拉的树链接:https://dwz.cn/BaQWWtmh本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念...

linux软链接的创建、删除和更新

大家都知道,有的时候,我们为了省下空间,都会使用链接的方式来进行引用操作。同样的,在系统级别也有。在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接(基本上都差不多了,其中可能...

Linux 中最容易被黑客动手脚的关键目录

在Linux系统中,黑客攻击后常会针对关键目录和文件进行修改以实现持久化、提权或隐藏恶意活动。本文介绍下黑客最常修改的目录及其手法。一、/etc目录关键文件有:/etc/passwd和/et...

linux之间传文件命令之Rsync傻瓜式教程

1.前言linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说...

Linux下删除目录符号链接的方法

技术背景在Linux系统中,符号链接(symlink)是一种特殊的文件,它指向另一个文件或目录。有时候,我们可能需要删除符号链接,但保留其指向的目标目录。然而,在删除符号链接时可能会遇到一些问题,例如...

阿里云国际站注册教程:aa云服务器怎么远程链接?

在全球化的今天,互联网带给我们无以计数的便利,而云服务器则是其中的重要基础设施之一。这篇文章将围绕阿里云国际站注册、aa云服务器如何远程链接,以及服务器安全防护如Ddos防火墙、网站应用防护waf防火...

Linux 5.16 网络子系统大范围升级 多个新适配器驱动加入

Linux在数据中心中占主导地位,因此每个内核升级周期的网络子系统变化仍然相当活跃。Linux5.16也不例外,周一最新与网络相关的更新加入了大量的驱动和新规范的支持。一个较新硬件的驱动是Realt...

搭建局域网文件共享服务(Samba),手机电脑都能看喜欢的影视剧

作为一名影视爱好者,为了方便地观看自己喜欢的影视作品,在家里搞一个专门用来存放电影的服务器是有必要的。蚁哥选则用一台Ubuntu系统的电脑做为服务器,共享影音文件,其他同一个局域网内的电脑或手机可以...

分享一个实用脚本—centos7系统巡检

概述这周闲得慌,就根据需求写了差不多20个脚本(部分是之前分享过的做了一些改进),今天主要分享一个给平时运维人员用的centos7系统巡检的脚本,或者排查问题检查系统情况也可以用..实用脚本#!/bi...

Linux 中创建符号链接的方法

技术背景在Linux系统里,符号链接(SymbolicLink),也被叫做软链接(SoftLink),是一种特殊的文件,它指向另一个文件或者目录。符号链接为文件和目录的管理带来了极大的便利,比...

一文掌握 Linux 符号链接

符号链接(SymbolicLink),通常被称为“软链接”,是Linux文件系统中一种强大而灵活的工具。它允许用户创建指向文件或目录的“快捷方式”,不仅简化了文件管理,还在系统配置、软件开发和日...