抢占式实例接收中断消息指南

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
轻量应用服务器 2vCPU 1GiB,适用于搭建电商独立站
简介: 抢占式实例在提供低至1折的极大优惠之外, 同时带来了实例有可能被中断之痛. 本文总结了几种方式, 方便您感知中断信息, 缓解中断影响。

前言

由于抢占式实例天然具有被中断的风险,并且在实例中断前至少5分钟,系统会向您发送中断消息。因此如果您的应用对中断敏感,就需要格外注意如下两点:

• 恰当地接收中断事件
• 合理地处理中断

关于第一点, 本文总结了几种接收中断事件的方式,欢迎各位体验接入。

方式1: 云监控对接, 事件触发方式

所有抢占式实例中断消息都会作为系统事件, 投递到云监控。云监控提供了强大的能力, 您可以在云监控订阅该事件, 并将事件投递到需要的消费的地方, 例如:
• 投递到MQ消息队列, 方便与您系统对接, 并执行相应代码
• 投递到SLS日志服务, 方便进行中断统计
• 投递到邮件/钉钉/短信等通道, 方便您能收到提醒.
• 投递到自定义的函数中, 方便进行中断处理
• 等等...

image.png

第一步: 配置实例中断事件

1. 创建事件报警

"云监控" > "事件监控" > "报警规则" > "系统事件" > "创建事件报警"

image.png

2. 选择合适事件

事件类型: "抢占式实例中断通知"

image.png

第二步: 投递实例中断事件

1. 投递到消息队列(MNS)
(1)创建消息队列(MNS)

• 进入消息队列控制台
• 创建&配置队列

image.png

(2)投递抢占式实例中断消息到MNS

image.png

(3)应用接入MNS SDK
此步骤不再赘述, 具体参见 MNS文档

2. 投递到函数计算

(1)创建中断处理函数
函数计算控制台->新建函数->事件函数->配置函数(此处以python2.7为例)

image.png

(2)编写中断处理函数

image.png

函数样例代码如下:

# -*- coding: utf-8 -*-
import logging
import json, random, string, time
LOGGER = logging.getLogger()
clt = None
def handler(event, context):
  '''
  {
    "product": "ECS",
    "resourceId": "acs:ecs:cn-shanghai:1331602849963181:instance/i-abcdef",
    "level": "WARN",
    "instanceName": "instanceName",
    "regionId": "cn-hangzhou",
    "name": "Instance:PreemptibleInstanceInterruption",
    "content": {
        "instanceId": "i-abcdef",
        "action": "delete"
    },
    "status": "Normal"
}
  '''
  evt = json.loads(event)
  content = evt.get("content");
  regionId = evt.get("regionId");
  instanceId = content.get("instanceId");
  LOGGER.info( regionId + " " + instanceId + " termination ongoing");

3. 测试中断处理函数

使用如下触发事件样例, 进行"Invoke"测试:

{
    "product": "ECS",
    "resourceId": "acs:ecs:cn-shanghai:1331602849963181:instance/i-abcdef",
    "level": "WARN",
    "instanceName": "instanceName",
    "regionId": "cn-hangzhou",
    "name": "Instance:PreemptibleInstanceInterruption",
    "content": {
        "instanceId": "i-abcdef",
        "action": "delete"
    },
    "status": "Normal"
}

image.png

image.png

第三步: 模拟投递消息, 进行链路调试

前两步对接完成之后, 怎么能验证代码是正确的呢? 云监控提供强大的调试功能, 能模拟消息产生, 方便进行调试:

image.png

抢占式实例中断消息, 模拟内容如下:

{
    "product": "ECS",
    "resourceId": "acs:ecs:cn-shanghai:1331602849963181:instance/i-abcdef",
    "level": "WARN",
    "instanceName": "instanceName",
    "regionId": "cn-hangzhou",
    "name": "Instance:PreemptibleInstanceInterruption",
    "content": {
        "instanceId": "i-abcdef",
        "action": "delete"
    },
    "status": "Normal"
}

方式2: 直接API对接, 轮询方式

具体请参见: 查询抢占式实例中断事件 一文。

相关文章
|
消息中间件 人工智能 运维
左手医生:医疗 AI 企业的云原生提效降本之路
通过使用阿里云云原生等产品,左手医生项目的上线时间缩短了 67%,运维效率提升 70% 左右,消息处理的效率也提升了 80% 左右。
739 95
|
人工智能 弹性计算 安全
创新场景丨元空智能:AI 工具创业,如何抓住新时代的出海机遇
大模型创业的本质是兑现新技术价值,而乘云出海,不仅是技术的输出,更是中国创新走向世界的一次实践。
|
9月前
|
存储 供应链 监控
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
机器学习/深度学习 人工智能 测试技术
阿里云百炼已上线超强推理开源模型QwQ-32B,尺寸更小,性能比肩DeepSeek满血版
通义千问团队推出了320亿参数的QwQ-32B模型,通过大规模强化学习和多阶段训练,在数学、编程及通用能力上达到或超越了DeepSeek-R1等先进模型。QwQ-32B模型已在阿里云百炼上线,支持API调用,用户可通过官方文档了解详细使用方法。未来,团队将继续探索智能体与RL集成,推动人工通用智能的发展。
9095 0
|
数据采集 弹性计算 供应链
阿里云服务器付费模式:按量付费、包年包月和抢占式实例全解析
阿里云服务器提供包年包月、按量付费与抢占式实例三种付费模式。包年包月为预付费,适合长期稳定使用,价格更优惠并支持备案。按量付费则为后付费模式,按小时结算,适合短期或访问量波动大的场景,但不支持备案。抢占式实例基于按量付费,价格更低(最多节省90%),适用于无状态应用,如临时测试或可弹性伸缩的Web服务,但存在被系统释放的风险,同样不支持备案。根据具体需求选择合适的付费模式能够有效降低成本并提高效率。
816 1
|
缓存 云计算
这个夏天,追光动画在阿里云上“绘出”《长安三万里》
追光动画已和阿里云合作多年,从《阿唐奇遇》到《白蛇2:青蛇劫起》、《新神榜:杨戬》和这次的《长安三万里》等。
这个夏天,追光动画在阿里云上“绘出”《长安三万里》
|
消息中间件 负载均衡 Java
常见的负载均衡策略有哪些?
常见的负载均衡策略有哪些?
1990 3
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
432 0
|
监控 Ubuntu Linux
【超详细】Linux系统之nethogs命令
NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是依照进程进行带宽分组。 NetHogs不需要依赖载入某个特殊的内核模块。 假如发生了网络堵塞你能够使用NetHogs立即看到哪个PID形成的这种情况。 这样就很容易找出哪个程序突然长时间占用你的带宽。 NetHogs是一个类似于Linux的top指令的开源的指令行东西,用来按进程或程序实时计算网络带宽使用率,它能够直观的显示每个进程占用的带宽。
614 0
【超详细】Linux系统之nethogs命令
|
弹性计算 监控 Serverless
当 Rokid 遇上函数计算
当 Rokid 遇上函数计算

热门文章

最新文章