在自动化脚本中如何使用云原生和FaaS?

在移动自动化、设备集群管理与业务流程定制场景中,传统开发常面临服务器运维成本高、部署繁琐、弹性不足、前后端割裂等问题。云原生FaaS(函数即服务) 作为核心 Serverless 实现方案,让开发者无需关注服务器、容器、扩容与运维,只需用 JavaScript 编写轻量函数,即可快速扩展 SaaS 能力、搭建独立后端、实现跨端调用与批量设备调度。

一、冰狐云原生与 FaaS 核心架构解析

冰狐云原生原生支持 FaaS、BaaS 与事件驱动,FaaS 是其轻量化、高弹性的核心实现模式,属于典型 Serverless 架构。平台底层由 JS 引擎驱动,提供模块化管理、高并发访问、数据库操作、设备管理等原生能力,整体架构清晰分层:

  • 接入层:移动端接口、服务端 Open API、业务处理服务、通用数据服务统一入口;
  • 执行层:FaaS JS 脚本运行时,负责函数调度、参数透传、逻辑执行;
  • 支撑层:冰狐 SaaS(用户 / 设备 / 脚本管理)、数据库、系统服务,提供底层能力支撑;
  • 伸缩层:平台自动根据流量弹性扩缩容,无需人工干预。

这种架构让 FaaS 脚本成为轻量微服务,既可扩展标准 SaaS 功能,也能独立承载后端逻辑,完美适配自动化脚本的灵活定制需求。

二、冰狐 FaaS 核心能力

冰狐 FaaS 基于 JavaScript 开发,零服务器依赖、零复杂部署,核心能力覆盖四大场景,精准解决自动化开发痛点:

  1. 扩展冰狐 SaaS 定制能力标准 SaaS 满足通用需求,特殊业务可通过 FaaS 注入扩展,无需改造平台底层;
  2. 快速搭建独立后端替代传统后端开发,省去服务器采购、运维、框架搭建,用 JS 实现接口、数据处理;
  3. 跨端统一调用支持移动端脚本、第三方服务端双向调用,打通前端自动化与后端逻辑;
  4. 批量设备调度与数据操作支撑多设备批量执行、数据库增删改查、网页端触发业务,适配集群自动化场景。

三、FaaS 四大调用方式与 Demo 实战

冰狐 FaaS 提供移动端接口、服务端 Open API、业务处理服务、通用数据服务四种调用方式,覆盖全场景开发需求,以下结合官方 Demo 详解用法与源码。

(一)移动端调用 FaaS

移动端脚本通过callMicroService函数调用 FaaS,指定脚本名、函数名(默认 main),参数透传,返回值直接接收,适用于移动端需访问数据库、获取设备信息等场景。

移动端脚本 Demo(前端自动化)
javascript 复制代码
// 移动端脚本:调用FaaS接口call_demo,传递字符串和数字参数
function main() {
    // 调用格式:callMicroService(脚本名, [参数数组])
    var result = callMicroService("call_demo", ["冰狐自动化", 2025]);
    // 打印FaaS返回结果
    console.log("FaaS返回结果:" + result);
    // 前端提示
    toast("调用成功,结果:" + result);
}
FaaS 服务端脚本 Demo(后端逻辑)
javascript 复制代码
// FaaS脚本:对应接口call_demo,接收移动端参数并处理
function main(name = "", value = 0) {
    console.log("接收参数------name:" + name + ",value:" + value);
    // 业务逻辑:字符串拼接+数值计算
    return name + " | 年份:" + value;
}

(二)第三方服务端调用 FaaS

第三方系统通过/api/call_micro_service接口调用 FaaS,携带鉴权参数、脚本名、参数列表,实现跨平台集成,适用于外部系统触发自动化任务。

调用请求示例
javascript 复制代码
https://aznfz.com/api/call_micro_service?clientKey=你的密钥&accessToken=你的令牌&name=call_demo&isDev=true&params=["冰狐自动化",2025]
FaaS 脚本(同移动端调用,无需修改)
javascript 复制代码
function main(name = "", value = 0) {
    console.log("第三方调用参数:" + name + "," + value);
    return "第三方响应:" + name + value;
}

(三)业务处理服务:网页端触发批量设备自动化

适用于网页端输入参数、触发云端 FaaS、控制多设备执行任务,支持整数、字符串、文件、动态选项等参数类型,是批量设备调度的核心方案。

实战需求:100 台手机批量调度执行自动化脚本
  • 按顺序启动每台手机的test自动化脚本;
  • 支持自定义启动间隔(最小 / 最大毫秒数);
  • 传递自定义url参数至移动端脚本。
步骤 1:创建业务处理服务
  1. 网页端进入【FaaS】-【业务处理】,新建device_schedule服务;
  2. 添加 3 个参数:
    • url(字符串,任务链接);
    • minInterval(整数,最小间隔);
    • maxInterval(整数,最大间隔)。
