微服务架构之路3,如何对微服务进行有效的监控?

在这里插入图片描述

目录

    • 一、监控对象
    • 二、监控指标
      • 1、请求量
      • 2、响应时间
      • 3、错误率
      • 4、服务可用性
      • 5、资源使用率
      • 6、数据库访问量
    • 三、监控维度
      • 1、全局维度
      • 2、分机房维度
      • 3、单机维度
      • 4、时间维度
    • 四、监控系统原理
      • 1、数据采集
      • 2、数据传输
      • 3、数据处理
      • 4、数据展示
    • 五、总结
    • 六、从零开始学架构:照着做,你也能成为架构师
      • 1、作者简介
      • 2、内容简介
    • 微服务架构之路

大家好,我是哪吒。

与单体应用相比,在微服务架构下,一次用户调用会因为服务化拆分后,变成多个不同服务之间的相互调用,这也就需要对拆分后的每个服务都监控起来。

在进行系统监控之前,需要明确三个问题:

  1. 监控的对象是什么?
  2. 具体监控哪些指标?
  3. 从哪几个维度进行监控?

在这里插入图片描述

一、监控对象

监控对象大概分为四个方向:

  1. 基础监控:通常指对服务器本身的健康状况的监控,主要包括CPU利用率、内存使用量、I/O读写量、网卡带宽等。
  2. 资源监控:通常指对接口依赖的外部资源的监控,如redis。
  3. 接口监控:通常指对业务提供的功能所依赖的具体RPC接口的监控。
  4. 用户端监控:通常是指业务直接对用户提供的功能的监控。

二、监控指标

1、请求量

这是微服务最基本的监控指标之一,包括实时请求量和历史请求量。实时请求量可以用QPS(每秒查询次数)来衡量,反映了服务的实时负载情况。历史请求量可以用来分析服务的负载趋势,为容量规划提供依据。

2、响应时间

响应时间是衡量微服务性能的重要指标。它反映了服务处理请求的速度。通常,我们关注平均响应时间和P99响应时间(即99%的请求的响应时间)。如果响应时间过长,可能意味着服务存在性能瓶颈或者资源不足。

3、错误率

错误率是衡量服务稳定性的重要指标。它包括HTTP错误率(如4xx、5xx错误)和业务错误率(如业务逻辑错误、数据库查询错误等)。如果错误率过高,可能意味着服务存在bug或者配置问题。

4、服务可用性

服务可用性是衡量服务健康状态的重要指标。它反映了服务是否能够正常处理请求。如果服务可用性降低,可能意味着服务存在故障或者资源不足。

5、资源使用率

这包括CPU使用率、内存使用率、磁盘使用率等。这些指标反映了服务的资源消耗情况,如果资源使用率过高,可能意味着服务存在资源泄露或者配置不足。

6、数据库访问量

包括数据库连接数、SQL执行次数、数据库读写延迟等。这些指标反映了微服务对数据库的访问情况,可以帮助发现数据库性能瓶颈和访问模式问题。

三、监控维度

1、全局维度

这一维度关注整体的服务运行状况,包括整体的请求量、平均耗时以及错误率。这个维度的监控帮助我们对服务的整体运行情况有个全面的了解。

2、分机房维度

由于服务可能部署在多个机房,这个维度关注不同机房内的服务运行状况。不同机房的服务可能会因为地域等因素导致各种指标存在很大的差异,因此需要从机房维度进行监控。

3、单机维度

即使在同一个机房,由于机器采购批次等因素,同一服务在不同机器上的表现也可能存在差异。这个维度的监控帮助我们了解每台机器上的服务运行情况。

4、时间维度

这个维度关注服务在不同时间段的性能表现,例如一天前,一周前等。通过时间维度的对比,我们可以了解服务的性能变化趋势,以便更好地预测未来的负载和需求。

通过这四个维度的监控,我们可以更全面地了解微服务的运行状态和性能,从而及时发现并解决问题,保证服务的稳定和高效运行。

四、监控系统原理

  1. 数据采集:在监控时,要收集每一次调用的详细信息,包括调用的响应时间、调用结果、调用的发起者和被调用者。
  2. 数据传输:采集到数据后,要把数据通过网络传递给数据中心进行处理;
  3. 数据处理:数据中心再按照服务的维度进行聚合,计算出不同服务的请求量、响应时间、错误率等信息,并存储;
  4. 数据展示:最后通过大屏进行数据展示。

1、数据采集

通常有两种方式:

  1. 主动上报,在处理数据时,服务代码将处理结果和相关信息主动传给监控系统;
  2. 日志分析,通过分析服务接口的调用日志,采集监控系统需要的信息;

无论哪种方式,要先确认采集频率,采样频率关系着数据实时性和精确度。频率越高,数据实时性和精确度越高,但性能压力也越大。过高的采样频率会导致系统写入磁盘的IO过高,存储压力也会过大,进而影响程序的性能。所以设置合理的采集频率非常重要。最好采用动态频率,系统比较空闲时间加大采样率,系统任务比较重时,减少采样频率,以减少系统的运行压力。

2、数据传输

数据传输最常用的方式有两种:

  1. UDP传输,这种处理方式是数据处理单元提供服务器的请求地址,数据采集后通过UDP协议与服务器建立连接,然后把数据发送过去。
  2. Kafka传输,这种处理方式是数据采集后发送到指定的Topic,然后数据处理单元再订阅对应的Topic,就可以从Kafka消息队列中读取到对应的数据。

无论采用哪种传输方式,数据格式都十分重要,尤其是对带宽敏感以及解析性能要求比较高的场景,一般数据传输时采用的数据格式有两种:

  1. 二进制协议,最常用的就是PB对象,它的优点是高压缩比和高性能,可以减少传输带宽并且序列化和反序列化效率特别高。
  2. 文本协议,最常用的就是JSON字符串,它的优点是可读性好,但相比于PB对象,传输占用带宽高,并且解析性能也要差一些。

3、数据处理

数据处理是对收集来的原始数据进行聚合并存储。数据聚合通常有两个维度:

  1. 接口维度聚合,这个维度是把实时收到的数据按照接口名维度实时聚合在一起,这样就可以得到每个接口的实时请求量、平均耗时等信息。
  2. 机器维度聚合,这个维度是把实时收到的数据按照调用的节点维度聚合在一起,这样就可以从单机维度去查看每个接口的实时请求量、平均耗时等信息。

聚合后的数据需要持久化到数据库中存储,所选用的数据库一般分为两种:

  1. 索引数据库,比如Elasticsearch,以倒排索引的数据结构存储,需要查询的时候,根据索引来查询。
  2. 时序数据库,比如OpenTSDB,以时序序列数据的方式存储,查询的时候按照时序如1min、5min等维度来查询。

4、数据展示

微服务监控系统的数据展示通常是通过监控仪表板来实现的。在这个仪表板上,可以展示各种监控维度的重要指标。

一般来说,数据展示会包括如下内容:

(1)实时数据

展示微服务的实时运行数据,例如当前的请求量、响应时间、错误率等。这些数据通常以图表或者数字的形式直观展示,便于快速了解服务状态。

(2)历史数据

通过折线图、柱状图等形式,展示微服务在过去一段时间内的性能变化趋势。这样可以观察到服务的负载变化,以及是否有性能瓶颈或者故障发生。

(3)告警提示

当某个监控指标超过预设的阈值时,监控系统会产生告警提示。这些数据展示通常会比较醒目,以便快速发现并处理问题。
服务详情:通过点击仪表板上的某个服务,可以展示该服务的详细信息,包括请求量、响应时间、错误率的详细数据,以及该服务所调用的其他服务和被调用的情况等。

(4)自定义视图

根据用户需要,可以选择展示特定的监控维度和数据,定制符合自己需求的监控视图。

请注意,上述描述的一般性数据展示方式可能会因不同的监控系统和工具而有所差异。实际使用中,建议参考具体监控系统的用户手册和操作指南,以获得更详细和准确的信息。

五、总结

服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。

搭建一个服务监控系统,涉及数据采集、数据传输、数据处理、数据展示等多个环节,每个环节都需要根据自己的业务特点选择合适的解决方案。

六、从零开始学架构:照着做,你也能成为架构师

在这里插入图片描述

京东购买链接:从零开始学架构:照着做,你也能成为架构师(博文视点出品)

在很多人眼中,架构师极其神秘,每天做什么,需要具备哪些能力,众说纷纭、莫衷一是。在我看来,架构师虽然是一个技术职位,但综合能力要求很高,是胸怀理想的现实主义者,是团队中的技术领导者,需要具备突出的软硬技能。许多人想成为架构师,却不得其法,本书提纲挈领,从概念到模式并结合实战,为我们掀开神秘面纱,展示架构师的全景视图,相信会成为很多工程师进阶架构师的入门宝典。可惜当初我当架构师的时候,没有这样接地气的好书,如今的同行们有福了!

