写点什么

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

评论

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

国产操作系统如何构建自己的生态

Onegun

国产化 国产操作系统

LLMs 诸神之战:LangChain ,以【奥德赛】之名

Zilliz

Milvus AIGC LLM langchain

“伙伴+华为”体系,数字时代的新航标

脑极体

伙伴 体系

开源赋能 普惠未来|浪潮集团寄语2023开放原子全球开源峰会

开放原子开源基金会

“全球金牌课程”6月17-18日 · CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum捷行

Scrum 敏捷

软件测试/测试开发丨学习笔记之列表、元组、集合

测试人

Python 软件测试 自动化测试 列表 测试开发

生产环境质量保障的重要性

老张

质量保障 稳定性保障

Neuron 提供免费无限时试用:完整体验数十种工业协议连接

EMQ映云科技

工业物联网 网关软件 工业协议

Django笔记三十之log日志记录详解

Hunter熊

Python django 日志 log

亚马逊云科技 一周回顾 – 2022 年 7 月 18 日

亚马逊云科技 (Amazon Web Services)

Amazon

小程序6大开发框架对比分析

Onegun

小程序 小程序框架 小程序容器

软件测试 | 接口测试

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

测试

浅谈中小企业为何放弃自媒体营销:定位不准、期望值过高、缺乏专业团队

石头IT视角

4大特性看Huawei Cloud EulerOS为开发者带来平滑迁移体验

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

【论文分享|SIGMOD'22】WeTune 自动发现和验证重写规则

Databend

Golden Gate (GGX) 启动公测,下一代创新DeFi和跨链 dApps 征程开始

股市老人

融云 WICC 2023 定档!「出海嘉年华」穂城来袭!

融云 RongCloud

通信 社交 融云 出海 wicc

软件测试 | 开发接口

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

测试

10个提高工作效率的Cinema 4D小技巧

Finovy Cloud

C4D

AI赋能低代码,助力企业数智化转型

这我可不懂

人工智能 低代码 JNPF

图数据库 NebulaGraph 的内存管理实践之 Memory Tracker

NebulaGraph

数据库 内存管理 图数据库

广西高等教育学会高校教育技术委员会莅临瑞云科技考察交流

3DCAT实时渲染

虚拟仿真 元宇宙 实时渲染云

C语言编程—变量的构成

攻城狮Wayne

2023 年度中国 DevOps 现状调查|有奖问卷

CODING DevOps

DevOps 云端IDE cloudstudio

MobTech ShareSDK|助力预热618

MobTech袤博科技

“敏捷教练必修课程”7月22-23日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum捷行

Scrum 敏捷 敏捷精髓 敏捷实践 A-CSM

ControlNet: 控制扩散模型的魔法

Zilliz

AIGC Towhee Stable Diffustion controlnet

软件测试 | spyne开发接口

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

测试

开源赋能 普惠未来|360集团寄语2023开放原子全球开源峰会

开放原子开源基金会

2023-05-17:一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。 因为答案可能很大,所以返回答案 对 10^9 + 7 取模

福大大架构师每日一题

Go 算法 rust 福大大

领先芯片供应商u-blox通过Perforce Helix Core加强协作,实现基于组件的开发

龙智—DevSecOps解决方案

组件化 芯片设计

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