小研究 - 微服务系统服务依赖发现技术综述(二)

news2024/11/24 2:21:50

微服务架构得到了广泛的部署与应用, 提升了软件系统开发的效率, 降低了系统更新与维护的成本, 提高了系统的可扩展性. 但微服务变更频繁、异构融合等特点使得微服务故障频发、其故障传播快且影响大, 同时微服务间复杂的调用依赖关系或逻辑依赖关系又使得其故障难以被及时、准确地定位与诊断, 对微服务架构系统的智能运维提出了挑战. 服务依赖发现技术从系统运行时数据中识别并推断服务之间的调用依赖关系或逻辑依赖关系, 构建服务依赖关系图, 有助于在系统运行时及时、精准地发现与定位故障并诊断根因, 也有利于如资源调度、变更管理等智能运维需求. 首先就微服务系统中服务依赖发现问题进行分析, 其次, 从基于监控数据、系统日志数据、追踪数据等 3 类运行时数据的角度总结分析了服务依赖发现技术的技术现状; 然后, 以基于服务依赖关系图的故障根因定位、资源调度与变更管理等为例, 讨论了服务依赖发现技术应用于智能运维的相关研究. 最后, 对服务依赖发现技术如何准确地发现调用依赖关系和逻辑依赖关系, 如何利用服务依赖关系图进行变更治理进行了探讨并对未来的研究方向进行了展望.

目录

3 服务依赖图的关键应用

3.1 基于服务依赖图的故障根因定位

3.2 基于服务依赖图的资源调度

3.3 基于服务依赖图的变更治理

4 工程实践应用

5 服务依赖发现技术展望

6 结束语


3 服务依赖图的关键应用

服务依赖关系图对于提高微服务架构软件系统的运维效率具有重要意义, 能够帮助开发与运维人员高效、精准地发现与定位系统中的故障并进行根因分析, 制定高效的资源调度策略以保证微服务架构系统的端到端 SLA (service level agreement), 以及用于包括故障预防、部署规划和异常检测等在内的变更治理.本节重点介绍基于服务依赖关系图的故障根因定位、资源调度和变更治理等研究工作.

3.1 基于服务依赖图的故障根因定位

随着微服务的发展, 服务间存在复杂的依赖关系, 一个请求往往会引起不同节点上若干服务的大量复杂的互操作. 同时, 这种复杂的依赖关系带来了故障的蔓延性和传播性, 单个服务的故障会在系统中迅速传播. 当某服务出现异常, 可能会级联地导致依赖该服务的其他服务的行为异常, 使得大量的服务失效. 这种跨节点、跨服务的故障传播会大大增加故障根因定位的难度, 降低故障根因定位的效率. 通过构建服务之间的依赖关系图, 在某个服务发生故障时, 可以快速精准地定位故障根因的位置并判断受影响的下游服务. 根据故障根因定位的方法不同, 基于服务依赖关系图的故障根因定位可以分为基于可视化、基于图搜索和基于随机游走方法.

服务依赖关系图已在故障根因定位领域得到了大量应用, 服务依赖关系图对服务之间的依赖关系进行刻画, 这种依赖关系反映了服务之间的故障传播, 从而有助于运维人员进行故障根因定位. 基于服务依赖关系图的故障根因定位首先通过指标、系统日志或追踪数据构造服务依赖关系图, 然后当异常发生时, 从服务依赖关系图中的异常节点出发, 通过图搜索、随机游走等算法得到候选故障根因, 然后通过异常分数、与异常节点的相关性或被访问次数等方式对候选故障根因进行排序. 相信未来会有更多研究工作提出结合服务依赖关系图的故障根因定位方法. 

3.2 基于服务依赖图的资源调度

基于服务依赖关系图的资源调度可以保证整个服务的 SLA 要求. 文献 [66] 提出一种基于机器学习的微服务资源管理框架. 该框架首先构造用于预测服务端到端延迟和 QoS 违反概率的机器学习模型, 然后使用该模型对资源分配进行预测, 在满足 QoS 的同时最大化资源效率. 文献指出资源调度需要考虑微服务之间的依赖性, 否则将导致低效的资源分配, 并且不一定有助于应对负载变化和保证服务性能. 因此, 该工作基于延迟从后端服务传播到前端服务的假设, 利用服务依赖关系图优先对后端微服务进行资源调度, 从而避免前端微服务不必要的资源调度. 从服务依赖关系图上识别关键路径, 并定位可能违反 SLA 的关键微服务实例, 基于关键微服务实例上的资源利用率、性能指标和工作负载特点, 通过强化学习对资源做出扩容或缩容的决策. 同样地, 基于服务依赖图, 提出一种基于梯度下降的资源调度算法, 则使用分层排队网络对微服务的性能建模, 通过遗传算法求解最优资源调度策略.

在资源调度领域, 服务依赖图精准刻画了服务/虚拟机之间的依赖关系, 有助于准确地分析服务性能以保证服务端到端 SLA.

3.3 基于服务依赖图的变更治理