1、作者简介

互联网资深技术专家,十多年技术老兵,目前带领多个研发团队,承担架构设计、架构重构、技术团队管理、技术培训等职责;专注于开源技术、系统分析、架构设计,对互联网技术的特点和发展趋势有较深入的研究,对系统解耦、高性能、高可用架构有丰富的经验。

2、内容简介

架构设计是技术人员成长和晋升过程中必须掌握的技能,但目前业界缺乏架构师学习和培养方面体系化的知识和实践的指导,本书结合作者多年在架构设计方面的学习、思考、实践,提出了完整的一套架构设计方法论,包括什么是架构、架构设计的目的、架构设计原则、架构设计流程、架构设计模式和技巧、互联网公司技术演进等内容。这套架构设计方法论适合不同行业,比如互联网、企业应用等;也适合不同的技术领域,比如后端架构设计、前端架构设计、客户端架构设计、测试平台架构设计、运维平台架构设计等。

本书由浅入深地阐述了架构设计的相关内容,比较适合以下类型的读者:

  1. 没有架构设计经验,但对架构设计非常有兴趣,希望学习架构设计技术,提升技术能力,成为“大厂面霸”的读者;
  2. 已经尝试了一些架构设计,但挖了各种“坑”或踩了各种“坑”,希望知道“为什么”的技术人员;
  3. 具备一定的架构设计经验,想进一步系统化地提升架构设计能力,成为令人羡慕的“高级技术专家”“资深技术专家”的读者。

微服务架构之路

微服务架构之路1,服务如何拆分?使用微服务的注意事项?

微服务架构之路2,一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)


🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用自己的数据集训练YOLO-NAS目标检测器

YOLO-NAS 是 Deci 开发的一种新的最先进的目标检测模型。 在本指南中,我们将讨论什么是 YOLO-NAS 以及如何在自定义数据集上训练 YOLO-NAS 模型。 在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 -…

Ultra:知识图谱推理的基础模型

一、说明 训练单个通用模型来解决任意数据集始终是 ML 研究人员的梦想,尤其是在基础模型时代。虽然这些梦想已经在图像或自然语言等感知领域实现了,但它们是否可以在推理领域(如图形)中再现仍然是一个开放的挑战。 图片由作者根据…

力扣206. 反转链表

题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3:…

微信小程序获取剪切板的内容到输入框中

xml代码 <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view><input placeholder"请输入内容" name"content" type"text" …

.NET Framework中自带的泛型委托Action

Action<>是.NET Framework中自带的泛型委托&#xff0c;可以接收一个或多个输入参数&#xff0c;但不返回任何参数&#xff0c;可传递至多16种不同类型的参数类型。在Linq的一些方法上使用的比较多。 1、Action泛型委托 .NET Framework为我们提供了多达16个参数的Action…

【Linux】第十站:git和gdb的基本使用

文章目录 一、git的基本操作1.gitee新建仓库注意事项2.git的安装3.git的克隆4.git的add5.git的commit6.git的push7.git log8.git status9. .gitignore 二、Linux调试器---gdb1.背景2.gdb安装、进入与退出3.list/l4.r/run运行程序5. break/b 打断点6.info/i b 查看断点7.delete/…

Linux学习之vim跳转到特定行数

参考的博客&#xff1a;《Vim跳到最后一行的方法》 《oeasy教您玩转vim - 14 - # 行头行尾》 《Linux&#xff1a;vim 中跳到首行和最后一行》 想要跳到特定行的话&#xff0c;可以在命令模式和正常模式进行跳转。要是对于vim的四种模式不太熟的话&#xff0c;可以到博客《Linu…

SRC-用友 ERP-NC NCFindWeb 目录遍历漏洞

漏洞描述 用友ERP-NC 存在目录遍历漏洞&#xff0c;攻击者可以通过目录遍历获取敏感文件信息。 fofa&#xff1a; poc&#xff1a;/NCFindWeb?serviceIPreAlertConfigService&filename 在url处拼接poc后可以看到该站点的目录和文件 访问某个文件 /NCFindWeb?serviceIPre…

UE5——源码阅读——10——引擎预初始化

运行延迟注册委托 初始化堆栈跟踪 检测是否需要覆盖打印时间 检测所必要的插件是否是可用的 获取目标信息 拿到编辑器目标名 检测当前运行的可执行文件是否是正确的 检测项目模块是否有过时和不兼容的 检测插件模块是否有过时和不兼容的 报错误信息 强制通讯 判断是…

