QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Spotify 的高可靠性事件分发系统概述

  • 2017-04-09
  • 本文字数:836 字

    阅读完需:约 3 分钟

Igor Maravic 在最近的 QCon London 大会上出席演讲,高度概述了Spotify 的事件分发系统和一些运维方面的关键点。他提到Spotify 的事件分发系统在设计上拥有可控延迟,能够处理由Spotify 客户端在高峰时刻每秒生成的150 万事件,且永不丢失事件。

由各种不同的客户端产生的事件有超过250 种事件类型,并且大小从几个字节到几KB 不等。有些事件对零丢失率有严格要求,其中一个例子是歌曲特许权使用费的计算,但是为了简化系统设计,Spotify 的事件分发系统对所有事件都保证100% 分发。所有事件都被存储在按小时归集的区间内,每个区间包含了特定日期某个小时的所有事件。所有的事件都被标记上到达时间,以此来保证事件被存放到相应的区间内。

Spotify 的软件工程师 Maravic 强调,在设计上保证所有事件分发还不够,还必须通过监控来验证设计需求是否被真正的满足了。Spotify 的事件分发系统是由许多微服务构成的复杂的分布式系统。为了发现系统哪部分需要改进、在突发事故发生时简便地找到真实原因以及在数据分发时存在的问题,每一个组件都需要被监控。他们总结了三种类型的监控:

  • 系统监控,用来监控系统的整体运行情况,例如 CPU 和内存的使用情况等。
  • 数据监控,用来检查数据的时效性,保证数据在要求的延迟内分发。
  • 数据丢失率监控,用来监控事件分发的完整性。为了达到这一目的,他们构建了一个工具来监控所有的输入和所有的输出,以此发现数据丢失和其他数据传输问题。

Maravic 提到,尽管他们的系统需要 7*24 小时运行,但是他们并没有一个运维团队;相反,负责开发系统的开发人员也会负责系统的运维,他认为这有益于推动优秀的开发人员成长为卓越的开发人员。

Maravic 曾写过一系列关于系统架构详情的博客,其中包括一些性能报表。

查看英文原文: Overview of the Reliable Event Delivery System at Spotify


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-04-09 19:001718

评论

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

使用nodejs和express搭建http web服务

程序那些事

HTTP nodejs 异步IO 程序那些事 web服务

案例研究之聊聊 QLExpress 源码 (七)

小诚信驿站

聊聊架构 规则引擎 28天写作 QLExpress源码 聊聊源码

一文带你学会AQS和并发工具类的关系

比伯

Java 编程 架构 面试 计算机

精选算法面试-数组III

李孟聊AI

面试 算法 数组 28天写作

聚焦目标,团队工作不再一盘散沙(下)

一笑

管理 目标管理 复盘 28天写作

CMS系统——登录功能

程序员的时光

程序员 七日更 28天写作

创业失败启示录|校园微生活之留学生面对面

阿萌

28天写作 创业失败启示录 青城

也谈Python编码格式

ITCamel

Python 编码格式

为什么印度不会成为世界工厂?

JiangX

印度 28天写作 世界工厂

Spring Boot 集成Thymeleaf模板引擎

武哥聊编程

Java springboot SpringBoot 2 thymeleaf 28天写作

区块链2021狂想曲:迎接以技术为名的春天

脑极体

限时开放!阿里P8大师终于把这份微服务架构与实践第2版PDF分享出来了

Java 编程 程序员 微服务 架构师

详解HDFS3.x新特性-纠删码

五分钟学大数据

hadoop hdfs

保姆级 tomcat 快速入门

田维常

tomcat源码解读

JavaScript04 - JavaScript语法

Mr.Cactus

JavaScript

日语复习 Day02【~あっての】

IT蜗壳-Tango

程序员 七日更 日语语法

在GitHub中向开源项目提交PR的过程

worry

GitHub pull request

IO和NIO的对比篇

Java架构师迁哥

JavaScript02 - js的引入方式

Mr.Cactus

JavaScript

JavaScript05 - JavaScript数据类型

Mr.Cactus

JavaScript

9. 细节见真章,Formatter注册中心的设计很讨巧

YourBatman

Converter ConversionService Formatter

JavaScript03 - window对象的方法

Mr.Cactus

JavaScript

[5/28]产品运维保障体系的质量实践

L3C老司机

Java并发编程实战(4)- 死锁

技术修行者

Java 并发编程 多线程 死锁

自动驾驶分级,小白能理解的那种(28天写作 Day8/28)

mtfelix

自动驾驶 28天写作

坚持写作靠什么?

石君

输入 输出 28天写作

我们为什么打比方

石云升

28天写作 确认偏误 打比方

Python列表对象入门

赵开忠

28天写作

JavaScript01 - 基础

Mr.Cactus

JavaScript

读书笔记:《激荡三十年》下

lidaobing

28天写作 激荡三十年

【得物技术】代码覆盖率原理与得物app实践

得物技术

测试 原理 代码 得物技术 覆盖率

Spotify的高可靠性事件分发系统概述_DevOps & 平台工程_Jan Stenberg_InfoQ精选文章