在变更故障预防方面, 文献基于服务依赖对变更风险进行评估. 首先, 从网络依赖、组件调用等数据构造故障图, 故障图描述了从底层路由器、交换机等网络设备到上层服务的故障传播. 然后, 基于变更通常只会影响小部分服务的假设, 提出一种增量评估算法, 该算法复用已有的评估结果, 将变更风险评估问题转换为布尔可满足性 (SAT) 问题, 使用 SAT 求解器对差异故障图进行分析, 从而避免重新分析整个故障图. 最后, 如果待变更的故障图不满足可靠性目标, 则会根据提供的规则生成一组满足该目标的改进方案.

在变更治理领域, 服务依赖图主要应用于变更影响面的分析, 相信未来会有更多研究工作将服务依赖图应用于变更治理的其他方向. 

4 工程实践应用

如前文所述, 微服务系统依赖发现技术可分为基于监控数据的依赖发现, 基于系统日志的依赖发现和基于追踪数据的依赖发现. 目前产业界微服务依赖发现技术往往与数据采集和分析工具紧耦合, 通常作为其中的一个关键功能模块. 日志数据的采集和分析工具包括 Filebeat、Logstash、Flume 等开源工具. 其中, 以 ELK(Elasticsearch、Logstash 和 Kibana) 为代表的开源软件生态是业界主流的日志采集存储与分析的技术架构.此类软件在各个目标节点安装 agent 组件, 读取不同格式的日志数据, 并将数据发送到指定的位置, 收集微服务系统产生的系统日志数据, 然后基于统一标识、共现概率、日志频率等方法预测服务请求执行逻辑, 进而发现微服务实例和微服务依赖关系. Splunk 是业界日志数据采集和分析的代表性工具, 支持自定义丰富的日志分析方法,能够支持构造微服务发现应用.

5 服务依赖发现技术展望

表 1 从相关工作所使用的运行时数据的类型、期望发现的服务依赖关系、最终发现的是否为服务运行时数据之间的相关性、是否需要修改目标系统的源代码以及是否需要向软件系统中注入故障或者干扰 5 个角度对比分析了现有的服务依赖发现方法.

在拓展服务依赖发现技术的应用领域方面, 将服务依赖发现技术应用于系统变更风险感知和故障根因定位是一个关键发展趋势. 首先, 服务依赖发现技术能够监测整个变更周期中受变更影响的服务的运行情况, 预测变更可能引起的故障, 实现实时变更风险感知, 帮助运维人员动态调整变更灰度策略, 避免和降低变更造成的故障对业务的影响. 其次, 由于微服务间具有复杂的依赖关系, 发生故障的服务与导致故障的部署了变更的根因服务可能完全不同, 导致故障根因定位十分困难. 针对该问题, 在故障发生时, 基于服务依赖图采用图搜索、因果推断等技术, 可以找到与故障高度相关的变更, 辅助运维人员进行故障根因定位, 提升运维效率. 

6 结束语

服务依赖发现技术是准确地刻画微服务架构软件系统中各个微服务之间的复杂的依赖关系的重要手段, 对微服务架构软件系统中的故障定位、性能瓶颈分析、资源调度等一系列运维任务有重要意义, 其研究受到了工业界和学术界的广泛关注.本文从服务依赖发现的基本概念出发, 从 3 类不同的运行时数据的角度总结了已有的服务依赖发研究工作. 通过整理总结已有的服务依赖发现技术及其应用的相关工作, 进一步分析了服务依赖发现技术当前所面临的问题并对未来的研究方向进行了展望, 为相关研究人员开展下一步研究工作做出一些有价值的探索.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/828335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SVN代码迁移到Git方法

1.在SVN上新增一个项目 一、点击新建项目 二、创建空白项目 三、填入项目信息 四、myProject项目模板创建成功 2.将代码提交到Git 一、新建一个文件夹myProject,将从SVN下载过来的代码复制一份拷贝到该文件夹下,注意:不要把.SVN文件拷…

兴达易控Profinet转Modbus RTU主站模式的配置流程

兴达易控Profinet转Modbus RTU主站网关,能够实现不同协议之间的设备数据传输。这种设备具有高度的可靠性和稳定性,能够满足工业领域对通信设备的严格要求。同时,兴达易控Profinet转Modbus RTU主站还具备简单易用的特点,使用现场能…

安防视频监控平台EasyCVR修改参数提示database or disk is full的原因排查

EasyDarwin开源流媒体视频EasyCVR安防监控平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等能力。视频监控综合管理平台EasyCVR具备视频汇聚融合能力,平台基于云边端一体化架构,具有强大…

查看内存类型和频率 - Win系统

查看内存类型和频率 - Win系统 问题方法1(推荐):使用命令行方法2:使用CPU-Z方法3:使用AIDA64 问题 我们在为电脑扩充内存时需要提前了解电脑内存的类型和频率,防止内存不兼容,但在设备管理器和…

从零实现深度学习框架——Transformer从菜鸟到高手(一)

引言 💡本文为🔗[从零实现深度学习框架]系列文章内部限免文章,更多限免文章见 🔗专栏目录。 本着“凡我不能创造的,我就不能理解”的思想,系列文章会基于纯Python和NumPy从零创建自己的类PyTorch深度学习框…

