随着云计算技术的发展,Serverless 架构真正实现了“无服务器”的理念,使开发者可以完全专注于业务逻辑而不必关注服务器的运维与调配等问题。在 Serverless 架构下,服务通过事件触发而自动处理,并且只有实际使用时才会付费,大大降低了成本。Serverless 并不意味着完全没有服务器,而是把服务器的管理交给云端平台,我们仅需要关注代码实现业务逻辑。
Serverless 也被称作 FaaS(Function as a Service),是使用函数编程的方法构建和运行应用程序的一种云服务模型,同时也是一种基于事件驱动的架构。随着 FaaS 的流行,云平台为开发者准备了一整套用于开发、构建和部署 FaaS 的工具和服务,以加速应用程序的开发和部署。
在 Serverless 架构下,我们可以通过几种方式来调用云服务。
直接调用 Cloud API
这种方式比较简单直接,适合于 Serverless 项目只需要调用云服务的一个 API 接口时。在此情况下,您可以直接使用云平台 SDK 中提供的 API 调用相关函数,实现与云服务的交互。
例如 AWS 的 API Gateway 提供了一个 RESTful API,允许云服务通过 HTTP/HTTPS 的方式调用。开发者可以使用 AWS 的 SDK 进行调用,实现与 API Gateway 的交互。
以下是一个简单的 AWS API Gateway 的示例代码:
-- -------------------- ---- ------- ----- --- - ------------------- ----- -------- - ----------------------- ----- --- - --- ---------------- --------- -------- --- --------------- - ----- --------------- -------- - --- - ----- -------- - ----- ------------------------------ ---------------------- ------ - ----------- ---- ----- ------------------------- -- - ----- ----- - ----------------- ------ - ----------- ---- ----- -------------------- -- - --展开代码
通过云函数调用
大多数云平台都提供了 Serverless 服务,您可以使用云函数(如 AWS Lambda、Azure Function)等直接调用其他云服务或自己的 RESTful API,以实现处理请求的业务逻辑。这种方式下,我们可以使用云函数对请求进行处理和转换,并将请求转发到其他服务端点。
以下是一个简单的 AWS Lambda 调用 AWS SNS 的示例代码:
-- -------------------- ---- ------- ----- --- - ------------------- ----- --- - --- --------- ----------- ------------- ------- ---------------- --- --------------- - ----- --------------- -------- - ----- ------- - ------------- -- --- --------- ----- ------- - ------------- -- --- --- - ----- ------ - ----- ------------- -------- -------- -------- -------- --------- --------------- ------------- -------------------- ------ - ----------- ---- ----- ------------- ---- -------------- -- - ----- ----- - ----------------- ------ - ----------- ---- ----- ------ --- -- ----- ----- ------- --- ------------- -- - --展开代码
使用云平台中间件调用
云平台通常提供了中间件服务,例如 AWS 的 SNS、SQS 和 S3 等。中间件服务可以减少系统的复杂性,同时提供了可扩展和高可用性的系统组件。
使用云中间件服务时,我们可以通过调用服务API将数据直接存储到相关服务中,而不需要编写转发逻辑的代码。例如,假设有一个使用 AWS S3 服务存储图片的应用程序。我们可以通过使用 AWS SDK 来在云中存储图片数据,而无需编写自己的转发代码。
以下是一个简单的 AWS S3 存储图片的示例代码:
-- -------------------- ---- ------- ----- --- - ------------------- ----- -- - --- -------- ----------- ------------ --- --------------- - ----- --------------- -------- - ----- ------ - ------------------- ----- --- - ---------------- ----- ---- - ---------------- --- - ----- ------ - ----- -------------- ------- ------- ---- ---- ----- ----- ------------- -------------------- ------ - ----------- ---- ----- ------ -------- -------------- -- - ----- ----- - ----------------- ------ - ----------- ---- ----- ------ --- -- ----- ----- --------- --- ------ -- - --展开代码
使用云平台事件服务调用
在 Serverless 架构中,云平台的事件服务是实现跨服务调用的重要组件。事件驱动的 Serverless 应用程序通常都是基于事件服务构建的。
事件服务让您可以在不同的业务逻辑之间引入事件,并使得这些逻辑解耦,这是 AWS Step Functions 和 Azure Logic Apps 的所基于的概念。作为开发者,您可以从源头定义事件,实现跨功能的数据传递。AWS Step Functions 直接集成于多种 AWS 服务,如 AWS Lambda、Amazon S3、Amazon DynamoDB,可以让某个事件 trigger 到多个源,并可以实现条件执行,与编排多级 Lambda 函数。
以下是一个简单的 AWS Step Functions 事件流管道的示例代码:
-- -------------------- ---- ------- - ---------- --------------- --------- - --------------- - ------- ------- ----------- ------------------------------- -------- - ---------- ---- ------- ---- ---- ---------- ---- ------- ----- -- ---- ----------- --------------- -- ------ ---- - - -展开代码
在 Serverless 架构下,您可以选择上述任意一种或多种方式来调用云服务,具体取决于您的应用所需的功能和业务逻辑。Serverless 让我们像拼 LEGO 一样,组合并快速构建所需的程序,极大地提高了开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c423056e1fc40e36cfe33b