架构思维:通用架构模式_系统监控的设计

文章目录

  • 引言
  • 什么是监控
  • 三大常见监控类型
    • 1. 次数监控
    • 2. 性能监控
    • 3. 可用率监控
  • 落地监控
    • 1. 服务入口
    • 2. 服务内部
    • 3. 服务依赖
  • 监控时间间隔的取舍
  • 小结

在这里插入图片描述


引言

架构思维:通用架构模式_从设计到代码构建稳如磐石的系统
架构思维:通用架构模式_稳如老狗的SDK设计最佳实践

架构思维:通用架构模式_怀疑下游的设计思路与最佳实践

我们以“防备上游、做好自己、怀疑下游”的准则,分别从系统设计、部署和代码层面,介绍了如何构建高可用后台系统。但再完善的防护也难保万无一失,真正的挑战在于在用户感知之前,第一时间发现问题。

接下来我们将从监控的角度出发,教你如何设计微服务监控,帮助快速、自动地暴露故障,保障系统稳定运行。

什么是监控

监控是指对系统运行状态数据持续审查,并设定阈值,对超出阈值的指标发出告警的机制。如下所示,监控数据通常以 时间(X 轴)指标值(Y 轴) 的曲线图形式展示:

在这里插入图片描述

X 轴:时间间隔(秒或分钟)
Y 轴:该间隔内汇聚的指标(数量、平均值、最大值等)


三大常见监控类型

1. 次数监控

用于统计某个事件或方法的调用次数,比如接口被调用次数、某段逻辑执行次数。

在这里插入图片描述

图 2:次数监控示例
Y 轴:指定间隔内总调用次数

2. 性能监控

关注接口或依赖调用的延迟,常用指标有:

  • 平均耗时(AVG) = 总耗时 / 调用次数
  • 最大耗时(Max) = 区间内单次最长耗时
  • TPn(如 TP999)= 排序后第 n‰ 位置的耗时值

通常将 Avg、Max、TP99X 三者合并展示:

> **图 3:性能监控示例**

3. 可用率监控

计算指定区间内业务执行成功的比例。

在这里插入图片描述

在可用率判断中,要区分:

  • 业务异常(如参数校验失败):不算失败,不降可用率
  • 非业务异常(如网络超时、空指针):算失败,需降可用率并报警

阈值设置需结合接口级别和 SLA,核心接口可设 100%,其他接口可适当放宽。


落地监控

业务

在这里插入图片描述

1. 服务入口

  • 次数监控

    1. 基于压测瓶颈设阈值告警,并配合限流
    2. 按调用方维度统计,快速定位流量异常来源
    3. 同环比监控,自动识别突增
  • 性能监控

    1. 必要时只告警 Avg、Max、TP999(或 TP9999)
    2. 按调用方分层监控,排查使用差异
    3. 基于入参(如批量大小)分段监控,辅助优化策略
  • 可用率监控

    1. 接口级与调用方级双重告警
    2. 按业务/非业务异常判定成功与否
    3. 阈值分级:重要接口近乎 100%,普通接口可降至 95%

2. 服务内部

  • 聚焦核心可疑方法,避免监控点过多导致告警疲劳
  • 监控 JVM(Young/Full GC、堆内存使用)、RPC 线程池剩余数、进程存活状态
  • 机器层面:CPU、内存使用率与负载(Load)监控

3. 服务依赖

在这里插入图片描述

  • 对每个下游依赖统一埋点监控(可用率、性能、次数)
  • 注意解析 RPCResult 等包装返回,防止“隐性”失败漏报
  • Java 应用可通过 AOP 或框架拦截(如 MyBatis Interceptor)统一实现

监控时间间隔的取舍

  • 秒级监控最优,能最快暴露故障
  • 但存储成本高(1s 数据量是 1min 的 60 倍)
  • 若系统同时支持秒级和分钟级,生产环境推荐秒级,测试或存储受限时可降至分钟级

小结

  • 三大基础指标:次数、性能、可用率
  • 三层架构落地:入口、内部、依赖
  • 补充监控:JVM、线程池、进程、机器资源
  • 阈值与时序:结合 SLA、接口重要度,优先秒级

在这里插入图片描述

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

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

相关文章

精益数据分析(46/126):深入剖析用户生成内容(UGC)商业模式

精益数据分析(46/126):深入剖析用户生成内容(UGC)商业模式 在创业与数据分析的征程中,每一种商业模式都蕴含着独特的价值与挑战。今天,我们依旧怀揣着共同进步的信念,深入研读《精益…

QMK键盘固件中LED锁定指示灯的配置与使用详解(实操部分+拓展)

QMK键盘固件中LED锁定指示灯的配置与使用详解 大家好!今天就跟大家一起探索QMK固件中LED锁定指示灯的配置与使用。无论你是键盘DIY新手还是老司机,相信这篇教程都能帮你解锁新技能! 一、基础配置:定义LED引脚 在QMK固件中配置LED锁定指示灯非常简单,只需在config.h文件…

CVE体系若消亡将如何影响网络安全防御格局

CVE体系的核心价值与当前危机 由MITRE运营的通用漏洞披露(CVE)项目的重要性不容低估。25年来,它始终是网络安全专业人员理解和缓解安全漏洞的基准参照系。通过提供标准化的漏洞命名与分类方法,这套体系为防御者建立了理解、优先级…

一周学完计算机网络之三:1、数据链路层概述

简单的概述 数据链路层是计算机网络体系结构中的第二层,它在物理层提供的基本服务基础上,负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。 几个重要概念…