Node版本的切换之Window

步骤一:按健winR窗口,键盘输入cmd,然后回车。 步骤二: 输入where node,显示 步骤三:进入node.exe目录,并且删除父目录文件夹即:nodejs文件夹 步骤四:从官网下载版本管理并安装&#…

亚马逊店铺的回款周期是多久?

现如今,开亚马逊店铺可是一个技术活,一旦有一个环节,或者是一件事情没有做好,对整个亚马逊店铺过程中影响都是十分巨大的,不少亚马逊卖家就吃过这方面的亏。 很多亚马逊卖家就是吃亏在这些方面,现在要想开…

线程数突增!领导:谁再这么写就滚蛋!

今天给大家分享一个线上问题引出的一次思考,过程比较长,但是挺有意思。 今天上班把需求写完,出于学习(摸鱼)的心理上skywalking看看,突然发现我们的一个应用,应用内线程数超过900条&#xff0c…

高忆管理:散户可以做空股票吗?散户如何做空?

在美国股市上,投资者能够进行做多操作,也能够进行做空操作,那么,在a股上,散户能够做空股票吗?散户如何做空?下面高忆管理为我们预备了相关内容,以供参考。 在a股市场上,散…

2023年最适合您业务的免费CRM——SaleSmartl

使用免费的CRM软件,例如SaleSmartly,可以协助您更好地发展您的业务,是提高生产力、减少错误、自动化重复性任务和享受交易机会的宝贵工具。您可以将多个渠道的客户信息集中在一个平台上,并允许员工访问,以便给他们分配…

VS+QT+VTK treeView树型结构模型加载隐藏实例

程序示例精选 VSQTVTK treeView树型结构模型加载隐藏实例 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTVTK treeView树型结构模型加载隐藏实例>>编写代码&#xff0c;代码…

gateway过滤器没生效,特殊原因

看这边文章的前提&#xff0c;你要会gateway&#xff0c;知道过滤器怎么配置&#xff1f; 直接来看过滤器&#xff0c;局部过滤器 再来看配置 请求路径 http://127.0.0.1:8080/appframework/services/catalog/catalogSpecials.json?pageindex1&pagesize10&pkidd98…

DAY56:单调栈(二)下一个最大元素Ⅱ(环形数组处理思路)

文章目录 思路写法1完整版环形数组处理&#xff1a;i取模&#xff0c;遍历两遍写法2完整版&#xff08;环形数组推荐写法&#xff09;debug测试&#xff1a;逻辑运算符短路特性result数组在栈口取元素&#xff0c;是否会覆盖原有数值&#xff1f; 给定一个循环数组 nums &#…

spring boot+thymeleaf+semantic ui 分页

参考&#xff1a; https://my.oschina.net/ayyao/blog/898041 后端 springboot 使用&#xff1a; com.github.pagehelper.PageInfo&#xff0c;作为分页对象 <!--引入分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifa…

[玩转AIGC]如何训练LLaMA2(模型训练、推理、代码讲解,并附可直接运行的kaggle连接)

目录 一、clone仓库二、数据集下载与处理1、数据集下载2、数据集标记化&#xff08;耗时较长&#xff09; 三、修改配置四、开始训练五、模型推理六、train.py训练代码讲解1、导包2、定义模型训练参数与相关设置3、加载模型配置4、迭代生成数据5、模型初始化6、设置自动混合精度…

Bug的严重等级和优先级别与分类

一、 Bug的严重等级定义&#xff1a; 1、 Blocker 即系统无法执行、崩溃或严重资源不足、应用模块无法启动或异常退出、无法测试、造成系统不稳定。 严重花屏内存泄漏 用户数据丢失或破坏系统崩溃/死机/冻结模块无法启动或异常退出严重的数值计算错误功能设计与需求严重不符其…

游戏发烧友、直播、视频创作者推荐,性能怪兽NUC12SNKI7 蝰蛇峡谷

在学校上课的时候一般习惯带着电脑去教室&#xff0c;选用轻薄的办公本或者 Mac整天带着到处跑。但从校园跨入社会后突然发现办公场景慢慢从移动办公转为固定场所的办公&#xff0c;公司因为保密等原因不能带私人电脑进公司&#xff0c;在家用办公本性能又不够用&#xff0c;甚…

UNet 系列:做医学图像分割的任何人,都必须要会使用 nnU-Net

UNet 系列 UNet下采样和上采样跳跃连接 UNet&#xff1a;多层级和多尺度的密集链接nnUNet集成模型预处理训练过程推理后处理4行命令使用 nnUNet 训练自己的医学图像分割模型 UNet 经典的卷积神经网络都很深&#xff0c;越深的卷积层越适合处理大目标的东西&#xff0c;而医学病…

《面试1v1》ElasticSearch基础

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

智能聊天助手,一步到位:ChatGLM-6B部署全攻略

目录 前言一、介绍二、使用方式2-1、安装2-2、代码调用&#xff1a; 使用如下代码时会自动下载模型。2-3、本地加载 三、运行总结 前言 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结…