各位 PHPer,Serverless 正当时

简介:PHP 作为一个开发群体的很大的语言其应用范围相当广泛,Serverless 的理念和 PHP 语言的理念都是让开发者最大精力集中在自己的业务价值。那么 PHP 遇见 Serverless 会迸发出哪些火花呢?

前言

PHP 的应用范围相当广泛,尤其是在网页程序的开发上,  根据最新 维基百科 显示,2013年4月的统计资料,PHP已经被安装在超过2亿4400万个网站和210万台服务器上, 而根据 W3Techs 的报告,截至2021年9月, 有78.9%的网站使用PHP。 所以 PHP 是世界第一语言至少在 web 开发领域并不是戏称。

而在技术选型上, PHP 主要采用的是 LAMP(全称是Linux + apache + mysql + php) 或者 LNMP(全称是Linux + nginx + mysql + php), 这种成熟稳定的技术框架推动 PHP web 开发生态的繁荣和商业上的成功。

在传统的开发模式中, 开发者自己需要安装维护各种软件的安装、维护升级:

  • 如果您是一个企业用户, 如果业务体量变大或者为了生产环境的稳定和可用性, 使用负载均衡是一个必然的选项:

即此时, PHP 开发者或者线上运维的同学关心的事情多了起来:

  • 每个增加的生产机器都需要重新安装一遍相关软件, 做相同的 nginx 配置以及 php-fpm 的配置, 以及维护每个生产机器的安全更新
  • 假如开发的应用需要一个新的扩展, 可能需要人肉每台机器去增加扩展
  • 负载均衡器随着业务的变更升配, 后面一台 Worker 机器挂掉了, 如何做运维处理
  • 业务的波峰波谷怎么应对才能让资源的利用率提高
  • ...
  • 如果您是项目组开发成员比较多的企业用户,能不能不需要给每个开发配置一个安装的 NLP 的 Linux 机器作为开发测试机器(或者多人共享一个机器)?
  • 如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?
  • 如果您是一个学生或者准备学习 PHP 开发,本地只有 Windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP)  的环境用来学习呢?
  • ...

带着这些问题, 我们去探索一下 Serverless 是如何解决这些痛点的。

PHP 遇见 Serverless

什么是 Serverless

Serverless = Faas (Function as a service) + Baas (Backend as a service), 我们简单通过两个图快速了解相关概念:

  • 传统模式

  • Serverless 模式

图中的 CDN 和 OSS 就是 BaaS 服务,FC 就是自定义函数逻辑的 FaaS 平台,   通过这个对比, 我们能快速得到 FaaS 的特性和好处:

  • 只需要专注业务代码开发, 编写对应的逻辑即可
  • 极致弹性伸缩, 无需管理服务器
  • 按量付费,每次调用按毫秒计费
  • ...

本文后续讨论的 Serverless 主要指的是 FaaS, 如下示意图, 几行代码编写完毕, 保存到云厂商的 FaaS 平台, 就完成了一个弹性高可用的 Web API。

PHP 遇见 Serverless

PHP 作为一个开发群体的很大的语言, 各大云厂商的 FaaS,比如阿里云的函数计算、AWS 的 Lambda (通过 Custom Runtime 间接支持)、 腾讯的 SCF 等都推出了对 PHP 语言的支持, phper 面对前端领域的 Serverless 技术革新实践(感兴趣的见本文最后的附录), 应该不遑多让。以阿里云函数计算为例, 有很多 PHP 的开发者有了很多有趣的实践:

  • 直接使用 gd 或者 ImageMagick 扩展, 实现弹性高可用的图片、水印等各种 CPU 密集型 API
  • 直接使用 ffmpeg + 性能型实例 + 异步有状态调用完成视频剪辑合成等音视频处理业务
  • 使用 HTTP 触发器实现的函数, 埋点到广告平台, 快速实现高可用的买量业务
  • 直接将之前基于框架(如 ThinkPHP)实现的 WEB API 直接迁移到 FaaS 平台,不用再担心宕机和运维问题了
  • ...

虽然 FaaS 很好地解决了  phper 如下问题:

  • 新业务或者开发新的 web API
  • 存量业务中, 有些 CPU 密集型或者弹性要求很高的 API 单独抽离出来 FaaS 化

