Chaperone:来自Uber工程师团队的Kafka监控工具

标签: | 发表时间:2018-07-24 21:44 | 作者:
出处:http://www.infoq.com

Uber工程师团队 发布了开源项目Chaperone(中文意为监护人),这是一个 Kafka监控工具。在Uber,它被用于监控多个数据中心和大容量Kafka集群中数据丢失、延迟以及重复的问题。

Uber现在的Kafka数据管道跨越了多个数据中心。Uber的各个系统会生成大量服务调用和事件的日志信息。这已就高吞吐量进行了优化。这些服务在多个数据仓库间以多活模式运行。通过Uber的Kafka管道的数据被同时用于批处理以及实时数据分析。

Kafka作为数据总线,会连接Uber各个系统以及一个称为 uReplicator的工具。uReplicator是一个Kafka的复制器,它参照了Kafka用于复制现存集群的 MirrorMaker的原理进行设计。当日志消息被推送到Kafka的代理,代理会将消息进行汇总并推送到数据仓库对应的Kafka区域性集群。消费者会同时处理各个Kafka区域集群与合并了多个数据仓库数据的Kafka架构内的数据。Chaperone就用于实时监控这些消息。

Chaperone的首要职责是在数据通过管道时检测数据丢失、延迟、重复等数据异常。它包含四个组件:

  • 监控类库(AuditLibrary),它会收集、汇总并输出每个应用监控消息的统计信息。这个类库使用了翻转窗口(Tumbling Windows)的概念,用于汇总信息来生成监控消息,并将它们发送到对应Kafka主题(topic)。 翻转窗口常被用于像 Apache Flink这样的流处理系统中,用于将流数据分为不重叠的分片数据。
  • Chaperone服务(ChaperoneService),它会消费Kafka的每条数据并记录下时间戳,并向对应的Kafka主题中推送生成的监控消息。
  • Chaperone收集器(ChaperoneCollector),它会接收ChaperoneService产生的数据并将它们存入数据库,再将它们显示在用户界面中,这样就可以方便地检测和定位消息的丢失和延迟。
  • WebService,它会暴露出REST APIs用于获取或处理数据。

在Chaperone的实现上,必须要保证监控数据的准确性。为了实现准确性,Chaperone采用的策略是保证每一条数据会并且只会被监控一次。这里使用了预写式日志(WAL)。WAL会在消息从ChaperoneService被送到Kafka之前记录一条监控日志,这就保证了如果服务宕机,任何发送的消息都可以被重放。这个 技术常见于一些数据库,如 PostgreSQL

还有一个策略是无论监控消息是在哪里、哪一步被处理,都能使用一个一致的时间戳。Chaperone尚未完全解决这一问题。目前使用的是基于消息编码的混合技术。对于 Avro-schema编码的消息,时间戳可以在常量时间内被读出,对于JSON消息,Chaperone团队写了一个基于流的JSON解析器,它只会读取时间戳而不会解析整个JSON消息。而在代理客户端和服务端仍然使用消息处理时的时间戳。

Chaperone的作用并不仅限于检查数据丢失,还可以用其从Kafka中按照时间戳来读取数据而非通过偏移量。这样无论数据是否已经被处理,用户都可以读取任意时间范围内的数据。因此,Chaperone也可以被用作调试工具,让用户查看已经处理过的消息用以进一步分析。

Chaperone的源码可在 Github上获取。

相关 [chaperone uber 工程师] 推荐:

Chaperone:来自Uber工程师团队的Kafka监控工具

- -
发布了开源项目Chaperone(中文意为监护人),这是一个. 在Uber,它被用于监控多个数据中心和大容量Kafka集群中数据丢失、延迟以及重复的问题. Uber现在的Kafka数据管道跨越了多个数据中心. Uber的各个系统会生成大量服务调用和事件的日志信息. 这些服务在多个数据仓库间以多活模式运行.

Uber工程师对真实世界并发问题的研究

- - 鸟窝
我们知道,Go是Uber公司的主打编程语言. 他们对Uber的2100个不同的微服务,4600万行Go代码的分析,发现了超过2000个的有数据竞争的bug, 修复了其中的1000多个,剩余的正在分析修复中. 谈起真实世界中的Go并发Bug,其实2019年我们华人学者的 Understanding Real-World Concurrency Bugs in Go论文可以说是开山之作,首次全面系统地分析了几个流行的大型Go项目的并发bug.

