如何管理服务中的 “昂贵” 资源

news2024/11/20 16:28:11

如果接触过实际大型业务系统,就能体会到许多业务的正常运行都依赖于各种昂贵的第三方接口,调用一次都是要花元子的,例如

  • 大语言模型
  • nlp 服务:信息提取、分类等
  • cv 服务:定位、信息提取、分类等

然而经常可能由于各种无意识的操作,导致对这些接口的调用量超出我们的控制范围。当然,这可以通过细致详尽的代码审查环节达到一定程度的缓解,然而凡是依靠人的都是不稳定的

此外,有时候资源使用消耗增加并不来自于本身的业务上线,有可能是流量正常增加,或者上下游的变更,对于复杂的大型业务系统,这一切都远远超过了人力可以预知和控制的范围。

那么我们能从系统层面做哪些事情,来管理好 “昂贵” 资源的使用呢?

我根据我曾经的经验,总结了如下 7 条策略

  1. 缓存
  2. 拼接请求资源来 “薅羊毛”
  3. 业务划分与优先级
  4. 限速 / 限额
  5. 报警
  6. 资源使用跟踪与回收
  7. 寻找低成本可替代的方案

公司最好安排单独的团队对第三方接口进行封装,依据这 7 条策略提供统一的控制和管理方案,以此避免各子团队出现重复开发的情况。。

一、缓存:避免重复的请求耗费资源

这条经验来自于惨痛的教训,有时由于历史负担和系统设计的原因,很难避免完全一致的请求对于接口的重复调用。

此时应该在业务和 “昂贵” 资源之间增加统一的缓存策略,来避免重复请求耗费不必要的资源。

在这里插入图片描述

二、拼接请求资源来 “薅羊毛”

如果 “昂贵” 资源是按照次数收费,那么不要忘了拼接请求资源来薅羊毛。

这让我想起上学时几个同学买一份论文查重服务,然后把论文拼在一起进行查重。

实际的业务有可能是文本或图片中某些数据的检测,如果接口通过次数而非 “大小” 来计费,并且检测到的可能性很低,那么就是 “薅羊毛” 的好机会。这时可以拼接多个文本或者多张图片,以节约资金。

在这里插入图片描述

三、业务划分与优先级

对业务进行清晰的划分并确定优先级,有助于在资源有限的情况下进行精细化管理。

首先,将不同的业务功能或模块按照其对整体业务目标的重要性和影响程度划分成不同的类别。例如,在一个金融交易系统中,核心交易处理业务显然具有最高优先级,因为它直接关系到资金的流转和客户的交易体验;而一些辅助性的报表生成业务则相对优先级较低。当资源紧张时,优先保障高优先级业务的正常运行。

同时,明确的业务划分也方便在出现资源使用问题时快速定位问题来源。如果某个业务模块出现资源占用过高或异常情况,可以迅速聚焦到该业务区域进行排查和解决,而不会因为业务的复杂性而导致问题定位困难,从而提高资源管理和问题解决的效率。

四、限速 / 限额

为了防止昂贵资源出现 “爆炸” 式的使用增长而导致成本失控,设置限速和限额机制至关重要。

可以结合上面介绍的业务区分和优先级策略,进行更加精细化的限速配置。

对于限速的粒度,如果粒度太小可能对噪声敏感,造成不必要的错误超速判定;如果粒度太大可能无法有效在问题发生时立刻做出动作。我们可以通过上线前采样上下文数据的方式,对限速值和限速时间粒度给出合理的预估。

在这里插入图片描述

五、报警

报警系统是监控昂贵资源使用情况的重要防线。当资源使用出现异常时,及时准确的报警能够让运维团队迅速采取措施,避免问题恶化导致更大的成本损失。

就我个人经验而言,领导经常拿着月度或者季度报表,要排查某个资源消耗出现的上涨、下降、尖峰等情况,非常的费时费力。因为这需要回溯半个月甚至一个月前的变更,并且常常已经丢失现场,很多时候有一种无从查起的无力感。所以,及时的资源使用异常报警能大大解放问题排查的人力。