但是传统的开发模式或者存量业务,对开发者有一定的上手和改造成本,比如某 Faas 厂商 PHP Runtime 编程接口示例:

function handler($event, $context) {$eventObj = json_decode($event, $assoc = true);// do your thhings// ....return $eventObj['key'];
}

但是能不能更进一步, 开发者不需要按照 FaaS 厂商的约定的函数入口能实现一个个的 API,  而是能直接将传统运行在 LAMP 或者 LNMP 的项目直接 FaaS 化?

答案是肯定的

阿里云函数计算的 Custom Runtime 以及直接基于 HTTP 协议的极简编程模型走在了所有云厂商的前列。

函数计算启动Custom Runtime执行环境时,会默认调用 bootstrap文件(或者您创建函数的时设置的 Args参数)启动您自定义的 HTTP Server, 然后这个HTTP Server接管了函数计算系统的所有请求,即您所有的函数调用请求。

函数计算 Custom runtime 执行环境底层系统是 Linux,  并且已经内置的 nginx/1.10.3 和 php-fpm7.4,   对于 PHP 应用,您直接使用即可

以部署一个 wordpress 项目 为例,  只需要将如下目录直接打包成一个 zip 包在函数计算平台创建一个函数即可:

- bootstrap
- nginx.conf
- php-fpm.conf
- php.ini-production
- wordpress

其中 wordpress 目录是对应的 web 工程,  bootstrap 是启动 nginx 和 php-fpm 的脚本即可:

...
echo "start php-fpm"
php-fpm7.4 -c /code/php.ini-production -y /code/php-fpm.conf
echo "start nginx"
nginx -c /code/nginx.conf
...

bootstrap 详情可参考 WordPress in FC

所以, 使用函数计算这个 Serverless 产品和传统的 PHP 开发相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、不用担心宕机的事情等等, 只需要安安心心把业务代码开发好即可。

从上图可以看出:开发者只需要开发好自己的业务代码即可,唯一需要考虑的事情, 就是函数计算这边扩容不要太多太猛(比如直接在函数计算平台设置下该函数能弹出的最大实例数目即可), 给下游自己的 Mysql 数据库过大的压力即可。

当然, 从原始的传统的 php web 应用完全迁移到 Serverless 形态的函数计算平台, 某些场景可能需要考虑数据持久化问题, 因为函数计算是无状态的, 数据持久化保存可以借助 NAS、Redis 等服务完成,以 NAS 为例,流程图如下:

以 WordPress 为例, 后台系统上传的图片或者 Session 功能都是需要持久化到磁盘的。

  • 设置 web 工程的文件上传目录或者 session 目录为 NAS 盘的某个目录, NAS 盘实现持久化
  • 甚至可以将 web 工程直接放到 NAS 盘上, 此时函数计算纯粹就是 LNP 执行环境

比如将 wordpress 工程不作为函数的代码包的一部分, 而已提前上传到 NAS 盘, 只需要设置好 nginx.conf 中的 root 能知道 web 工程即可, 如上面的 nginx.conf, /mnt/auto 表示挂载的 NAS 目录,mnt/auto/wordpress 则表示在 NAS 上的 web 工程。

此时对您来说, 函数再也不用变了, 您可能只是需要开发新的业务代码, 然后上传到 NAS 上即可(或者直接使用 git 直接在 NAS 操作,实现 web 工程的版本和 git 上的 commit 绑定, 使用 git 实现代码的快速升级和混滚)

但是从安全生产的角度来说, 还是建议您 web 工程变更最好和函数的变更相关联

小结

从上面的讨论和陈述中, 我们不难发现, PHP 遇见 Serverless 是一件令人兴奋的事情, 让 phper 有了更大的想象空间。 Serverless 的理念和 PHP 这个语言出现的理念也是一致的: 即让开发者最大精力集中在自己的业务价值。 PHP 语言一直是 web 领域最好的生产力代表, 而 Serverless 将会让 PHP 如虎添翼。

我们最后来一一解答下前言中提出的问题:

如果您是一个企业用户, 业务体量变大或者为了生产环境的稳定和可用性, 如何做?

如上面陈述, 使用函数计算和传统的 PHP 开发相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、担心宕机的事情等等, 只需要安安心心把业务代码开发好即可。

