写点什么

Bloomberg 监控系统的标准化和扩展

  • 2018-07-22
  • 本文字数:1336 字

    阅读完需:约 4 分钟

Bloomberg 开发团队采纳 SRE 实践后,一个显著成果体现为监控系统的改进。该系统的后台由团队部署的Metrictank 时序数据库提供支持。

Bloomberg 的基础设施横跨两个自运营数据中心中的近 200 个计算节点,服务于约 32.5 万名客户,以及一个近 5000 人的开发团队。长期以来,开发人员负责对自己构建和部署的产品进行生产监控。这种监控往往是亡羊补牢之举,进而导致缺失标准化。监控系统中存在有多种数据采集器,它们会对同一度量做重复的测量,对系统的整体也缺乏一个完整视图。据 Bloomberg 遥测负责人 Stig Sorensen 介绍,运维负责“从企业商业站点的细枝末节以及各种市场数据来源,到企业的要产品,即 Bloomberg 专业终端(Professional Terminal)。该终端是世界范围内成千上万关键影响人士所仰仗的工具”。各种不同的技术栈构成了系统的复杂性。

Sorensen 自 2016 年开始在 Bloomberg 负责 SRE (站点可靠性工程,Site Reliability Engineering)的实施。他的团队推行 SRE 原则和实践,目标是为整个企业构建监控和报警服务。团队首先推出了一种支持标签的自研StatsD 代理。该代理关注的是如何尽快从中心系统获取度量。一旦完成了度量采集,系统基于Kafka 集群完成大量的验证、聚合、规则和持久化工作。这一系统很快就面对着可扩展性的问题。Bloomberg 软件开发人员 Sean Hanson 在一次演讲中指出:

系统运行两年后,每秒需处理 250 万个数据点、1 亿个时间序列。其中一些高基数度量的值可达 50 万。我们的初始解决方案的确具有很好的可扩展性,能够扩展到每秒处理 2000 万个数据点。但在系统达到这样处理能力时,事实上我们无法从中做任何查询,并且系统在处理高基数度量时表现依然很差。高基数度量十分常见的情况。

团队构建的新系统同样面对着一系列新的需求,包括推导度量计算的函数、可配置的保留期、元数据的查询以及可扩展性。 Metrictank 是 Cassandra 推出的一种多租户时序数据库。它支持 Graphite 监控系统,适合团队的大部分需求。根据 Facebook 发表的 Gorilla 论文,Metrictank 的性能可比 Facebook 前期采用的高基数数据系统高出数个数量级。这为跨组织的度量分析铺平了道路。Bloomberg 团队对其中一些资源敏感区域做了优化,并贡献到Metritank 代码中。其它一些组织也已使用 Cassandra 作为后端,实现对 Graphite 监控系统的扩展。

Bloomberg 团队不仅更新了监控系统,而且为实现工作方式标准化而采纳了 SRE 。Sorensen 详细解释道:

当前,我们事实上不再具有一个集中的 SRE 团队,实现为 SRE 团队向应用团队看齐的方式。 SRE 团队来自于应用团队和核心基础设施团队。无论是运维人员还是系统管理员,都采用了这种方式做编程和人员变动。我们也会让应用工程师对系统和可用性提出更积极的看法,构建不同类型的软件,因为我们将 SRE 视为软件工程师正开展的事情。

随着对标准化监控系统的采纳,随之而来的一个需求是对如何追踪进度。团队正致力于其中的一些工作。Sorensen指出,由于“测定可用性不是一件非黑即白的事情。可用性并非用户在某个网站上经历了多少次失败,这是因为对于市场玩家而言,而是只要实时市场数据稍有延迟,即便是一毫秒或是几百毫秒,结果也可能会大相径庭。”

查看英文原文: Bloomberg’s Standardization and Scaling of Its Monitoring Systems

2018-07-22 03:511450
用户头像

发布了 391 篇内容, 共 138.2 次阅读, 收获喜欢 256 次。

关注

评论

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

Vue3入门指北(十一)watch 和 watchEffect

Augus

Vue3 10月月更

开发者有话说|如何成为优秀的前端技术经理

No Silver Bullet

个人成长 技术经理

架构师的十八般武艺:可延展性

agnostic

可延展性

Windows开发工具安装

青柚1943

dapr

Web3流支付迎来新质变,Zebec开放Zepoch节点申请

小哈区块

spring入门介绍

楠羽

笔记 spring 5 10月月更

想学Go Web?先来看看如何搭建一个beego项目吧

Regan Yue

Go Go web Beego 10月月更

leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树(中等)

okokabcd

LeetCode 算法与数据结构

Python进阶(四)浅谈Python闭包

No Silver Bullet

Python 闭包 10月月更

深入浅出MatrixOne Parser

MatrixOrigin

矩阵起源 MatirxOrigin MatirxOne

golang反向代理实现中的坑位

有态度的马甲

文盘Rust -- struct 中的生命周期

京东科技开发者

redis rust 生命周期 Trait Trait Objects

2022-10-07:给定员工的 schedule 列表,表示每个员工的工作时间。 每个员工都有一个非重叠的时间段 Intervals 列表,这些时间段已经排好序。 返回表示 所有 员工的 共同,正

福大大架构师每日一题

算法 rust 福大大

从SpringBoot启动,阅读源码设计

Java 架构

攻击面分析及应对实践

vivo互联网技术

安全 风险管理 互联网安全

Sentinel Go-毫秒级统计数据结构揭秘

柠檬汁Code(binbin0325)

数据结构 源码分析 限流 Sentine 10月月更

Docker远程连接设置

程序员欣宸

Docker 容器 10月月更

Python进阶(三)函数式编程之reduce()

No Silver Bullet

Python reduce 10月月更

爬虫练习题(三)

张立梵

Python. 10月月更 爬虫案例

七天杀上GitHub榜首!Java并发编程深度解析实战,JUC底层原理揭秘

Geek_0c76c3

Java 数据库 开源 程序员 架构

Qt | 实现网页历史记录和查找功能 QWebEngineView

YOLO.

qt 10月月更 C++

【LeetCode】字符串解码Java题解

Albert

LeetCode 10月月更

低代码将干掉65%软件开发工作,留给码农的时间不多了!

雨果

低代码

【一Go到底】第八天---用户输入

指剑

Go golang 10月月更

Qt | 按钮控件的使用 QCheckBox

YOLO.

qt 10月月更 C++

Zepoch节点开放申请,Web3流支付巨头Zebec利好不断

股市老人

干货分享 | MatrixOne系统架构

MatrixOrigin

MatrixOrigin MatrixOne 金海

直呼内行!阿里大佬离职带出内网专属“Redis设计应用实践”学习笔记

Geek_0c76c3

Java 数据库 开源 程序员 架构

Python应用之验证码验证

芯动大师

验证码 10月月更 Python应用

Web3流支付迎来新质变,Zebec开放Zepoch节点申请

BlockChain先知

Bloomberg监控系统的标准化和扩展_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章