写点什么

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:006672

评论

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

软件测试 | 从手工转到测试开发,是种什么样的体验?

测吧(北京)科技有限公司

测试

AI训练性能提升30%,阿里云发布GPU计算裸金属实例ebmgn7ex

云布道师

弹性计算

Cocos携手乐元素 《开心消消乐》成功移植OpenHarmony

最新动态

文心一言更大的故事是在云计算

百度开发者中心

百度智能云 文心一言

pytest学习和使用5-Pytest和Unittest中的断言如何使用?

Python 自动化测试 pytest 测试报告 Allure

百度数据可视化Sugar BI:问卷数据收集、分析与展现

百度开发者中心

大数据 百度智能云 sugar

微软云与 OpenAI 竞争 ChatGPT 企业级客户:安全性、老客户、多云、模型迭代效率

B Impact

魔法诗~~~一套基于Vue开发的实用、高端、炫酷的响应式前端网页!!!

京茶吉鹿

Vue 前端 网页设计

java实现布隆过滤器

小小怪下士

Java 程序员 布隆过滤器

又见版本升级!一句话概括 Milvus 2.2.4:资源隔离、多云、高效

Zilliz

非结构化数据 Milvus Zilliz

数字云南的那山,那水,那些人

脑极体

5G

c4d超强三维动画设计:CINEMA 4D Studio R2023.2.0 中文激活版

真大的脸盆

Mac Mac 软件 C4D

出手即不凡,一年共投408个公司,人均退出近5个 | 创业邦2023女性投资人榜单发布

创业邦

周鸿祎谈“360GPT”两翼齐飞战略;SaaS生态百家接入、120万家企业用户、2千万终端用户

B Impact

ChatGPT 开源了第一款插件,都来学习一下源码吧!

Python猫

Nautilus Chain 首个生态基础设施 Poseiswap,公布空投规则

股市老人

避免使用CSS @import 影响页面加载速度

南城FE

CSS css3 前端

履约核心引擎低代码化原理与实践

京东科技开发者

低代码 规则引擎 企业号 3 月 PK 榜 履约中心

百度数据可视化Sugar BI:数据监控与预警

百度开发者中心

大数据 百度智能云 sugar

让创新更多元,让世界更美好,2023女性影响力峰会圆满举办

创业邦

不降功能只降资源,六个应用场景带你了解OCP Express

OceanBase 数据库

数据库 oceanbase

IntelliJ IDEA 2023.1 版本可以安装了

HoneyMoose

软件工程高效学 | 实践工具:Microsoft Office Visio

TiAmo

开发工具 Visio绘图注释工具

即刻报名|Kyligence 指标平台产品发布会

Kyligence

数据分析 指标平台

应对网络不可靠挑战,用 OpenYurt 实现边缘业务连续性

阿里巴巴云原生

阿里云 开源 云原生 openyurt

【4月8日】Elastic 中国开发者大会 2023 议程预告

极限实验室

大数据 elasticsearch elastic 开源 开发者大会

软件测试 | 低学历无未来?从小公司到拿下年薪45W+,这个小哥哥好励志~

测吧(北京)科技有限公司

测试

kafka Log存储解析以及索引机制

石臻臻的杂货铺

kafka

面向 Web、微服务应用的 Serverless 托管平台云应用引擎 CAE

宇宙之一粟

云服务器 CAE 云应用

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