如果您是项目组开发成员比较多的企业用户,能不能不需要给每个开发配置一个安装的 NLP 的 Linux 机器作为开发测试机器(或者多人共享一个机器)?

是的, 每个开发者在函数计算上创建一个自己的 Service/函数即可, Service/函数配置开发测试环境的 VPC,实现内网安全访问数据库等其他下游服务。 函数调用的时候, 函数计算会拉一个 NLP 的执行环境来运行您分支上正在开发的 PHP 代码。

  • 每个执行环境是相互隔离的
  • 按调用次数计费, 不需要预留机器, 免除了机器成本上的浪费
  • 也可以很方便进行压测等各种事宜

如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?

通常来说, 很多企业门户网站访问量不大, 但是网站挂掉了会引起客户投诉。每个客户的网站通过service 或者函数区分, 通过函数名或者service去区分您自己的客户: i. 管理方便  ii. 做定制化方便  iii. 做不同vip等级服务方便。 举个例子, 您可以快速通过某个函数的调用指标情况, 可以看出哪个客户的网站访问量大,可以做出客户画像以及制定不同的收费和 vip 服务级别。

如果您是一个学生或者准备学习 PHP 开发,本地只有 Windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP)  的环境用来学习呢?

   是的, 只要将如下的文件和文件夹打包成 zip 包去函数计算控制台创建函数即可

- bootstrap
- nginx.conf
- php-fpm.conf
- php.ini-production
- myweb| - hello.php

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

双龙贺岁,龙蜥 LoongArch GA 版正式发布

简介:Anolis OS 8.4 LoongArch 正式版发布产品包括 ISO、软件仓库、虚拟机镜像、容器镜像。 简介 继 Anolis OS LoongArch 预览版发布后,现迎来龙蜥 LoongArch 正式版首发,该正式版在预览版的基础上提供了 AppStream、PowerTools 等仓库。A…

c语言中a lt 1e-9,年9月计算机二级考试C语言强化训练题

年9月计算机二级考试C语言强化训练题为了使广大学员在备战计算机二级考试时更快的掌握相应知识点,小编在此精选了计算机二级C语言的练习题供学员参考,大家要抓紧时间备考,祝大家备考愉快,梦想成真。一、单选题1). 若有说明&#x…

Serverless 年终技术盘点 :工业、学术、社区遍地开花,国内厂商迅速卡位

简介:预计 2021 年,将会有大量主流企业的核心应用,从原来的主机架构迁移到 Serverless 架构。 作者 | 刘宇(花名:江昱) 2021 年,Serverless 架构在权威咨询机构 Forrester 所发布的 《 The F…

Docker 如何安全地进入到容器内部

作者 | 飞向星的客机来源 | CSDN博客🌟 前言镜像是构建容器的蓝图,Docker 以镜像为模板,构建出容器。容器在镜像的基础上被构建,也在镜像的基础上运行,容器依赖于镜像。本文将对 容器的运行 及相关内容进行详细讲解。容…

KubeVela v1.2 发布:你要的图形化操作控制台 VelaUX 终于来了

简介:时间来到 2022 年,KubeVela 也正式进入了第四个阶段,在原先核心控制器 API 基本稳定的基础上,我们以插件的形式增加了一系列开箱即用的功能。让开发者可以通过 UI 控制台的方式,连接 CI/CD 完整流程,端…

c语言水仙花数(输入判断),用c语言判断一个数是否为水仙花数?

你的C语言程序我帮你改完了,完整的程序如下(改动的地方见注释)#includeint narcissistic(int number){//这里n1改成n0并加product变量保存连乘积int a,b0,n0,c,number2,number3,product;number2number;number3number;while(number>0){//这里把number>10改成number>0nu…

云原生的 CICD 框架:Tekton

作者 | AddoZhang来源 | 云原生指北Tekton 是 Google 开源的 Kubernetes 原生CI/CD 系统,功能强大扩展性强。前身是 Knavite 里的 build-pipeline 项目,后期孵化成独立的项目。并成为 CDF 下的四个项目之一, 其他三个分别是 Jenkins, Jenkins X, Spinnak…

人人都是 Serverless 架构师 | “盲盒抽奖”创意营销活动实践

简介:当 Serverless 与低代码这两个不同的技术共同相交于同一个业务时会有怎样的价值展现?本文以 “盲盒抽奖” 这个 Serverless Devs 做过的创意营销活动为例,为大家讲述 Serverless 和低代码是如何搭配来满足一个业务诉求的。 作者 | 寒斜 …