Uber 是如何利用大数据的

- - 博客 - 伯乐在线
这篇文章概述了 Uber 是如何利用大数据分析实现商业上的成功. 文章首次发表于作者在 Data Science Central 的专栏中. Uber 是一款基于智能手机应用的出租车预定服务,将需要出行的用户和愿意提供驾驶服务的司机联结起来. 由于传统出租车的司机认为这破坏了他们的生计,而且大众对 Uber 对司机在管理上的不足也有所顾虑,这项服务已经引起了巨大的争议.

关于Uber机制的思考

- - KantHouse 追从本心,笑斩荆棘
昨天写了一篇关于滴滴打车改版的文章(文章链接),引发了一些关于Uber和滴滴的对比讨论. 质疑明显歪了楼,大家主要讨论的是,Uber忽略目的地的问题和它的派单机制,而我在昨天文章中说的是Uber的首页设计的一些问题,具体来说,是它的出发地和开始用车的按钮不在一起的问题,以及出发地带搜索icon带来误解的问题.

Uber 在运营策略上到底厉害在哪?

- - 知乎每日精选
感谢各位知友提醒,博客昨两天访问量太大,一下子冲挂了. 已经升级服务器配置,现在可以正常访问了:). 看不下去了,一些事实+各种吹捧+美化缺点+你学会了吗. 明显的朋友圈文章居然有700多人点赞,特别是还有一个敬佩的前辈点赞,心碎……我觉得真的要学习的话,应该在好的地方辩证思考,在不好的地方承认并且想解决办法,而不是一通乱夸.

Uber火了!它改变了哪些营销游戏规则?

- - 互联网的那点事
一面是专车司机揽客被抓罚款弄得人尽皆知,一面又被媒体视为宠儿上着各大媒体、自媒体的头条要闻. 作为与Airbnb、facebook等同样令人瞩目的创新先锋,为了拉动车源和客源,Uber表现出了许多灵光乍现的创意,如“一键呼叫英雄”、“一键叫高管”、“一键叫人力三轮”、“打船”等,那么除了被媒体曝光的看的见的那些创意噱头,还有哪些Uber修炼的真功夫值得市场营销者学习借鉴的呢.

想要复制 Uber 的成功,你得先知道这些

- - TECH2IPO创见
本文来源: Medium , 译文创见首发 由 TECH2IPO / 创见 阿沫 编译 转载请注明出处. Uber 的成功无疑让创业圈中不少人看到了新商机,一时间「共享经济」的热潮席卷全球,催生了各种各样「XX 领域的 Uber」——只要核心业务带着点分享性质,创业者们都乐意将自己的产品冠上和 Uber 相关的称号,仿佛这层关联性,能让自家产品离成功更近一些.

Uber容错设计与多机房容灾方案

- - 互联网 - ITeye博客
此文是根据赵磊在【QCON高可用架构群】中的分享内容整理而成. 赵磊,Uber高级工程师,08年上海交通大学毕业,曾就职于微软,后加入Facebook主要负责Messenger的后端消息服务. 这个系统在当时支持Facebook全球5亿人同时在线. 目前在Uber负责消息系统的构建并推进核心服务在高可用性方向的发展.

Uber 四年时间增长近 40 倍,背后架构揭秘

- - 博客 - 伯乐在线
据报道,Uber 仅在过去4年的时间里,业务就激增了 38 倍. Uber 首席系统架构师 Matt Ranney 在一个非常有趣和详细的访谈《可扩展的 Uber 实时市场平台》中告诉我们 Uber 软件是如何工作的. 本次访谈中没有涉及你可能感兴趣的峰时定价(Surge pricing,译注:当Uber 平台上的车辆无法满足大量需求时,将提升费率来确保乘客的用车需求).

Uber的运营策略到底牛逼在哪?

- - 互联网分析沙龙 - 干货
Uber的一套玩法值得东莞酒店业好好学习,同样是希望自己的司机(小姐)多接客,看看人家是怎么动用政策杠杆拉动服务从业人员的积极性的. 最近Uber的人民优步非常火,以至于我前两天在朋友圈说突发奇想,想申请成为人民优步的司机,一天接一个客户,把当天和乘客发生的故事进行直播连载,受到了朋友们的极大怂恿.