✨WordToCard使用分享✨

https://www.wordtocard.com 家人们,今天发现了一个超好用的工具——WordToCard!😜 它可以把WordToCard文档转换成漂亮的知识卡片,学习笔记、知识整理和内容分享都变得超轻松~🤗 支持各种WordToCard语法…

扩展:React 项目执行 yarn eject 后的 package.json 变化详解及参数解析

扩展:React 项目执行 yarn eject 后的 package.json 变化详解及参数解析 什么是 yarn eject?React 项目执行 yarn eject 后的 package.json 变化详解1. 脚本部分 Scripts 被替换2. 新增构建依赖 dependencies(部分)3. 新增 Babel …

[Java实战]Spring Boot 整合 Redis(十八)

[Java实战]Spring Boot 整合 Redis(十八) 在现代的分布式应用开发中,Redis 作为一种高性能的键值存储数据库,被广泛用于缓存、消息队列、排行榜等多种场景。Spring Boot 提供了强大的支持,使得整合 Redis 变得非常简单…

【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤

该文的主要发现和结论如下: GaN的再结晶特性 :GaN在离子撞击区域具有较高的再结晶倾向,这导致其形成永久损伤的阈值较高。在所有研究的电子能量损失 regime 下,GaN都表现出这种倾向,但在电子能量损失增加时,其效率会降低,尤其是在材料发生解离并形成N₂气泡时。 能量损失…

R语言实战第5章(1)

第一部分:数学、统计和字符处理函数 数学和统计函数:R提供了丰富的数学和统计函数,用于执行各种计算和分析。这些函数可以帮助用户快速完成复杂的数学运算、统计分析等任务,例如计算均值、方差、相关系数、进行假设检验等。字符处…

k8s术语之Horizontal Pod Autoscaling

应用的资源使用率通常都有高峰和低谷的时候,如何削峰填谷,提高整体的整体资源利用率,让service中的Pod个数自动调整呢?Horizontal Pod Autoscaling:使pod水平自动缩放。这个Object也是最能体现kubernetes之于传统运维价值的地方&a…

Linux复习笔记(三) 网络服务配置(web)

遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 二、网络服务配置 2.3 web服务配置 2.3.1通信基础:HTTP协议与C/S架构(了解) ​​HTTP协议的核心作用​​ Web服务基于HTTP/HTTPS协议实现客户端&#xff…

9.1.领域驱动设计

目录 一、领域驱动设计核心哲学 战略设计与战术设计的分野 • 战略设计:限界上下文(Bounded Context)与上下文映射(Context Mapping) • 战术设计:实体、值对象、聚合根、领域服务的构建原则 统一语言&am…

CSS Layer 详解

CSS Layer 详解 前言 最近在整理CSS知识体系时,发现Layer这个特性特别有意思。它就像是给样式规则提供了一个专属的「VIP通道」,让我们能更优雅地解决样式冲突问题。今天我就用最通俗的语言,带大家全面了解这个CSS新特性。 什么是CSS Laye…

【Dv3Admin】工具视图配置文件解析

在开发后台管理系统时,处理复杂的 CRUD 操作是常见的需求。Django Rest Framework(DRF)通过 ModelViewSet 提供了基础的增删改查功能,但在实际应用中,往往需要扩展更多的功能,如批量操作、权限控制、查询优化等。dvadmin/utils/viewset.py 模块通过继承并扩展 ModelViewS…

‌云原生CAE软件

‌云原生CAE软件‌是一种在设计和实现时就充分考虑了云环境特点的软件,能够充分利用云资源,实现高效、可扩展和灵活的仿真分析。 定义和特点 云原生CAE软件是一种在云端构建和运行的CAE(Computer Aided Engineering,计算机辅助工…

若依定制pdf生成实战

一、介绍 使用 Java Apache POI 将文字渲染到 Word 模板是一种常见的文档自动化技术,广泛应用于批量生成或定制 Word 文档的场景。使用aspose可以将word转成pdf从而达到定制化pdf的目的。 参考文档:java实现Word转Pdf(Windows、Linux通用&a…

Redis再次开源!reids8.0.0一键安装脚本分享

准备工作 1. 下载 Redis 8 安装包 # Redis 8.0.0 示例(请替换为实际版本) http://download.redis.io/releases/redis-8.0.0.tar.gz一、脚本内容: #!/usr/bin/python # -*- coding: UTF-8 -*-import os import time import shutil import s…

stm32之BKP备份寄存器和RTC时钟

目录 1.时间戳1.1 Unix时间戳1.2 UTC/GMT1.3 时间戳转换**1.** time_t time(time_t*)**2.** struct tm* gmtime(const time_t*)**3.** struct tm* localtime(const time_t*)**4.** time_t mktime(struct tm*)**5.** char* ctime(const time_t*)**6.** char* asctime(const stru…

Android学习总结之算法篇八(二叉树和数组)

路径总和 import java.util.ArrayList; import java.util.List;// 定义二叉树节点类 class TreeNode {int val;TreeNode left;TreeNode right;// 构造函数,用于初始化节点值TreeNode(int x) {val x;} }public class PathSumProblems {// 路径总和 I:判…

Scala和Spark的介绍

Scala 1. Slaca的发展过程 由洛桑联邦理工学院的马丁 奥德斯在 2001 年基于 Funnel 的工作开始设计,设计初衷是想集成面向对象编程和函数式编程的各种特性。 Scala 是一种纯粹的面向对象的语言,每个值都是对象。 Scala 也是一种函数式语言&#xff0…