ITPub博客

首页 > 数据库 > 数据库开发技术 > 智能体也学会摊牌了,加了熔断和降级 (文末有彩蛋)

智能体也学会摊牌了,加了熔断和降级 (文末有彩蛋)

原创 数据库开发技术 作者:皇子谈技术 时间:2024-04-24 13:00:28 0 删除 编辑

大家好,我是皇子。

前几天,手搓一个升级版的儿童教育小博士智能体,发现了coze已经支持月之暗面(moonshot)大模型了。

同时发现编排的智能体存在工作流,且外层并非使用云雀大模型,而是月之暗面大模型时,它会先快速的告知用户它将调用哪个工作流,然后进入等待处理过程,很快变输出处理结果。

更神奇的事情,我发现月之暗面(moonshot)大模型,有服务熔断和降级功能。

熔断的是它不再调用之前运行失败的一个PreSchoolDOctorMeals 工作流(在整个智能体里面充当一个服务),而是降级为使用另外一个能处理该问题的PreschoolDoctorRole 工作流(在整个智能体里面充当一个服务)。

所以今天我打算分享关于服务熔断与降级的相关内容。

一)服务熔断

1、概念

服务熔断源自电力工程中的断路器概念,应用于分布式系统中,是一种防止服务雪崩效应的保护机制。

当某个依赖服务出现故障或响应过慢时,服务熔断机制能够及时检测到这些问题,并主动“切断”对该服务的进一步调用,避免请求持续堆积,造成资源浪费和系统级的连锁故障。

换句话说,服务熔断就像一个开关,当检测到下游服务不健康时,它会快速打开,阻止请求继续流向问题服务,从而保护系统整体的稳定性和可用性。

2、关键特性

服务熔断通常具备以下几个关键特性:

2.1)触发条件:熔断器会在预设的阈值(如错误率、超时次数、响应时间等)被超过时触发。这些阈值可以根据业务需求和系统承受能力进行定制。

2.2)熔断状态:熔断器通常有三种状态:

  • 关闭状态(Closed):正常情况下,熔断器处于关闭状态,允许请求正常通过并调用下游服务。
  • 开启状态(Open):当触发条件满足时,熔断器切换到开启状态,立即拒绝后续请求,不再尝试调用问题服务。
  • 半开状态(Half-Open):经过一段时间(称为恢复期)后,熔断器进入半开状态,允许少量请求试探性地通过,以检测下游服务是否已经恢复。如果这些试探请求成功,熔断器会认为服务已恢复并恢复到关闭状态;否则,熔断器将继续保持开启状态,延长恢复期。

2.3)反馈与恢复:熔断器不仅负责切断请求,还应具备状态监测与反馈机制,当问题服务恢复正常时能及时调整状态,重新允许请求通过。

二)服务降级

1、概念

服务降级是另一种应对系统压力、保障服务可用性的策略,它侧重于在系统负载过高、资源紧张或部分服务不可用的情况下,牺牲部分非核心功能或降低服务质量,以确保核心业务流程的正常运作。

服务降级本质上是一种服务层面的资源调度和优化措施,通过牺牲次要功能或提供简化版本的服务,来缓解系统压力,防止整体服务因局部问题而崩溃。

2、主要特点

服务降级的主要特点包括:

1)优先级划分:对系统中的各项服务或功能进行优先级划分,区分核心业务与非核心业务。在压力情况下,优先保障核心业务的稳定性和性能。

2)降级策略:针对不同非核心功能或服务,预先定义具体的降级策略。这些策略可能包括:

  • 功能禁用:暂时关闭非关键功能模块,如活动推荐、社交分享等。
  • 数据简化:返回简化的数据集或默认数据,如使用缓存数据替代实时查询结果,或展示静态页面代替动态加载内容。
  • 性能妥协:降低非关键服务的性能标准,如降低图片质量、减少数据刷新频率等。

3)触发与恢复:服务降级通常由系统监控、人工干预或预设规则触发,并在系统压力缓解、资源充足或服务恢复后撤销降级措施,恢复到正常服务状态。

三)服务熔断和服务降级的区别

服务熔断侧重于快速隔离故障服务,防止其对整个系统造成进一步影响,是一种防御性的故障隔离手段。

而服务降级则是在系统资源有限或部分服务不可用时,有策略地牺牲非核心功能,确保核心业务的连续运行,是一种主动的资源调配和风险控制策略。

两者相辅相成,共同构成了现代分布式系统应对复杂环境、保障服务稳定性的关键工具箱。

四)案例

当前系统中有商品服务,订单服务,用户服务三个服务。

商品服务属于上游;订单服务属于中游服务,用户服务属于下游。它们的调用链如下:

一旦下游用户服务因某些原因变得不可用,积压了大量请求,订单服务的请求线程也随之阻塞。线程资源逐渐耗尽,使得服务B也变得不可用。紧接着,商品服务也变为不可用,整个调用链路被拖垮。像这种调用链路的连锁故障,叫做雪崩。

为避免出现此类灾难级P0事故,我们引入了熔断和降级机制,下面看下它们是如何在整个调用链路中起作用的。

1、随着用户服务的预设的阈值(如错误率、超时次数、响应时间等)持续超出阈值或超过设定值,服务熔断器(如Hystrix)判断达到熔断条件,触发熔断机制。

2、熔断器将用户服务的状态切换为“开启”状态,阻止用户服务进一步向评论服务发送请求,防止请求堆积和资源浪费,甚至导致服务雪崩。

3、在用户服务熔断的同时,订单服务根据预设的降级策略开始执行服务降级操作。

1)对于非关键功能:如订单详情页中的用户头像加载、用户个性化推荐等非核心功能,可以暂时禁用或替换为默认内容。

2)对于依赖用户信息的核心流程:如创建新订单时需验证用户身份和余额,此时可启用降级逻辑,如使用缓存中的用户信息(可能存在数据延迟)、允许订单创建但标记为待验证状态,待用户服务恢复后异步校验。

4、运维团队收到报警后,紧急排查用户服务问题并进行优化或扩容。经过一段时间(如熔断器预设的恢复期)后,熔断器自动或手动进入“半开”状态,允许少量请求尝试访问用户服务以检测其是否已恢复。

5、如果用户服务响应正常,熔断器判定服务已恢复,将状态切换回“关闭”状态,恢复正常的请求调用;否则,继续保持“开启”状态或延长恢复期。

6、随着用户服务问题得到解决,系统负载回归正常,运维团队确认可以解除服务降级。订单服务接收到解除降级指令后,恢复所有被降级的功能和服务质量,至此,整个系统恢复正常运作!

觉得有用,点个赞、在看或者转发 再走呀❤️


最后,彩蛋来啦~

一支烟花AI社区过往的闭门分享,决定转成播客一支烟花AI播客公开了。

内容丰富而专业,都是一线的:AI开发前沿技术、AI开发AI应用开发者、AI产品、AI 创业者的闭门分享内容。

如:最近非常火的AI陪伴女友李洛云之父揭秘的开发过程、AI搜索(brainstorm.cool)大佬的创业心得、还有关于更多AIGC技术相关的混合专家模型(MoE)、AI Agent的实践经验等...

感兴趣的朋友们可以去订阅啦,强哥说要做100期!

另外想加入我们学习交流群的加我微信,拉你入群一起学习交流~

一支烟花AI播客

我的微信

原文作者:皇子谈技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-12-21

  • 博文量
    113
  • 访问量
    56528