【ArchSummit架构师峰会】精华内容上线75%,AI大模型中台从理念到实践的探索!>>> 了解详情
写点什么

Ben Sigelman 访谈:管理微服务“深层系统”

  • 2019-11-30
  • 本文字数:2534 字

    阅读完需:约 8 分钟

Ben Sigelman访谈:管理微服务“深层系统”

InfoQ 近期采访了 Ben Sigelman,探讨在“深层系统”(deep system)中管理微服务所面对的挑战性问题。在“深层系统”中,服务的拥有者需要与大量不属于该服务拥有者的其他服务进行交互。Sigelman 是 LightStep 的 CEO,也是 OpenTracing 和OpenTelemetry项目的创始人。


Sigelman 最近在Systems@Scale大会上做主题演讲时指出,问题主要在于如何区分控制和责任,以及团队如何准确地判定每个服务内部及相互之间的作用情况。开发团队通常控制着多个服务,这些服务需要调用其他的服务,或是被其他服务调用。尽管相互关联的服务通常并不属于同一团队,但是它们为连接的服务继承责任。随着服务间的相互调用,调用关系链趋向于更加深入,团队难以快速诊断导致故障或运行性能降低等问题的原因。


不同于标准的性能监控,微服务间通信模式的变化会潜在地影响微服务的性能。例如,监控显示某个服务使用设定参数运行时,性能发生了降低,但是问题的根源却可能是由不同的服务调用方式使得服务需求显著增加而导致的。


解决微服务问题的关键,是需要在服务内部启用可观察性(observability)和控制,快速定位存在性能问题之处,是位于微服务内部,还是位于微服务之间,消除一切的不确定性。Sigelman 指出,“数据不明晰,责任就会互相推诿。对于出现的问题,可使用一种称为 MTTI(即平均解决问题时间,Mean-Time-To-Innocence)的度量指标。数据明晰,MTTI 值就会很低。如果数据缺失,或是不明晰,那么 MTTI 值就会变大”。MTTI 值变大,就需要相关人员做长时间的协商,分析导致问题和故障的根本原因,进而导致运维代价增大


“可观察性”指无需更改服务就能快速发现服务内部及相互之间存在问题的能力,“控制”指对所发现问题的处理能力。可观察性的目标是获取控制。OpenTelemetry 项目为实现可观察性和控制提供了标准化工具。该项目支持多种工具,以正确的方式抽取正确的度量和 KPI,由此每个团队可采取相应的行动。


下面给出 InfoQ 与Ben Sigelman的访谈记录:


InfoQ:OpenTracing 和 OpenTelementry 项目两者间是什么关系?


Ben Sigelman: OpenTelemetry 提供了一个标准,定义了遥测数据和结构及其要采集的内容。可以说 OpenTelemetry 为此打开了一扇大门。OpenTracing 的功能类似,但针对更细分的领域,专门设计为一种分布式追踪工具。对于新上手的用户,我推荐关注 OpenTelemetry。其功能更为丰富,并推动着 OpenTracing 向前发展。


InfoQ:您在主题演讲中提出了“深层系统”(deep system)这一概念。为什么系统会演化为“深层”的?深层系统解决了哪些问题,又会引入哪些新问题?


Sigelman:当人们谈及微服务时,通常考虑的是服务本身,而非整个大系统的全貌。系统中如果存在大量的微服务,那么就会演变为一种深层系统。系统不仅是多个服务,而且存在多个层面。对于 500 个服务,问题不仅仅是一个路由或 API 网关需要与其它 499 个服务通信,而是 500 个服务相互之间的通信。服务的性能,取决于依赖关系中性能最低的服务。每增加一个层面,出错的方式也会相应地增加。

业界转向微服务,究其根本是为了促进各开发团队相互间的自治性和独立性。但事与愿违,系统通常会在深层领域产生摩擦和低效,导致整体性能降低。这是因为微服务相互间的问题难以追踪,相互间的复杂依赖方式难以为人所理解,并且难以确定恢复 SLO(服务等级目标,Service Level Objective)所需调整的服务。


InfoQ:控制和责任应如何纳入到微服务中?


Sigelman:在任一系统中,都需要掌控层层嵌套的依赖调用关系,但开发人员只能掌控自身可构建和部署的服务。在深层的系统中,随着系统深度的增加,依赖关系树的规模会呈几何级别增长,同时度量标准和日志记录数据多到无法使用常规工具筛选。解决此问题的唯一方法,就是利用作为可观察性系统核心功能的数据追踪特性。追踪数据是唯一能够提供系统各层相关上下文的数据。


InfoQ:对于 Java,OpenJDK 团队近期开源了 Flight Recorder/Mission Control,它们实现了低开销的 JVM 性能监控。与之相比,OpenTelemetry 具有哪些过人之处?


Sigelman:Flight Recorder/Mission Control 非常适合查看单个给定的 JVM。但对于微服务,问题则有所不同。大多数企业内部发生的技术灾难(technical fires),都是由代码或配置推送所导致的。例如,上游团队会将服务调用方式从 1 次提高到 100 次(尽管他们不应该这样做)。这时,性能剖析工具会给出显示,代码正处于频繁运行状态。但此类性能剖析工具无法给出导致代码频繁运行的原因,以及这段代码与其它服务的关联关系。但如果用户的确只需分析单个 JVM,那么此类工具完全胜任。


InfoQ:OpenTelemetry 在深层服务中获取可观察性方面,团队需要注意哪些关键方面?