步骤 2:FaaS 调度脚本 Demo
javascript 复制代码
// 核心调度函数:接收业务参数,批量控制在线设备
function main(url, minInterval, maxInterval) {
    console.log("调度参数------url:" + url + ",最小间隔:" + minInterval + ",最大间隔:" + maxInterval);
    // 获取所有设备列表
    var deviceList = deviceList();
    for (var device of deviceList) {
        // 仅调度在线设备
        if (device.onlineState === 1) {
            console.log("执行设备:" + device.uuid);
            // 调用移动端test脚本,透传url参数
            scriptExe("test", device.uuid, [url], true);
            // 随机延时:避免并发过高
            var sleepTime = Math.random() * (maxInterval - minInterval) + minInterval;
            sleep(sleepTime);
            console.log("延时:" + sleepTime + "毫秒");
        }
    }
    console.log("批量调度完成");
}
步骤 3:移动端接收参数脚本 Demo
javascript 复制代码
// 移动端test脚本:接收FaaS透传的url参数并执行
function main(url) {
    console.log("接收调度url:" + url);
    toast("开始执行任务:" + url);
    // 此处添加自动化逻辑(如打开网页、点击控件等)
    // 示例:打开指定url
    app.openUrl(url);
}

(四)通用数据服务:数据库 CRUD 与表格操作

通用服务基于数据库表格,实现数据增删改查、批量处理,适配自动化数据持久化场景,内置dbQuery/dbInsert/dbUpdate/dbDelete等数据库 API。

1. 数据查询 Demo
javascript 复制代码
// 查询函数:支持分页、条件筛选、统计总数
function query(fetchCountOnly, conditions, startIndex, itemCount) {
    var queryParams = [];
    // 构建查询条件
    for (var item of conditions) {
        if ((item.name === "uuid" || item.name === "name") && strIsNotEmpty(item.value)) {
            queryParams.push(`${item.name}="${item.value}"`);
        }
    }
    // 仅查询总数
    if (fetchCountOnly) {
        var countResult = dbQuery("device_table", "count(id) as count", queryParams);
        return countResult[0].count;
    }
    // 分页查询数据
    return dbQuery("device_table", "*", queryParams, "", startIndex, itemCount);
}
2. 数据新增 Demo
javascript 复制代码
// 新增数据:接收前端参数,插入数据库
function confirmAdd(itemIds, params) {
    var dataObj = {};
    // 转换参数格式
    for (var p of params) {
        dataObj[p.name] = p.value;
    }
    // 执行插入
    var insertResult = dbInsert("device_table", dataObj);
    console.log("新增结果:" + insertResult);
    return insertResult;
}
3. 数据删除 Demo
javascript 复制代码
// 删除数据:批量删除指定ID数据
function confirmDelete(itemIds, params) {
    var deleteResult = false;
    for (var id of itemIds) {
        deleteResult = dbDelete("device_table", [`id=${id}`]);
        console.log("删除ID:" + id + ",结果:" + deleteResult);
    }
    return deleteResult;
}

四、冰狐 FaaS 开发核心规范

  1. 函数入口 :默认入口为main函数,参数与调用方一一对应;
  2. 参数类型:支持整数、浮点数、布尔、字符串、文件、动态选项;
  3. 原生 API :内置deviceList(设备列表)、scriptExe(执行脚本)、dbQuery(数据库查询)、sleep(延时)等自动化专用 API;
  4. 模块化:支持多脚本拆分、函数复用,便于复杂业务维护;
  5. 日志调试 :通过console.log打印日志,网页端实时查看调试。

五、冰狐云原生 FaaS 优势总结

  1. 零运维成本:无需服务器、容器、运维,平台自动弹性伸缩;
  2. 低开发门槛:纯 JS 开发,前后端语法统一,自动化开发者快速上手;
  3. 高灵活性:四种调用方式覆盖全场景,可扩展 SaaS、独立建后端、控设备;
  4. 强集成性:打通移动端、第三方服务、网页端,实现自动化全链路闭环;
  5. 高性能稳定:JS 引擎高效执行,支持高并发,适配批量设备调度场景。

六、结语

本文详细介绍了将云原生FaaS深度融入自动化脚本开发,彻底重构了传统移动自动化的开发模式。从单设备自动化到集群调度,从前端逻辑到后端服务,从简单扩展到复杂业务定制,开发者只需聚焦业务逻辑,用轻量 JS 函数即可实现全栈能力。

相关推荐
密瓜智能1 小时前
国产 GPU 如何丝滑融入 K8s?燧原科技的全栈云原生实践
云原生·kubernetes·ai算力
步步为营DotNet1 小时前
深挖.NET 11:.NET Aspire 引领云原生开发新高度
云原生·.net
ILL11IIL13 小时前
k8s的pod管理及优化
云原生·容器·kubernetes
倔强的胖蚂蚁14 小时前
主流大模型使用指南:Gemma/Llama 全流程
云原生·llama
阿里云云原生18 小时前
从 Token 级观测到标准化治理:LoongSuite 如何补齐 OpenTelemetry 的 AI 可观测短板?
云原生
沧州刺史19 小时前
k8s 拉取镜像时,请求提前断开(EOF)导致拉取失败
云原生·容器·kubernetes
2501_9127840819 小时前
告别“汗水出海”:基于微服务架构的跨境电商系统设计与实现——以Taocarts为例
微服务·云原生·架构·taocarts
牛奶咖啡1320 小时前
k8s容器编排技术实践——k8s的介绍及其整体运行架构
云原生·kubernetes·k8s是什么?有啥用?·k8s的应用场景·k8s的优缺点边界·k8s的重要概念·k8s的整体运行架构
狼与自由20 小时前
微服务的演化过程
微服务·云原生·架构