Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

微服务监控:2018 年预测

  • 2017-12-03
  • 本文字数:2216 字

    阅读完需:约 7 分钟

过去数年间,我们探讨了微服务实现和部署中所面临的多个挑战。一个贯穿始终的问题,是如何监控由微服务构建的分布式应用中的情况。随着复杂性的不断增加,以及协同(choreographies)理念日益重要,微服务监控变得尤为紧迫。例如,在 2017 年初 InfoQ 举办的一次“微服务实践的虚拟研讨会”中,在被问及分别列出微服务上前五位应做的和不应做的事项时,研讨会参与嘉宾之一的 Martin Verburg 说:

在构建整个系统之前,先构建 3 个互相交互的服务原型,找出实现非功能需求的解决方案,比如安全问题、服务发现、健康监控、回压、失效备援,等等。

在被问及是否可推荐一些专用于微服务开发的语言或技术时,研讨会参与嘉宾之一的 Adam Bien 说:

Java 已经诞生 20 多年了,它是一门成熟的开发语言,具有强大的工具和监控能力。Java 在一开始就融入了微服务概念,比如 Jini/JXTA 框架,它们与 No-SQL 数据库(比如 JavaSpaces)混在一起。可以说,Java 超前了 15 年,那个时候市场还没有做好使用这些技术的准备。不过,从 1999 年以来的那些技术在今天仍然适用。我们并没有重新造轮子。

在过去的一年甚至更长的时间中,我们总是习惯于将 Linux 容器和微服务等同看待,这影响到了对监控的考量。最近, RisingStack 的 CTO Péter Márton 撰文对明年的发展情况给出了一些意见。文中首先阐明了一些基本理念:

目前市面上的 APM(应用性能监控,Application Performance Monitoring)解决方案严重地依赖于不同层级的观测(Instrumentation),例如 NewRelic 和 Dynatrace 等。这些产品必须安装软件厂商特定的代理才能采集度量。代理采集应用的各种度量,其中包括一些底层语言特定的度量(例如垃圾回收行为等),以及一些软件库特定的度量(例如 RPC、数据库延迟等)。

Péter 进而指出,应注意不要过于快速地推进 APM 路线,甚至是深陷其中。文中给出了如下预测:

使用厂商特定的代理会导致一个问题,即一旦开发人员同时使用多种监控解决方案和代理,就会丢失当前 APM 解决方案的部分特性。多代理通常意味着对同一构件代码(code picec)做出多种观测,进而导致不必要的性能开销、虚假的度量乃至软件缺陷。我认为,使用厂商特定代理的趋势在未来将会发生改变,APM 软件提供商将会共同努力提出一种开放的观测标准。未来将会是一个独立于厂商的时代,所有价值将来自于不同的后端和 UI 特性。

随后 Péter 笔锋一转,开始探讨分布式追踪(distributed tracing)的相关问题。在他看来,容器和微服务技术的涌现,驱使开发人员为实现监控和调试而提升可观测性(Observability)方法。InfoQ 曾探讨过分布式追踪技术,例如对Zipkin 的介绍,以及近期 Cindy Sridharan 对可观测性的介绍

日志、指标和请求跟踪是可观测性的基础。日志为数据(如指标)提供额外的上下文。不过,日志对性能的影响也很大。相比之下,指标的开销是不变的,而且有利于预警。总而言之,日志和指标可以为观察单独的系统提供方便,但是对于穿过多个系统的请求,很难提供其生命周期的信息。跟踪提供了跟踪在各个系统之间传递的请求的能力。

Péter 同意上述的观点。在探讨 OpenTracing 技术及其重要性之前,文中给出了一些例子,说明了 OpenTracing 意在提供:

(……)标准的、独立于厂商的分布式追踪观测接口。Opentracing 提供标准的 API,用于收集代码观测指标,并传递给各种追踪后端。它可以做到,只需收集一次代码观测指标,完全没有问题地用于各种追踪后端。

他给出了一些将 OpenTracing 用于原生技术的例子,特别是从 Node.js 开发的角度。他强调指出,也可以说是发出了一个请求:“我希望将来会有越来越多的标准化观测解决方案。也希望有一天,所有的 APM 软件厂商能共同努力,给出最好的独立于厂商的代理

文章的更多内容是关于 OpenTracing 的。文中介绍了 OpenTracing 是如何与 ElasticSearch 和 Prometheus 一起工作的,并给出一些例子和展示图。正如 Péter 所指出的,这些例子显示了 OpenTracing 在架构拓扑可视化上的强大功能,有助于了解问题发生问题时的相关情况。文中进一步引用了 RisingStack 的一个 Node.js 上的度量追踪项目。据 Péter 介绍,该项目可用于:

(……)基于这些度量信息,对整体拓扑结果做逆向工程,并可视化各服务间的依赖关系。我们可以从这些度量中获得微服务架构中应用和数据库间通量和延迟的情况。

