外链论坛

 找回密码
 立即注册
搜索
查看: 4|回复: 0

PHP 遇见 Serverless,帮你处理这些痛点!

[复制链接]

2606

主题

4466

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99110731
发表于 3 小时前 | 显示全部楼层 |阅读模式

作者:罗松(西流)关注下方 Serverless 公众号后台回复 学习 就可得到研发者学习资料下载链接!01

前言

Cloud Native

PHP 的应用范围相当广泛,尤其是在网页程序的研发上, 按照最新维基百科[1]表示,2013 年 4 月的统计资料,PHP 已然被安装在超过 2 亿 4400 万个网站和 210 万台服务器上, 而按照W3Techs[2] 的报告,截止 2021 年 9 月, 有 78.9%的网站运用 PHP。因此 PHP 是世界第1语言最少在 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 是怎样处理这些痛点的。

02

PHP 遇见 Serverless

Cloud Native

1 什么是 Serverless?Serverless = Faas (Function as a service) + Baas (Backend as a service),咱们简单经过两个图快速认识关联概念:传统模式Serverless 模式图中的 CDN 和 OSS 便是 BaaS 服务,FC 便是自定义函数规律的 FaaS 平台, 经过这个对比,咱们能快速得到 FaaS 的特性和好处:只需要专注业务代码研发, 编写对应的规律就可极致弹性伸缩, 无需管理服务器按量付费,每次调用按毫秒计费...本文后续讨论的 Serverless 重点指的是 FaaS,如下示意图,几行代码编写完毕,保留到云厂商的 FaaS 平台,就完成为了一个弹性高可用的 Web API。2 HP 遇见 Serverless

PHP 做为一个研发群体的很大的语言,各大云厂商的 FaaS,例如阿里云的函数计算、AWS 的 Lambda (经过Custom Runtime[3]间接支持)、腾讯的 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,  针对 HP 应用,您直接运用就可

安排一个 wordpress[3]项目为例, 只需要将如下目录直接打包成一个 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.confecho "start nginx"nginx -c /code/nginx.conf...bootstrap 详情可参考 WordPress in FC[5](文末附链接)因此运用函数计算这个 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 工程变更最好和函数的变更关联联。03

总结

Cloud Native

从上面的讨论和描述中,咱们不难发掘,PHP 遇见 Serverless 是一件令人兴奋的事情,让 phper 有了更大的想象空间。Serverless 的理念和 PHP 这个语言显现的理念是一致的: 即让研发者最大精力集中在自己的业务价值。PHP 语言始终是 web 行业最好的生产力表率,而 Serverless 将会让 PHP 如虎添翼。04

关联链接

Cloud Native

[1]维基百科:https://zh.wikipedia.org/wiki/PHP?[2]W3Techs:https://w3techs.com/?[3]Custom Runtime 简介:https://help.aliyun.com/document_detail/132044.html?[4]wordpress 项目:https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/wordpress/src?[5]WordPress in FC:https://github.com/devsapp/start-web-framework/blob/master/web-framework/php/wordpress/src/code/bootstrap?咱们最后来一一解答下前言中提出的问题:Q1:倘若您是一个企业用户,业务体量变大为了生产环境的稳定和可用性,怎样做?

A1:

如上面描述运用函数计算和传统的 PHP 研发相结合后,您再不消思虑负载平衡的事情,不消思虑扩缩容的事情,不消管理设备、担心宕机的事情等等,只需要安安心心把业务代码研发就可

Q1:倘若您是项目组研发成员比较多的企业用户,能不可不需要给每一个研发配置一个安装的 NLP 的 Linux 设备做为研发测试设备多人共享一个设备)?

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

每一个执行环境是相互隔离的

按调用次数计费, 不需要预留设备, 免除了设备成本上的浪费

能够很方便进行压测等各样事宜

Q1:倘若您是一个供给网站研发和托管的 ISV、外包机构创业机构,我的客户都是有些中小企业的门户网站,我怎么加强我后端设备资源利用率以及更好供给定制化服务?A1:一般来讲非常多企业门户网站拜访量不大,然则网站挂掉了会导致客户投诉。每一个客户的网站经过 service 函数区分,通过函数名 service 去区分您自己的客户:i. 管理方便  ii. 做定制化方便  iii. 做区别 VIP 等级服务方便。举个例子,您能够快速经过某个函数的调用指标状况能够看出哪个客户的网站拜访量大,能够做出客户画像以及制定区别的收费和 VIP 服务级别。Q1:倘若您是一个学生准备学习 PHP 研发,本地仅有 Windows 电脑,能不可直接近乎免费的方式获取 LNP(Linux+Nginx+PHP)  的环境用来学习呢?

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

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

(END)

倘若您对 PHP 落地 Serverless 感兴趣,您有观点、想法想吐槽的,能够和钉钉搜索:31897696,欢迎进群大众一块交流。

1

PHP 框架 Serverless 最佳实践:

[1]ThinkPHP:https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/thinkphp/src?[2]Laravel:https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/laravel/src?[3]Wordpress:https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/wordpress/src?[4]Z-BlogPHP:https://github.com/devsapp/start-web-framework/tree/master/web-framework/php/zblog/src?[5]Swoole:https://github.com/devsapp/start-fc/tree/master/custom-function/php74?[6]其他更加多: https://github.com/devsapp/start-web-framework2  参考引用Serverless Architectures:https://martinfowler.com/articles/serverless.html?Backend For Frontend(BFF)in Serverless:https://www.infoq.cn/article/0btajez51ysb_qehr526?关于 Serverless 将来对前端研发影响的详细看法:https://developer.aliyun.com/article/793492?当 SSR 遇上 Serverless,容易实现页面瞬开:https://cnodejs.org/topic/5e394e311225c9423dcd9754?3 附录Serverless 在前端行业如火如荼的发展附录1Backend For Frontend(BFF)in Serverless 来加强生产力

前端研发者全栈化

加强研发效率,减少前端和后端接口朋友的沟通联调时间,后端朋友只需要做好原子的接口的稳定性和靠谱就可,数据的聚合直接由前端朋友经过 BFF 实现

附录2当 SSR 遇上 Serverless,容易实现页面瞬开

借助于函数即服务(FaaS)的能力,不需要再去搭建传统的 Node 应用,一个函数就能够变成一个服务,研发能够更纯粹的关注于业务规律

FaaS 以函数为单位的形式以及弹性机制,为 SSR 应用带来了天然的隔离性和动态修复能力,能够更好的避免页面间的交叉污染,或有些边界的反常场景对应用带来致命性的损伤

无需运维、按需执行、弹性伸缩这些特性,大大降低了 SSR 应用对研发者的门槛。

附录 1:

https://www.infoq.cn/article/0btajez51ysb_qehr526?

附录 2:

https://cnodejs.org/topic/5e394e311225c9423dcd9754?

1、Spring Boot Serverless 实战 | Serverless 应用的监控与调试

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

3、创新推出 | Serverless 调试大杀器:端云联调

4、人人都是 Serverless 架构师 | 弹幕应用研发实战

点击文末“阅读原文”,认识更加多详情~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-3 19:13 , Processed in 0.074954 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.