这样才是代码管理和 Commit 的正确姿势 | 研发效能提升36计

简介:效能提升从小习惯开始,这样才是代码管理和 Commit 的正确姿势! 专栏策划|雅纯 志愿编辑|张晟 软件交付是以代码为中心的交付过程,其中代码的作用有几点:第一,最终的制品要交付…

vSphere+、vSAN+来了!VMware 混合云聚焦:原生、快速迁移、混合负载

编辑 | 宋慧 出品 | CSDN云计算 vSphere、vSAN,从云计算兴起,就是 VMware 在虚拟化、分布式存储里大名鼎鼎的核心技术产品。不过随着云的发展到云原生、以及国内混合云快速发展的今天,虚拟化的领导者 VMware 有哪些最新的方案,值…

技术解读:实时数仓Hologres如何支持超大规模部署与运维

简介:在本次评测中,Hologres是目前通过中国信通院大数据产品分布式分析型数据库大规模性能评测的规模最大的MPP数据仓库产品。通过该评测,证明了阿里云实时数仓Hologres能够作为数据仓库和大数据平台的基础设施,可以满足用户建设大…

成功通航:用宜搭提升数字化管理效能,确保每次飞行任务安全执行

简介:宜搭帮助山西成功通航节省了100万左右的成本,同时使管理运营效率提升了76%。 山西成功通用航空股份有限公司 50-100人 / 航空运输 / 山西-长治 / 成功通航综合管理平台 “通用航空迎来发展机遇,随着通航行业‘放管服’政策的不断推进…

用键盘输入一条命令

作者 | 闪客来源 | 低并发编程新建一个非常简单的 info.txt 文件。name:flash age:28 language:java在命令行输入一条十分简单的命令。[rootlinux0.11] cat info.txt | wc -l 3这条命令的意思是读取刚刚的 info.txt 文件,输出它的行数。我们先从最初始的状态开始说起…

Redis 7.0 Multi Part AOF的设计和实现

简介:本文将详解Redis中现有AOF机制的一些不足以及Redis 7.0中引入的Multi Part AOF的设计和实现细节。 Redis 作为一种非常流行的内存数据库,通过将数据保存在内存中,Redis 得以拥有极高的读写性能。但是一旦进程退出,Redis 的数…

面向B端算法实时业务支撑的工程实践

简介:在营销场景下,算法同学会对广告主提供个性化的营销工具,帮助广告主更好的精细化营销,在可控成本内实现更好的ROI提升。我们在这一段时间支持了多个实时业务场景,比如出价策略的实时化预估、关键词批量服务同步、实…

中间表是如何被消灭的?

作者 | 不吃西红柿来源 | CSDN博客中间表的产生中间表是数据库中专门存放中间计算结果的数据表,往往是为了前端查询统计更快或更方便而在数据库中建立的汇总表,由于是由原始数据加工而成的中间结果,因此被称为中间表。在某些大型机构中&#…

自定义控件android.r,Android控件架构与自定义控件

前言最近在开发的路上越走越远了,每天在看各位大神公众号更新内容是自定义View的时候,一些小的内容有点模具,决定回过头来温习一下过往的内容。此篇也是根据android群英传来总结的一篇文章。1 Android控件架构Android的每个控件都是占一块矩形…

基于 PTS 压测轻松玩转问题诊断

简介:性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。 作者:智云 为什么要做压测的问题…

阿里云开源业内首个应用多活项目 AppActive,与社区共建云原生容灾标准

简介:继高可用架构团队的 Sentinel、Chaosblade 开源后,第三个重磅高可用产品:应用多活 AppActive 正式开源,形成高可用的三架马车,帮助企业构建稳定可靠的企业级生产系统,提高企业面对容灾、容错、容量等问…

清晰还原31年前现场,火山引擎超清修复Beyond经典演唱会

7月3日晚,抖音携手环球音乐旗下厂牌宝丽金,直播经过火山引擎超清修复的Beyond Live1991生命接触演唱会及纪念音乐会精选内容,吸引了超1.4亿人次观看。 Beyond是一支成立于1983年的摇滚乐队,随着粤语音乐的兴起,Beyond…