在 2016 年早期,我们曾就“对大规模容器进行监控所面临的挑战”访谈了部分人士。对于如何理解和使用追踪所采集数据方面的问题,Dynatrace 的首席技术战略师 Alois Reitbauer 给出了以下观点:

(……)每个人都必须了解这些监控数据。这也是为什么我们花费了大量时间创建自解释的信息图表,让每个人都能够其中的意义。另一个关键需求是对异常情况的检测。由于系统的巨大规模,没有任何人能够做到手动查看所有数字。因此,监控系统必须了解什么是正常的行为,并当系统的行为出现异常时进行提示。最后一个方面在于具备上下文的语义信息。举例来说,监控系统需要“理解”指标所代表的意义,以及它与其他指标的关联。我们需要了解整个应用中的所有依赖,将这此信息用于问题的分析。

在文章最后,Péter 做了总结,并给出如下预测:

要使微服务的监控和可观测性更上一层楼,并步入下一代 APM 工具时代,需要给出 OpenTracing 那样的独立于厂商的开放观测标准。这一新标准应得到 APM 软件厂商、服务提供商和开源软件维护者的采用。

查看英文原文: Monitoring Microservices - A Prediction for 2018

2017-12-03 18:004153
用户头像

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

关注

评论

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

Scrum敏捷研发和项目管理

顿顿顿

Scrum 敏捷开发 敏捷开发流程 leangoo 敏捷开发管理工具

从零学习SDK(7)如何打包SDK

MobTech袤博科技

从源码角度深入解析Callable接口

华为云开发者联盟

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

Java中线程的6种状态详解(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED)

共饮一杯无

Java 线程 线程状态 三周年连更

前端沙箱利用这些特性实现代码的隔离与限制

没有用户名丶

Gradio:快速构建你的webApp

AIWeker

Python 三周年连更 Gradio

热榜!Alibaba最新发布「10亿级并发系统设计文档」Git狂揽9000星

Java你猿哥

数据库 架构 分布式 架构设计 并发系统

女朋友要我讲解@Controller注解的原理,真是难为我了

Java你猿哥

Java spring Spring 配置解析

GitHub和 Gitee联合编写最新版20w字Java全栈面试手册,简直无敌!

Java你猿哥

Java java面试 SSM框架 Java面经

BT!GitHub开源阿里Java性能调优百宝书仅3小时,标星竟超过30k

Java你猿哥

Java JVM 性能调优 SSM框架 Java工程师

字节面试官:你没有高并发、性能调优经验,为什么录取你?

Java 高并发 性能调优

火山引擎DataTester:让企业“无代码”也能用起来的A/B实验平台

字节跳动数据平台

AB testing实战 无代码 A/B 测试 企业号 4 月 PK 榜 企业增长

火山引擎云原生数据仓库ByteHouse技术白皮书V1.0 (Ⅲ)

字节跳动数据平台

数据仓库 云原生 白皮书 数据仓库服务 企业号 4 月 PK 榜

挑战 30 天学完 Python:Day9 条件语句

MegaQi

Python 挑战30天学完Python 三周年连更

阅读完synchronized和ReentrantLock的源码后,我竟发现其完全相似

Java 源码 synchronized ReentrantLock

带你一同认识和使用JPA框架进行开发你的应用服务

Java你猿哥

Java SSM框架 jpa Java工程师

火山引擎 DataLeap下Notebook系列文章一:技术选型之路

字节跳动数据平台

notebook 数据研发 企业号 4 月 PK 榜

Kurator v0.3.0版本发布!助力企业实现多云异构管理

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽

Java你猿哥

架构 分布式 分布式架构

【堡垒机小知识】堡垒机能记录操作时间、操作数据等等吗?

行云管家

网络安全 堡垒机

行云管家堡垒机有免费的吗?谁能告诉一下!

行云管家

高新企业 堡垒机 行云管家

阿里大神整理的Java核心知识点和面试官常问到的知识点,压压惊

会踢球的程序源

Java 面试 求职 java面试 Java构架

ChatGPT无需API开发连接第三方系统,让舆情自动监控

集简云开放平台

数据集成 数据集成平台 Chat

全量通过,华为云GaussDB首批完成信通院全密态数据库评测

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

如何用scrum敏捷工具做迭代规划及迭代执行。

顿顿顿

Scrum Sprint 敏捷开发管理工具 敏捷工具 迭代规划

安装Zookeeper和Kafka集群

Java你猿哥

Java kafka zookeeper SSM框架 Java工程师

华为云新一代iPaaS全域融合集成平台全新升级

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

阅读完synchronized和ReentrantLock的源码后,竟发现其完全相似

Java你猿哥

并发编程 并发 synchronized SSM框架 ReentrantLock

Linux:管道命令与文本处理三剑客(grep、sed、awk)

会踢球的程序源

Java Linux

硬核!万字神文精解高并发高可用系统实战,分布式系统一致性文档

Java 高可用 高并发 分布式一致性

集简云开放平台是什么?

集简云开放平台

微服务监控:2018年预测_DevOps & 平台工程_Mark Little_InfoQ精选文章