PHP 本身不就是最佳的 serverless 实践吗?

2021-03-13 23:14:13 +08:00
 wuhaoworld

PHP 最常用的 FPM 模式,一个 http 请求一个进程处理,请求完成后进程自动销毁,即使代码质量不高,有内存泄露也没关系,反正执行完成后就立即销毁了。

每个进程之间是独立的,互不干扰也不耦合,访问量大的话就多部署机器,负载均衡打到不同机器上,横向扩展非常容易。

如果用 PHP 自带的 cookie/session 管理容易出问题,因为一个用户可能被路由到不同机器上,那改用 radis 集群统一管理 session 就好了,唯一要解决的就是数据库负载的问题,这就不是 PHP 的问题了,也是其他语言需要解决的。

所以 PHP 应用本身就很容易做到「无状态」、「弹性伸缩」的,当然还需要自己手动运维,但我作为新手,部署过多个 PHP 网站 /API 等应用,部署完成后服务器在那放着基本上一年都不会出问题,只要不访问量突然增,基本上是做到「免运维」了,主要还是因为即使代码中有 bug 或内存泄露,请求完成后自动被重置了,错误不会被积累。

综上,PHP 本身不就是最佳的 serverless 实践吗?各大云厂商都在搞自己的 serverless 平台,看来看去,还是 PHP 原生的机制最好用

5185 次点击
所在节点    PHP
33 条回复
wuhaoworld
2021-03-14 11:02:29 +08:00
@young1lin 抱歉拼错了,是 redis
lewinlan
2021-03-14 11:08:42 +08:00
啊这,一个请求一个进程,这还自豪了?
firefox12
2021-03-14 11:33:13 +08:00
本质上没啥区别,SAE GEC 已经证明 纯的 PAAS 是没前途的,因为要纯的把业务切开,还做不到,现在的互联网架构,业务组件 还没办法做到这么纯的 PAAS 。

现在的 PAAS 包括 K8S 都是不纯的 Iaas 的改进, 而 Serverless 更加是个改进而已。PHP 的确可以算 Serverless 的一种表现,它用完销毁,不保存上下文,可以水平扩展。但是 这种用完销毁的模式 不是远古状态吗?现在不是都不销毁了吗? 为了性能, 它活成了 自己最讨厌的样子。
westoy
2021-03-14 12:28:27 +08:00
「无状态」 =》 大量依托中间件, 所有语言都能做到这种

「弹性伸缩」 = 》 这个要看架构的, 哪有脱离业务的弹性伸缩, 这和语言有什么关系?

「无需运维」 =》
我还是再强调一下, php 并不是热更新的, 见#10
以前 php 还没火的时候
前端跑个 haproxy, 有钱的上个 F5
php 环境在 /app
每次修改生成一个 /app-$version 的目录
然后修改 /app 的软链接, 再重启 apache 、spawn-fcgi 之类的东西
基本是部署的共识
如果你觉得这套自动化流程叫「无需运维」, 那所有语言都行

如果你指的还是在线热修改 php 文件
那么这么说吧,Zend 官方搞的 phpcloud 在你推送修改后, 几秒内访问出现的都是一个提示应用正在重启的页面, 都不敢用这个特性
你敢在一个有流量的生产环境这么玩儿, 我愿称你一声壮士

「容易迁移」 =》
serverless 的核心是中间件啊, 各家云服务商又不会约好了用同一套标准的
如果你指的是底层 db 、cache 的 api, 那所有语言都可以啊
abersheeran
2021-03-14 12:34:47 +08:00
@westoy 是的。这个热更新我也在 Py 上重现过,发现一次更新的原子性很难保证。
rekulas
2021-03-14 14:44:16 +08:00
现阶段的 serverless 用的还不够省心,不够灵活,适配麻烦,也许只是一个过渡方案,说不定几年后有更优解。。
例如 。。developmentless 😹😹😹😹
charlie21
2021-03-14 16:49:46 +08:00
在 PaaS ( platform as a service ) 的基础之上 进一步缩水 才有的 serverless 。若你对服务器有完全的控制权,那么 是吧 你就是在用服务器 至于你怎么大材小用都无法改变你对服务器有完全的控制权的事实,服务器对你是可见的 则这就不是 serverless 。

应用端细节在第五层,服务器控制权在大概第三层的位置吧,第五层如何不会影响第三层如何 因为它们不在同一层上,第三层也对第五层是不可见的,因为中间甚至隔着第四层。

无服务器计算 (serverless) 和平台即服务 (PaaS) 有何不同
https://www.cloudflare.com/zh-cn/learning/serverless/glossary/serverless-vs-paas

lz 词汇量有问题
leeg810312
2021-03-14 17:46:57 +08:00
lz 都没有搞懂 serverless 的正确定义就在下结论。一个平台,从开发者角度基础设施是透明的,才是 serverless,你说的只是 stateless
zhao372716335
2021-03-14 19:45:14 +08:00
姐是老中医。。
lihongming
2021-03-15 01:52:21 +08:00
说个最基本的吧——AWS 的 Serverless 可不只是 Lambda,它的数据库也是 Serverless 的,楼主这 PHP 就不行了吧?
enki0423
2021-03-15 10:18:34 +08:00
主要是钱的问题,serverless 能让云服务商单位时间的服务费收的更高,同时服务的用户更多,还能让你觉得自己最终付的钱更少。
dzdh
2021-03-16 10:00:42 +08:00
@qiayue :doge:
dsnake1984
2021-06-16 07:07:13 +08:00
thinkphp 热更新 搞死了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/761402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX