全面解析Serverless PHP功能、用例和优劣势

无服务器计算是一种基于云的执行模型,可以将应用程序作为服务托管,而无需维护服务器。

服务提供商维护服务器上的资源分配,并根据实际使用情况向用户收费。焦点转移到一个人正在创建的核心应用程序上,基础设施完全由服务提供商处理。无服务器计算也称为功能即服务 (FaaS)。

换句话说,Serverless PHP是带有PHP后端的无服务器计算的实现, 给你一个例子。

在本指南中,我们将仔细研究Serverless PHP的含义、其主要特性和优缺点,以便您更好地理解这种云计算方法。

具体来说,我们将了解无服务器计算的概念、它的用例和范围、优点和缺点、使用Bref的无服务器PHP的简单实现以及无服务器PHP在三大巨头(亚马逊、微软和谷歌)上的状态。

传统上,您需要服务器硬件才能在Internet上设置应用程序。服务器机器(或机器)将物理连接到Internet,以便某人访问您的应用程序。服务器维护是一件昂贵的事情。

接下来,托管服务的发展允许网站管理员购买托管空间——每台服务器可以容纳多个应用程序。这降低了成本。

随着云计算的兴起,规模经济进一步降低了成本,因为您可以在大型远程服务器场上租用少量空间。事实上,无服务器计算允许您只为使用的服务付费。不使用时,您实际上没有使用云上的任何空间或资源。

无服务器计算简化了软件开发过程:它允许组织只专注于开发,而不用担心部署、服务器维护和扩展。

Serverless PHP:基础知识

Google上“Serverless”一词的趋势

Google上“Serverless”一词的趋势

要部署Serverless PHP应用程序,您应该首先探索无服务器计算的概念。虽然Serverless一词自2012年在ReadWrite上首次出现在这篇关于软件开发未来的文章中,但随着2014年AWS Lambda的推出,它开始流行起来。

在本节中,让我们关注与无服务器计算相关的几个关键概念,并尝试回答围绕这项技术的一个常见问题:它真的是server-“less”吗?

Serverless PHP的特点

部署是一项简单的任务,无需管理服务器。您只需将代码上传到服务器,其余的由供应商处理。无服务器技术允许您拥有与语言无关的功能,并相互交互。

例如,如果您有一个消息传递应用程序,则登录模块可能用一种语言编码,而更新您的状态的功能可能用另一种语言编码。

虽然在没有无服务器托管的情况下这仍然是可能的,但交互起来肯定更加困难。每当一个动作触发你的函数时,就会产生一个实例来处理它。

生成实例的过程可能是“暖”的,即使用现有实例,也可能是“冷”的,即启动新实例。与传统托管相比,此过程有一点延迟,尤其是冷启动,在传统托管中,您的服务器始终处于待机模式以处理请求。

但是,当您需要处理大量请求时,无服务器和传统托管之间的情况会完全相反。可扩展性天生就来自于无服务器技术。如果您突然需要一千个并发请求,供应商将在您无需任何额外工作或配置的情况下处理它们。

Serverless PHP真的是无服务器的吗?

不要让“Serverless”一词让您感到困惑。这并不意味着“服务器”不存在。当您使用无服务器应用程序时,后台有一个服务器来处理您的输入并计算必要的输出。

从开发人员的角度来看,术语中存在“-less” ,他们从不接触服务器的各种元素。因此,如果您部署一个Serverless PHP应用程序,则会在云上运行一个实际的服务器来满足请求。

BaaS与Serverless架构

虽然“无服务器计算”没有严格定义,但它也可能指BaaS(后端即服务)应用程序。BaaS也指云计算模型,其中服务器操作外包给第三方,开发人员只需要专注于创建和维护软件。

BaaS和无服务器之间的主要相似之处在于开发人员不专注于服务器管理。许多组织在同一个保护伞下提供BaaS和FaaS包。

以下是BaaS和无服务器计算之间的主要区别

  • 组件:BaaS应用程序与传统应用程序类似,开发人员可能不会对其结构进行更改以适应BaaS。在无服务器中,应用程序被划分为称为函数的逻辑部分,每个函数都响应一个事件并执行特定的任务。
  • 可扩展性:可扩展性是无服务器应用程序的关键组成部分——随着流量的增加,分配的资源更多。它不是BaaS应用程序的必需模块,尽管一些服务提供商将其作为附加组件提供。
  • 触发器:无服务器应用程序是事件驱动的,这意味着特定活动每次发生时都会触发应用程序。另一方面,BaaS应用程序可能会像传统应用程序一样在后台持续使用资源。
  • 模块化架构:在无服务器架构中,应用程序的各种功能可以在不同的服务器上驻留和执行,但由于它们的集成而无缝运行。BaaS应用程序可能会也可能不会遵循此结构。

Serverless PHP:用例

我们已经讨论了无服务器计算的各个方面,以及它与BaaS的不同之处。虽然我们已经介绍了无服务器计算的基础知识,但让我们探讨一下您可能希望采用这种架构的情况。

您可能已经意识到,在无服务器技术上托管复杂的应用程序可能不是一个好主意。但是,即使您决定不通过Serverless PHP部署完整的应用程序,您也可以部署模块。

我们将在本节讨论无服务器堆栈的两个实现示例:数据库文件存储

无服务器数据库是一种按需数据库,可让您在需要时执行查询。由于无服务器堆栈,扩展很容易,并且供应商仅按您使用资源的时间量向您收费。

Amazon Aurora和Google Cloud Datastore是当今市场上可用的无服务器数据库的示例。Serverless文件存储系统被实现为对象存储。文件在文件系统中不被视为层次结构,而是被视为对象,其中包含文件本身的数据及其元数据。存储和检索是通过类似REST-like API进行的。

IBM Cloud为您提供对象存储服务。无服务器应用程序的其他常见用例是API和移动后端,其设计基于小型、逻辑、相互依赖的功能。

Serverless PHP:优势

在本节中,我们将探讨无服务器计算的主要优势以及它近年来受到关注的原因。

降低服务器成本

从理论上讲,与传统托管相比,无服务器计算可以降低成本。内在原因很简单:您在特定时间内使用该服务,并且在空闲时间没有维护成本。但是,如果您随着时间的推移面临持续的流量,采用无服务器架构可能不会导致成本有太大差异。

更容易部署

部署无服务器服务不需要您设置和配置服务器。无服务器应用程序的部署也是通过简单的功能。创建应用程序的版本并使其在云上可用更容易。因此,整个部署过程更容易、更高效。

可扩展性

在传统的设置中,需要付出很多努力来扩大规模以迎合更高的流量。另一方面,当流量增加时,服务提供商会负责资源分配。因此,当您部署到无服务器架构时,更容易扩展。

Serverless PHP:缺点

虽然无服务器计算有其相当多的优势,但在投入使用之前必须意识到它的潜在缺点。

性能

用户强调无服务器计算的主要问题是性能下降。虽然它是事件驱动的,但生成一个微实例来服务请求需要几百毫秒。

对于时间要求严格的应用程序,这种滞后可能会变得很重要。随着应用程序复杂性的增加,位于不同位置的组件会增加这种延迟。这种附加的时间延迟可能被证明对用户体验有害。

(推荐阅读:使用Gatsby和WordPress构建网站简介)

Vendor Lock-In

虽然无服务器架构允许您只专注于您的代码,但供应商可以完全控制基础架构。因此,如果您使用无服务器,则无法更改供应商,因为迁移可能是一项艰巨的任务。

调试

供应商负责无服务器应用程序的端到端部署。因此,开发人员必须依赖供应商提供适当的调试日志。调试无服务器应用程序以确定根本原因的过程也很困难。

Serverless PHP:在Lambda上使用Bref入门

虽然我们已经探索了无服务器架构,但现在我们将了解通过无服务器服务部署PHP应用程序所需的条件。

正如您可能已经猜到的那样,无服务器应用程序的部署高度特定于供应商。因此,这篇文章试图解决在Amazon AWS上实现Serverless PHP应用程序的问题。Bref或法语中的brief是一个Composer包,它允许您通过Lambda在AWS上部署PHP应用程序。

Bref不断发展,因此您可能应该检查Bref的成熟度矩阵,以评估将您的应用程序移植到无服务器架构是否是一个好主意。

使用Bref的Serverless PHP的先决条件

首先,前往Amazon AWS并创建一个帐户。您将需要它来部署您的应用程序。接下来,您需要安装无服务器框架来管理您的部署。

npm install -g serverless

接下来,在AWS上生成您的公私钥对,并在本地配置无服务器框架。

serverless config credentials --provider aws --key <key> --secret <secret>

接下来,通过Composer安装Bref:

composer require bref/bref

在部署之前,您需要安装Composer的依赖项。

composer install --prefer-dist --optimize-autoloader --no-dev
使用Bref在Serverless PHP上创建Hello World应用程序

为了使用Bref创建一个简单的hello world应用程序,我们将编写一个由事件触发并返回字符串“Hello World”的函数。

首先,您必须包含Bref的autoload.php脚本,然后使用它的lambda函数。如果您想从上下文中访问数据,您可以选择声明一个上下文变量。

require __DIR__.'/vendor/autoload.php';lambda(function ($event) {return 'Hello world');});

功能准备就绪后,您需要创建一个serverless.yml配置文件。这是Bref指南中的基本配置文件。

service: appprovider:name: awsruntime: providedplugins:- ./vendor/bref/breffunctions:hello:handler: index.phplayers:- ${bref:layer.php-73}

当您运行以下命令时,Bref会自动创建此配置文件。

vendor/bin/bref init

现在您已经准备好您的函数和配置,您可以使用无服务器包的命令invoke调用该函数以检查它是否按预期运行:

serverless invoke -f hello

这是使用AWS的sam命令行工具在本地部署无服务器应用程序的指南。一旦你的项目准备好了,你可以使用serverless的deploy命令来部署它。使用--verbose选项获取部署过程的详细信息:

serverless deploy
Serverless PHP的其他部署选项