然而,减少误报是报警系统设计中的一个关键挑战。误报可能会导致运维人员频繁地响应虚假警报,浪费时间和精力,甚至可能在真正的问题发生时产生麻痹心理。为了减少误报,首先要对资源使用的正常模式和阈值进行精准的设定。这需要基于对业务历史数据的深入分析和对资源特性的充分了解。

同时,可以采用多维度的报警规则,结合多种资源指标进行综合判断。比如,当 CPU 使用率持续高于某个阈值且同时内存使用率也出现异常增长时才触发报警,这样可以提高报警的准确性。

此外,还可以引入机器学习算法对资源使用数据进行实时分析,自动学习正常的资源使用模式,并根据学习结果动态调整报警阈值,进一步降低误报率。

六、资源使用跟踪与回收

资源使用跟踪与回收包含两方面的含义。

第一,如果有可能,跟踪资源的后续使用情况,如果检测到某些请求并没有产生实际的业务价值,那么应及时减少其成本消耗。

例如图片、视频这样的资源,应该定位后续访问,如果发现大量图文或视频并没有被访问到或者很少被访问到,应该及时联系下游使用方排查业务,避免资源浪费。

第二,是对于持续消耗资源的使用场景应该结合业务进行优化。

例如,在一个图片分享网站上,可以记录每张图片的访问频率和最后访问时间。如果一张图片在较长时间内(如半年)没有被访问过,那么可以考虑将其从高速存储设备转移到低速、低成本的存储介质中,以释放高速存储资源供其他更频繁访问的图片使用。当图片再次被访问时,再将其从低速存储恢复到高速存储,虽然这会增加一定的恢复时间,但相比长期占用高价存储资源,这种策略在整体资源利用和成本控制上更为合理。

对于一些临时生成的资源,如计算过程中的临时文件、缓存数据等,在其生命周期结束后要及时进行清理和回收。可以设定自动清理机制,按照一定的时间间隔或资源使用情况触发清理操作,确保资源的及时回收,为新的业务需求腾出空间。

七、寻找低成本可替代的方案

在昂贵资源的使用过程中,积极寻找可替代的开源解决方案是降低成本的有效途径。开源软件和工具在许多领域都提供了功能强大且免费使用的选择。

此外也应该持续关注更便宜的服务厂商。

很多时候我们需要的并不是 100 分的专业解决方案,常常开源解决方案就能达到 80 甚至 90 分,却节省了大量的成本。但一定要记得评估后期维护成本和系统复杂性等因素,避免得不偿失。

在这里插入图片描述

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

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

相关文章

蓝桥杯每日真题 - 第16天

题目:(卡牌) 题目描述(13届 C&C B组C题) 解题思路: 题目分析: 有 n 种卡牌,每种卡牌的现有数量为 a[i],所需的最大数量为 b[i],还有 m 张空白卡牌。 每…

CSS遮罩:mask

CSS属性 mask 允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。 // 一般用位图图片做遮罩 mask: url(~/assets/images/mask.png); mask-size: 100% 100%;// 使用 SVG 图形中的形状来做遮罩 mask: url(~/assets/images/mask.svg#star);…

Zabbix:使用CentOS 9,基于LNMP平台,源码部署Zabbix 7。

ZBX:源码部署Zabbix 7 一、Zabbix概述1. 什么是zabbix2. 为什么学习zabbix3. 逻辑架构3. 实验环境4. 软件下载: 二、安装前的系统准备工作1. 配置主机名2. 关闭防火墙3. 关闭selinux4. 配置yum源5. 配置时钟同步6. 优化系统限制7. 安装JDK 三、部署LNMP环…

5G与4G互通的桥梁:N26接口

5G的商用部署进程将是一个基于4G系统进行的长期的替换、升级、迭代的过程,4G系统是在过渡到5G全覆盖过程中,作为保障用户业务连续性体验这一目的的最好补充。 因此4G/5G融合组网,以及互操作技术将是各大运营商在网络演进中需要重点考虑的问题…

【计算机网络实验】之静态路由配置

【计算机网络实验】之静态路由配置 实验题目实验目的实验任务实验设备实验环境实验步骤路由器配置设置静态路由测试路由器之间的连通性配置主机PC的IP测试 实验题目 静态路由协议的配置 实验目的 熟悉路由器工作原理和机制;巩固静态路由理论;设计简单…

