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

简介: 抢占式实例在提供低至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% 左右。
850 99
|
前端开发 JavaScript API
vue3-ts-storybook:理解storybook、实践 / 前端组件库
vue3-ts-storybook:理解storybook、实践 / 前端组件库
942 0
|
人工智能 弹性计算 安全
创新场景丨元空智能:AI 工具创业,如何抓住新时代的出海机遇
大模型创业的本质是兑现新技术价值,而乘云出海,不仅是技术的输出,更是中国创新走向世界的一次实践。
|
11月前
|
人工智能 API 数据库
MCP Server 开发实战 | 大模型无缝对接 Grafana
以 AI 世界的“USB-C”标准接口——MCP(Model Context Protocol)为例,演示如何通过 MCP Server 实现大模型与阿里云 Grafana 服务的无缝对接,让智能交互更加高效、直观。
3441 124
|
11月前
|
存储 算法 C++
Windows共享文件:探秘C++实现的B树索引算法奇境
在数字化时代,Windows共享文件的高效管理至关重要。B树算法以其自平衡多路搜索特性,在文件索引与存储优化中表现出色。本文探讨B树在Windows共享文件中的应用,通过C++实现具体代码,展示其构建文件索引、优化数据存储的能力,提升文件检索效率。B树通过减少磁盘I/O操作,确保查询高效,为企业和个人提供流畅的文件共享体验。
|
12月前
|
存储 供应链 监控
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
弹性计算
阿里云3M带宽云服务器并发多大?阿里云3M带宽云服务器测评参考
在探讨云服务器3M带宽能支持多大并发这一问题时,我们首先要明白一个关键点:并发量并非仅由带宽决定,还与网站本身的大小密切相关。一般来说,一个优化良好的普通网站页面大小可能只有几K,为便于计算,我们可以暂且假定每个页面大小为50K。
1761 1
|
存储 人工智能 NoSQL
表格存储:为 AI 注入“记忆”,构建大规模、高性能、低成本的 Agent Memory 数据底座
本文探讨了AI Agent市场爆发增长背景下的存储需求,重点介绍了Tablestore在Agent Memory存储中的优势。2025年被视为AI Agent市场元年,关键事件推动技术发展。AI Agent的存储分为Memory(短期记忆)和Knowledge(长期知识)。Tablestore通过高性能、低成本持久化存储、灵活的Schemaless设计等特性满足Memory场景需求;在Knowledge场景中,其多元索引支持全文、向量检索等功能,优化成本与稳定性。实际案例包括通义App、某浏览器及阿里云多项服务,展示Tablestore的卓越表现。最后邀请加入钉钉群共同探讨AI技术。
2471 16
|
分布式计算 Kubernetes Spark
米哈游大数据云原生实践
近年来,容器、微服务、Kubernetes 等各项云原生技术的日渐成熟,越来越多的公司开始选择拥抱云原生,并开始将 AI、大数据等类型的企业应用部署运行在云原生之上。以 Spark 为例,在云上运行 Spark 可以充分享有公共云的弹性资源、运维管控和存储服务等,并且业界也涌现了不少 Spark 。
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
384 5
linux系统服务二!

热门文章

最新文章