写点什么

Pinterest 基于 AWS 规模化使用 Apache Kafka 的实践经验

  • 2018-12-13
  • 本文字数:999 字

    阅读完需:约 3 分钟

Pinterest基于AWS规模化使用Apache Kafka的实践经验

在 Pinterest,Apache Kafka 被用于为实时流应用程序传输数据、记录日志和可视化监控指标。Pinterest 的 Kafka 托管在 AWS 上,为了实现复制和高可用性,其安装使用了 MirrorMaker 和 DoctorKafka 工具。


Pinterest 的技术主管Yu Yang写道,Pinterest 的Kafka安装运行在 2000 多个“代理(broker)”上,分布在 AWS 的三个地区,每天处理 8 亿多条、1.2PB 消息。他们的主要 Kafka 工具集包括 Kafka 的 MirrorMaker 和 Pinterest 自己的 DoctorKafka。MirrorMaker 消费源集群中的数据并将其发布到目标集群,实际上是创建源集群的副本。Pinterest 的团队使用它在三个 AWS 区域之间传播数据。大多数代理都位于 us-east-1,尽管这是 AWS 历史最悠久的区域,但它也有自己的问题。每个集群中的 Kafka 代理分布在三个可用性区域中,每个主题分区的副本都分布在三个区域中,因此,最多可以承受两个代理失败。


Kafka 代理失败很常见。替换失败的代理和重新平衡工作负载“需要谨慎地创建和编辑分区再分配文件,并手动执行 Kafka 脚本命令”,Yang 在前一篇文章中写道。其结果是DoctorKafka,一个自动化这些步骤的开源工具。DoctorKafka 可以检测失败,并自动将工作负载分配给健康的代理。它基于“主代理(master-agent)”模型。“代理体(agent)”在每个代理上运行并收集指标,中央主服务器分析这些指标。中央服务器确定故障并运行命令采取纠正措施。DoctorKafka 是“保守”的,因为它只有在确定的时候才会采取纠正措施,否则就会发出警告。大多数大型 Kafka 部署都会使用一种复制策略,使用 MirrorMaker 或类似的工具


Pinterest 在 AWS d2.2xlarge 实例上运行 Kafka。据 Yang 介绍,由于EBS争用导致的性能问题,他们从st1 EBS磁盘经过吞吐量优化的 c3.2xlarge 实例转到了有本地存储的 d2 实例。然而,其他人在他们的基准测试中报告了相反的结果。Kafka 还构成了 Pinterest 日志基础设施的基础,每天处理 100+TB 的数据。服务将数据写到磁盘,日志代理Singer从磁盘获取数据并写到 Kafka。另一个自定义工具Secor从 Kafka 获取日志消息,并将它们持久化到 S3,以克服“Kafka 的弱最终一致性模型”的不足。


未来,Pinterest 将探索把Kubernetes作为 Kafka 部署的抽象层,一些组织已经在这样做了。Pinterest 的一些服务已经转移到容器中。另一个目标是再次探索 EBS 存储,因为新的 EBS 产品经过了更好的优化。


查看英文原文:Scaling Apache Kafka at Pinterest


2018-12-13 14:001668
用户头像

发布了 1008 篇内容, 共 411.6 次阅读, 收获喜欢 346 次。

关注

评论 2 条评论

发布
用户头像
企鹅3362六29503 高速外..网.梯.子 免.费试..用 gma.il/ytb/twi.tt无限.制 这世上有一条路无论如何也不能走,那就是歧途,只要走错一步结果都会是粉身碎骨。
2019-01-02 20:21
回复
没有更多了
发现更多内容

Python OpenCV 图像处理之图像直方图,取经之旅第 25 天

梦想橡皮擦

Python OpenCV 4月日更

Rust从0到1-枚举-定义

rust 枚举 Option

一个可递归遍历的Vue树型组件

空城机

JavaScript vue.js 大前端 4月日更

从程序员角度看湖南电信网络全崩,如何防范服务器被攻击以及解决方案

北游学Java

Java 网络安全 网络 服务器

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

Spring 类型转换

邱学喆

Converter spring类型转换 GenericConversionService GenericConverter ResolvableType

什么是跨职能合作的关键?

王辉

团队管理 技术管理 沟通

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

Java编辑器

ベ布小禅

4月日更

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

升级JDK到1.8笔记

风翱

jdk8 4月日更

JVM-技术专题-MAT解析OOM问题

码界西柚

JVM

真假敏捷教练

escray

面试 面经 4月日更

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

微服务中台技术解析之项目环境隔离

小江

kafka 架构 DevOps 后端

Spark的动态资源分配

小舰

Spark调优 4月日更

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

树莓派安装pytorch

IT蜗壳-Tango

4月日更

Java流(Stream)操作实例-筛选、映射、查找匹配

Java小咖秀

Java stream java8 日常开发

感谢Github帮我斩获了8家大厂Offer

Java架构师迁哥

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

无脑用 react 的 useCallback

sadhu

React Hooks 无脑 useCallback

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

Pinterest基于AWS规模化使用Apache Kafka的实践经验_语言 & 开发_Hrishikesh Barua_InfoQ精选文章