代码随想录第四十四天 | 动态规划 完全背包:纯完全背包理论基础(卡码网第52题);应用(注意遍历顺序):组合(518),排列(377)

1、动态规划&#xff1a;完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大…

lombok依赖介绍(帮助我们消除冗长代码,如get,set方法)

前言 lombok 是一个 Java 工具库&#xff0c;通过注解的方式&#xff0c;简化 Java 开发。要想使用 lombok 中的注解&#xff0c;我们需要先引入依赖&#xff0c;推荐看idea必装插件EditStarters&#xff08;快速引入依赖&#xff09;&#xff0c;lombok是⼀款在编译期⽣成代码…

从公共业务提取来看架构演进——帐号权限篇

1. 引言 在产品业务多元化的过程中&#xff0c;往往会遇到一些与业务发展不匹配的架构问题&#xff0c;这些问题可能会在业务迭代中以性能差、重复开发等形式表现出来&#xff0c;进而给系统的扩展和维护带来一些挑战。 本文准备以一个帐号权限的业务为例&#xff0c;来讨论下…

arcgis pro模型构建器

如果你不想部署代码包环境来写arcpy代码&#xff0c;还想实现批量或便携封装的操作工具&#xff0c;那么使用模型构建器是最好的选择。1.简介模型构建器 1.1双击打开模型构建器 1.2简单模型构建步骤 先梳理整个操作流程&#xff0c;在纸上绘制在工具箱中找到所需工具拖进来把…

使用Anaconda安装TensorFlow环境以及没有搜到的报错的解决方法

1.在官网下载Anaconda 这一步几乎不会有人报错 下稳定的版本 或者最新的版本都可以 2.TensorFlow分两个版本 一个是用cpu跑 另一个是用gpu跑 显而易见 cpu的计算性能已经比不上现在主流的显卡了 所以有独显的电脑尽量安装gpu版本 CPU版本: 先给出cpu版本的安装方法: 打开A…

maven项目子类项目版本与父类版本不一致

项目的依赖关系 A项目的父pom是spring boot&#xff0c;A依赖pom B&#xff0c;B依赖hibernate B引用的hibernate版本为8.0.1 A引用的hibernate版本为6.2.0 maven helper插件显示无依赖冲突 这就很奇怪&#xff0c;为何依赖版本有问题呢&#xff1f;是在看不出来问题&#xff…

mysql数据库的备份和恢复

目录 一、备份和恢复 1、备份&#xff1a; 2、备份的方法&#xff1a; 2.1物理备份&#xff1a; 2.2、逻辑备份 2.3增量备份&#xff1a; 一、备份和恢复 1、备份&#xff1a; 先备份再恢复 备份&#xff1a;完全备份&#xff0c;增量备份 完全备份&#xff1a;将整个…

hadoop配置

服务规划 gz上传文件&#xff0c;解压文件&#xff0c;创建软连接 cd etc 修改workers文件 配置hadoop-env.sh&#xff0c;这个文件作用主要是Hadoop运行的环境变量 export JAVA_HOME/export/server/jdk export HADOOP_HOME/export/server/hadoop export HADOOP_CONF_DIR$HADOO…

容器核心技术-Cgroups

一、Cgroups Cgroups &#xff08;Control Groups&#xff09; 是 Linux 下用于对一个或一组进程进行资源控制和监控的机制&#xff1b;可以对诸如CPU使用时间、内存、磁盘I&#xff0f;O等进程所需的资源进行限制&#xff1b;不同资源的具体管理工作由相应的Cgroup 子系统&am…

LabVIEW开发多速率实时混合仿真

LabVIEW开发多速率实时混合仿真 混合仿真是一种子结构技术&#xff0c;通过将数值建模的优点与实验测试的优点相结合来模拟感兴趣的结构。模拟结构的其余部分特别令人感兴趣&#xff0c;因此可以进行物理复制&#xff0c;以揭示粘弹性、屈曲、速率相关特性或其他非线性效应的影…

[Linux] GRUB引导 学习笔记(一)

目录 概念 2.1 BIOS 2.2 UEFI 2.3 MBR与GPT 2.3.1 MBR 2.3.2 GPT 2.3.3 总结 2.4 GRUB GRUB2和GRUB Legacy区别 进入GRUB命令行 命令 GRUB工具命令 GRUB2配置 1.主要配置文件 2. 通过/etc/default/grub文件生成grub.cfg 定制GRUB的步骤 概念 BIOS、UEFI、MBR、G…