AWS Lambda上的Bref PHP是一种流行的选择。但是,您的Serverless PHP应用程序还有一些其他选项。

Vapor由Laravel于2019年7月推出,是Laravel在AWS Lambda上的无服务器部署平台。Vapor将您的Laravel应用程序转换为单个lambda函数。虽然Azure无服务器不正式支持PHP,但您仍然可以使用此部署示例进行尝试。

小结

以下是您应该从本Serverless PHP指南中学到的关键方面:

  • 在考虑将Serverless PHP用于您的应用程序之前,请确保您完全了解无服务器计算是什么、它的优点和缺点。
  • 将应用程序移植到无服务器PHP框架时,您应该考虑三个主要因素。考虑应用程序的复杂性、其组件的时间紧迫性以及未来的可扩展性。
  • Serverless PHP对市场来说仍然相当新。在完全投入之前,请确保在其中一个供应商上使用Bref进行试点。

虽然Serverless变得非常流行,但它还需要深入了解该技术的工作原理以利用它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 深度学习 记录遇到的报错问题10

本篇继python 深度学习 解决遇到的报错问题9_module d2l.torch has no attribute train_ch3-CSDN博客 一、CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stackt…

《2023年企业IoT和OT威胁报告》:物联网恶意软件攻击增长400%

内容概括&#xff1a; 物联网&#xff08;IoT&#xff09;设备无疑改变了我们生活、工作和管理运营技术&#xff08;OT&#xff09;环境的方式。总体而言&#xff0c;到2027年&#xff0c;全球物联网设备数量预计将超过290亿&#xff0c;比2023年的167亿大幅增加。设备和智能技…

C# Winform 在低DPI创建窗体后,在高DPI运行时,窗体会自动拉伸,导致窗体显示不全

C# Winform 在低DPI创建窗体后&#xff0c;在高DPI运行时&#xff0c;窗体会自动拉伸&#xff0c;导致窗体显示不全&#xff0c; 比如在分辨率为100% 的电脑创建C#项目&#xff0c;当运动到分辨率为125%的电脑运行时&#xff0c;后者运行的窗体会自动拉伸&#xff0c;窗体显示…

canvas绘制圆点示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

LabVIEW在高级结构监测中的创新应用

LabVIEW在高级结构监测中的创新应用 LabVIEW作为一个强大的系统设计平台&#xff0c;其在基于BOTDA&#xff08;光时域反射分析&#xff09;技术的结构监测中发挥着核心作用。利用LabVIEW的高效数据处理能力和友好的用户界面&#xff0c;开发了一个先进的监测系统。该系统专门…

json解析本地数据,使用JSONObject和JsonUtility两种方法。

json解析丨网址、数据、其他信息 文章目录 json解析丨网址、数据、其他信息介绍一、文中使用了两种方法作为配置二、第一种准备2.代码块 二、第二种总结 介绍 本文可直接解析本地json信息的功能示例&#xff0c;使用JSONObject和JsonUtility两种方法。 一、文中使用了两种方法…

【计算机毕业设计】SSM实验室设备管理

项目介绍 本项目为后台管理系统&#xff0c;分为管理员、老师、学生三种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 信息管理&#xff1a;用户管理&#xff1b; 基础管理&#xff1a;实验室管理,实验室申请记录,设备管理,设备记录管理,耗材管理,耗材记录管理等功能…

看懂 Git Graph

目录 文章目录 目录Git Graph看懂 GraphVSCode Git Graph 插件1. 选择展示的 Branches2. Checkout 到一个 Branch3. 找到指定 Branch 最新的 Commit4. 找到 Branch 分叉口5. 查看 2 个 Commits 之前的区别 Git Graph Git Graph 是服务于 Git 分支管理的一种可视化工具&#xf…

改变传媒格局的新趋势

在如今信息高速发展的时代&#xff0c;人们早已进入了一个以手机为中心的智能化时代。随着科技的迅猛发展&#xff0c;手机无人直播成为了一种新兴的传媒形态&#xff0c;正逐渐改变着传媒格局。本文将从手机无人直播的定义、发展背景和影响等方面进行探讨。 首先&#xff0c;…

HarmonyOS官网案例解析——保存应用数据

介绍 本篇Codelab将介绍如何使用基础组件Slider&#xff0c;通过拖动滑块调节应用内字体大小。要求完成以下功能&#xff1a; 实现两个页面的UX&#xff1a;主页面和字体大小调节页面。拖动滑块改变字体大小系数&#xff0c;列表页和调节页面字体大小同步变化。往右拖动滑块字体…

vue3+echarts可视化——记录我的2023编程之旅

文章目录 ⭐前言⭐2023我在csdn的旅途痕迹&#x1f496;node系列文章&#x1f496;vue3系列文章&#x1f496;python系列文章&#x1f496;react系列文章&#x1f496;js拖拽相关文章&#x1f496;小程序系列文章&#x1f496;uniapp系列文章 ⭐可视化布局&#x1f496; git 数…

Windows使用IIS服务搭建WebDAV站点结合内网穿透公网访问

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 自己用Windows Server搭建了家用NAS主机&…