跳到主要内容

写业务逻辑,
把运行交给平台。

事件与定时任务使用 Serverless 云函数;完整 Web 服务、任意语言和长连接使用 CloudRun 容器。两种形态都接入 CloudBase 资源。

Function · Container · Revision
compute / deploymentshealthy
order-service
function

create-order

Node.js · HTTP · LATEST

function

daily-report

Node.js · timer · v3

cloudrun

realtime-api

Container · WebSocket · 002

time · requestresourcestate
10:42:31 · req_81d2create-order200 · 84ms
10:42:28 · req_81c9realtime-apiconnected
02:00:00 · timer_42daily-reportcompleted
One request, visible end to end

从触发到资源访问,每一步都有上下文

请求 ID、运行版本和标准输出贯穿执行过程,便于定位一条请求在哪个函数或容器中发生了什么。

request executionobservable
01 · Trigger

请求进入计算层

SDK · HTTP · Timer

02 · Execute

运行函数或容器

Node.js Function · CloudRun

03 · Connect

访问后端资源

数据库 · 存储 · 外部 API

signalvaluestate
request_idreq_81d2traced
revisionorder-service@3stable
stdoutorder createdcollected

小任务用函数,完整服务用容器

计算形态按工作负载选择,不需要把所有后端逻辑塞进同一种运行时。

01

Node.js 云函数

以 CommonJS 入口处理 event 与 context,通过 NPM 依赖组合数据库、存储与第三方服务。

FUNCTION
02

事件与定时触发

通过 SDK、HTTP 或七段 Cron 定时器触发函数,让请求处理与后台任务使用同一运行形态。

TRIGGER
03

HTTP 访问

为 HTTP 云函数配置访问服务、自定义路径与域名,返回 JSON 或自定义集成响应。

HTTP
04

版本与灰度

发布不可变版本,在 LATEST 与稳定版本之间调整流量比例,逐步验证新代码。

REVISION
05

CloudRun 容器

需要任意语言、完整框架、长连接或多进程时,部署容器化云托管服务。

CONTAINER
06

日志与监控

以请求和版本为线索查看标准输出、调用次数、响应时间、HTTP 错误与资源使用。

OBSERVABILITY
Serverless 的价值不是隐藏代码,而是让团队把注意力从服务器生命周期移回请求、版本和业务结果。
产品设计原则
Fit the workload

不是函数与容器二选一,而是各就各位

函数承接短时事件任务;CloudRun 承接完整框架、流式响应和长连接服务。

比较计算形态
CHOOSE A RUNTIME
event taskNode.js 云函数
scheduled job定时触发器
web serviceCloudRun 容器
long connectionSSE / WebSocket

从一段函数,到可持续发布的服务

示例聚焦仓内已经文档化的 Node.js 函数、定时触发和 Docker 容器。

Node.js function

用 event 与 context 接住业务请求

index.js 导出异步 main 函数;event 包含触发数据,context 提供请求与执行上下文。

  • CommonJS 作为默认入口规范
  • NPM 管理第三方依赖
  • 返回值直接成为调用结果
index.js
// index.js
exports.main = async (event, context) => {
  const { sku, quantity = 1 } = event

  const order = await createOrder({
    sku,
    quantity,
    requestId: context.requestId
  })

  return {
    ok: true,
    orderId: order.id
  }
}
Timer trigger

用七段 Cron 描述周期任务

把报表、清理或同步任务配置为 timer 触发器,不需要单独维护常驻调度进程。

  • 一个函数可以配置多个触发器
  • 触发器名称在函数内唯一
  • 日与星期同时指定时按或关系生效
config.json
{
  "triggers": [
    {
      "name": "daily-report",
      "type": "timer",
      "config": "0 0 2 * * * *"
    }
  ]
}
CloudRun container

用 Dockerfile 带上完整运行环境

当服务需要任意语言版本、完整 Web 框架或长连接时,用容器定义依赖与启动方式。

  • 应用监听配置的 PORT
  • 标准输出进入服务日志
  • 服务、版本、实例构成资源层级
Dockerfile
FROM node:22-alpine

WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev

COPY . .
ENV PORT=8080
EXPOSE 8080

CMD ["node", "server.js"]
Compute ecosystem

同一计算层,承接不同后端工作负载

事件、接口、后台任务和完整服务都可以靠近 CloudBase 数据与身份能力运行。

01

事件任务

数据处理、消息通知与资源回调。

02

API 服务

HTTP 接口、Webhook 与第三方集成。

03

容器应用

完整框架、流式响应与长连接。

Node.jsNPMHTTPTimerCronVersion灰度发布DockerfileCloudRunSSEWebSocket日志监控
Run your backend

先匹配工作负载,再选择运行形态

从第一个云函数开始,或把现有容器服务直接带到 CloudRun。