【专题】2024AIGC创新应用洞察报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38310 在科技日新月异的今天,人工智能领域正以前所未有的速度发展,AIGC(人工智能生成内容)成为其中最耀眼的明珠。从其应用场景的不断拓展,到对各行业的深刻变革&#xff0…

微知-动态链接库导出的三种方式?(LD_LIBRARY_PATH, /etc/ld.so.conf, -Wl,-rpath)

背景 经常需要导出动态库,最场景的方式是指定LD_LIBRARY_PATH。本文介绍3中 LD_LIBRARY_PATH 这种方式临时生效 export LD_LIBRARY_PATH/path/to/mylibdir:$LD_LIBRARY_PATH使用ldconfig和/etc/ld.so.conf 在配置文件 /etc/ld.so.conf 中指定动态库搜索路径。每…

Jenkins更换主题颜色+登录页面LOGO图片

默认主题和logo图片展示 默认主题黑色和白色。 默认LOGO图片 安装插件 Login ThemeMaterial Theme 系统管理–>插件管理–>Available plugins 搜不到Login Theme是因为我提前装好了 没有外网的可以参考这篇离线安装插件 验证插件并修改主题颜色 系统管理–>A…

HTB:Arctic[WriteUP]

目录 连接至HTB服务器并启动靶机 信息搜集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机开放端口进行脚本、服务扫描 使用curl访问靶机8500端口 漏洞利用 使用浏览器访问URL:http://10.10.10.11:8500 使用searchsploit搜索该WebAPP 启动Metasplo…

利用正则表达式批量修改文件名

首先, 我们需要稍微学习一下正则表达式的使用方式,可以看这里:Notepad正则表达式使用方法_notepad正则匹配-CSDN博客 经过初步学习之后,比较重要的内容我做如下转载: 元字符是正则表达式的基本构成单位,它们…

qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能

一、前言 主要功能如下: 1.实现文件夹的下载和删除,网上很多资料都是单独对某个路径的文件操作的,并不能对文件夹操作 2.实现目标机中含中文名称自动转码,有些系统编码方式不同,下载出来的文件会乱码 3.实现ftp功能…

核心社群营销和覆盖区域选型

目录 一、背景介绍 (一)核心流程 (二)用户进群 (三)内容匹配 (四)数据追踪 (五)风险管控 二、业界调研 三、聚焦群覆盖区域 (一&#xf…

计算机毕业设计 | SpringBoot+vue汽车资讯网站 汽车购买咨询管理系统(附源码+论文)

1,绪论 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理汽车资讯网站的相关信息成为必然…

Java成员变量 成员方法的访问特点 结构体(上)

1. (1) public class dog {public void eat(){System.out.println("在吃狗粮");}public void drink(){System.out.println("在喝水");}public void lookhome(){System.out.println("在看家");} } (2&#x…

ctfshow-web入门-SSRF(web351-web360)

目录 1、web351 2、web352 3、web353 4、web354 5、web355 6、web356 7、web357 8、web358 9、web359 10、web360 1、web351 看到 curl_exec 函数,很典型的 SSRF 尝试使用 file 协议读文件: urlfile:///etc/passwd 成功读取到 /etc/passwd 同…

【Java】ArrayList与LinkedList详解!!!

目录 一🌞、List 1🍅.什么是List? 2🍅.List中的常用方法 二🌞、ArrayList 1🍍.什么是ArrayList? 2🍍.ArrayList的实例化 3🍍.ArrayList的使用 4🍍.ArrayList的遍…

蓝桥杯每日真题 - 第18天

题目:(出差) 题目描述(13届 C&C B组E题) 解题思路: 问题分析 问题实质是一个带权图的最短路径问题,但路径的权重包含两个部分: 从当前城市到下一个城市的路程时间。 当前城市的…

D73【 python 接口自动化学习】- python 基础之正则表达式

day73 正则表达式-元字符匹配 学习日期:20241119 学习目标:正则表达式--133 正则表达式-元字符匹配 学习笔记: 元字符匹配 数量匹配 实践操作 总结 字符串的r标记表示,字符串内转移字符无效,作为普通字符使用正则…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣,可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型,管理全周期AI工作流,选择下面的云平台以开始使用昇思MindSpore,获取安装命令,安装MindSpo…