Sigelman:服务的成功与否,判定权应在服务的消费者。这意味着,需要建立衡量成功的SLI/SLO,例如响应时间、错误预算等度量。服务开发者应该了解服务消费者的关注点,并据此制定准确的目标。如果从 SLI/SLO 着手开展调查,那么一个可观察性系统就能知悉开发人员需要去解决的问题。这将大大缩减查找潜在问题根源的规模和范围。


InfoQ:如果由团队去定义消费者的需求,那么存在哪些听上去很诱人的但实际上会带来麻烦的概念?


Sigelman:首先,追踪 CPU、RAM 等系统基础指标,通常无法指示问题根源所在。其次,微服务团队常认为松耦合意味着完全独立和自治,可做出完全不同的决策。例如,Netflix提供了运行良好的工具和框架,为此“铺平了道路”。一旦人们选择这些现成工具时,就将获得受支持的编程语言、软件库、安全检查等一系列帮助。如果采取完全自主开发这条路,另辟蹊径会增加控制难度,因为其他团队难以立刻提供帮助。


InfoQ:对于需要分析复杂微服务的人而言,您可否推荐一些特定的工具?


Sigelman:OpenTelemetry 是推进现代可观测性的先行者,它支持集成到已有系统中,收集高质量的遥测数据。团队可借助Auto Instrumentation Agent,无需更改任何代码实现上述功能。该 Agent 支持数据访问,但不提供任何分析工具。对于需要遥测数据分析和可视化的用户,我个人推荐使用免费的LightStep tier

和 Honeycomb 的Liz Fong-Jones都会定期在 Twitter 上深度探讨微服务管理相关的话题。


原文链接:


Managing Microservice “Deep Systems”: Q&A with Ben Sigelman


2019-11-30 08:005484

评论

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

10分钟带你学习华为云数据库RDS

wljslmz

数据库 华为云 9月月更

关于 eBPF 安全可观测性,你需要知道的那些事儿

OpenAnolis小助手

Linux 开源 内核 ebpf 龙蜥技术

TDengine支持多种写入协议,四种写入方式提效大全

TDengine

tdengine 开源 时序数据库 企业号九月金秋榜

面试突击:什么是跨域问题?如何解决?

Java快了!

java;

这份数据安全自查checklist请拿好,帮你补齐安全短板的妙招全在里面!

京东科技开发者

数据库 安全 数据安全 云安全 京东云

Python图像处理丨基于K-Means聚类的图像区域分割

华为云开发者联盟

Python 人工智能 图像处理 企业号九月金秋榜

益思芯科技加入龙蜥社区,推动网络和存储DPU芯片创新落地

OpenAnolis小助手

开源 芯片 龙蜥社区 CLA 益思芯科技

Java 多线程:基础

Java快了!

java;

Authing 郑凌:我眼中的 Authing

Authing

如何让开发者直接在应用后台控制用户的运动状态?

HMS Core

客户案例|宜泊科技怎样实现智慧停车可观测

观测云

【活动预告】数据集成海外专场Meetup:走进Shopee,聊透SeaTunnel优化实践

Apache SeaTunnel

技术分享 数据同步 数据集成 社区活动

下一代 SCA:流水线成分分析

SEAL安全

DevSecOps SCA 软件成分分析 软件组成分析 软件供应链安全

阿里开源的升级思考:开源委员会的三个关键行动点

阿里技术

开源

4天带你上手HarmonyOS ArkUI开发

HarmonyOS开发者

HarmonyOS

数据科学家、数据工程师和数据分析师三个角色的区别是什么

雨果

数据分析师 数据科学 数据工程师

构建运维监控体系设计思路概述

穿过生命散发芬芳

监控体系 9月月更

需求变更,敏捷项目应如何做?

敏捷开发

Scrum 敏捷 需求管理 需求 Scrum团队

明源云与华为联合发起828 B2B企业节,共同成就好生意!

IT资讯搬运工

华为

如何选择大数据培训课程

小谷哥

调用 sap.ui.base.ManagedObject 的构造函数时,如何传递绑定路径进去

Jerry Wang

JavaScript SAP SAP UI5 ui5 9月月更

为什么越来越多博士逃离科研?

博文视点Broadview

中秋节,华为云AI送上超级大月亮制作教程,体验赢开发者键鼠套装

华为云开发者联盟

人工智能 华为云 中秋节 企业号九月金秋榜

如何构建企业级的容器云PaaS平台

阿泽🧸

PaaS 9月月更

Sprint Review能不能做成Demo演示?

LigaAI

Scrum 敏捷开发 迭代增量开发 高效办公 企业号九月金秋榜

最全元宇宙概念分析!元宇宙为何发展于区块链?

TinTinLand

区块链 人工智能 元宇宙

Hi3861 通过UART串口协议与其它开发板进行通信

OpenHarmony开发者

OpenHarmony

降本:云原生可观测性新定义

观测云

月满中秋夜|中秋和 Jina AI 一起过

Jina AI

开源 人工智能’ 神经搜索

小红书自研小程序:电商体验与效果优化的运行时体系设计

小红书技术REDtech

小程序 构建 小程序运行时 JS Bridge

库调多了,都忘了最基础的概念 <锁与线程篇1>

知识浅谈

线程 9月月更

Ben Sigelman访谈:管理微服务“深层系统”_架构_Erik Costlow_InfoQ精选文章