11 Serverless服务提供商之Google Cloud Functions

在前一篇文章中,我们深入探讨了Azure Functions及其在Serverless架构中的角色。现在,让我们转向另一重要的Serverless服务提供商——Google Cloud Functions。作为Google Cloud平台的一部分,Google Cloud Functions为开发者提供了一个轻量级的事件驱动计算服务,让他们能够快速编写、部署和管理代码,而无需担心底层基础设施的维护。

什么是Google Cloud Functions?

Google Cloud Functions是一个以事件为驱动的小功能(函数),它允许开发者在特定事件发生时自动执行代码。这个服务支持多种编程语言,包括Node.js、Python、Go等,使其适用于各种应用场景。借助Google Cloud Functions,开发者可以轻松实现响应式编程,从而快速响应HTTP请求、文件上传、消息队列事件等。

Google Cloud Functions的基本组件

在使用Google Cloud Functions之前,了解其基本组成部分尤其重要。主要有以下几个组成部分:

  1. 函数:执行特定任务的代码块。
  2. 触发器:事件源,当事件发生时触发函数的执行。
  3. 输入和输出:函数可以接收输入数据并返回输出结果。

案例:创建一个简单的HTTP触发器

接下来,我们通过一个简单的示例来展示如何使用Google Cloud Functions。我们将创建一个能够响应HTTP请求的函数,该函数将接受一个名字并返回一条问候消息。

步骤1:创建Google Cloud项目

首先,你需要在Google Cloud Console中创建一个新的项目。确保你已经激活了Cloud Functions API。

步骤2:编写函数代码

我们将在Node.js环境中创建一个简单的HTTP函数。以下是代码示例:

1
2
3
4
5
6
const functions = require('firebase-functions');

exports.greet = functions.https.onRequest((request, response) => {
const name = request.query.name || 'World';
response.send(`Hello, ${name}!`);
});

在上面的代码中,我们使用了firebase-functions库来定义一个HTTP触发器的函数。这个函数从请求的查询参数中获取名字,如果没有提供名字,它将默认问候“World”。

步骤3:部署函数

要部署这个函数,请确保你已经安装了Firebase CLI,然后执行以下命令:

1
firebase deploy --only functions

一旦部署成功,Firebase将为该函数分配一个URL,你可以通过在浏览器中访问该URL来测试函数。例如,如果函数的URL是 https://us-central1-yourproject.cloudfunctions.net/greet,你可以通过访问以下地址来获得问候信息:

1
https://us-central1-yourproject.cloudfunctions.net/greet?name=John

此时,你应该看到返回的消息:Hello, John!

事件驱动的架构

Google Cloud Functions的一个重要特性是其支持的事件驱动架构。除了HTTP触发器,Google Cloud Functions还可以响应多种事件,例如:

  • Cloud Storage:处理文件上传、删除等事件。
  • Cloud Pub/Sub:响应消息传递。
  • Firebase Realtime Database 或 Firestore:数据库变化时触发。

案例:处理文件上传事件

接下来,我们来看一个处理文件上传事件的示例。设想我们有一个图像上传到Cloud Storage后,我们希望自动生成一个缩略图。

步骤1:创建上传触发器

首先,我们需要创建一个新的函数来处理文件上传。以下是相关代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const Sharp = require('sharp');

admin.initializeApp();

exports.resizeImage = functions.storage.object().onFinalize(async (object) => {
const filePath = object.name;
const bucketName = object.bucket;
const bucket = admin.storage().bucket(bucketName);
const file = bucket.file(filePath);

const originalImage = await file.download();
const resizedImage = await Sharp(originalImage[0]).resize(100, 100).toBuffer();

const newFilePath = filePath.replace(/(\/)?([^\/]*)$/, '/thumb_$2');
await bucket.file(newFilePath).save(resizedImage);

console.log(`Resized image created at: ${newFilePath}`);
});

在这个函数中,我们使用Sharp库来实现图像的缩放。当新图像文件上传到指定的Cloud Storage Bucket时,此函数就会触发,生成一个缩略图并保存到同一Bucket中。

总结

本文介绍了Google Cloud Functions的基本概念和使用方法,并通过简单的HTTP触发和文件上传事件进行了演示。凭借托管的Serverless架构,Google Cloud Functions允许开发者集中精力在业务逻辑的实现上,而不必担心底层的基础设施。

在下一篇文章中,我们将讨论如何开始使用Serverless架构,并设置相应的开发环境,帮助您更好地进行Serverless开发工作。期待与大家的继续探索!

11 Serverless服务提供商之Google Cloud Functions

https://zglg.work/serverless-architecture-zero/11/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论