为啥很少有公司用PHP搞微服务架构开发

PHP在微服务这块

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 40

估计是想搞微服务架构的都转语言了,毕竟从资料和成功案例看,微服务架构一般在java和go那边。

如果你想用PHP搞微服务也不是不行,不过我建议上云然后all in serverless,把服务发现/网关丢给云厂商,数据库换PostgreSQL 14起或者加个数据库代理轻松撑起海量连接,消息队列也直接丢给云厂商,被触发器唤起的那部分用PHP写接口就可以了。

之所建议all in serverless,是因为二八原则到处都是,大部分业务高峰期就那么一段时间(比如OA类应用的高峰期是上班时间,外卖类应用高峰期是饭点时刻)。在业务低谷期,传统微服务架构下甚至是k8s这种玩法,还是要几个节点在运行,全年下来一算账会发现资源利用率很低。我经历的大部分业务,应用层为了高可用最少部署2个实例,但是在完全没有流量的情况下那些冗余实例在哪里岂不是浪费能源?而serverless模式就是完全的按量付费模式,可以0应用实例做到高可用,由云厂商来兜底。

现在各大云厂商serverless部署都支持容器了,你只管丢个docker镜像上去,点几下就配置好弹性伸缩策略(因为Web入口由云网关接管,可以观测到并发量,可以轻松设置并发扩容阈值和实例上下限数量,数据库按照上面的玩法也不怕扩容时由于连接数过多拖累性能)。反正国内serverless一个实例也就给你100个并发,各种语言都是众生平等,可以把重心放在业务上。每个服务都有一个域名给你,配置成内网的就差不多了,服务互相调用直接就是http,监控告警负载均衡限流熔断之类的也是云厂商的API网关搞定,负担很低。

3周前 评论
保安

因为很多用php搞项目的公司活不到那一天

3周前 评论
baiyaoqiang 2周前
lufeijun1234 3周前
baiyaoqiang 2周前
保安 (作者) 2周前
保安

因为很多用php搞项目的公司活不到那一天

3周前 评论
baiyaoqiang 2周前
lufeijun1234 3周前
baiyaoqiang 2周前
保安 (作者) 2周前
fatrbaby

个人感觉,这个问题就像为什么不开法拉利来跑滴滴。归根结底,还是php在微服务这个领域的生态不成熟,没有太多成功案例,也并不是它擅长的。

3周前 评论

php项目已中小企业居多

3周前 评论
baiyaoqiang 2周前

项目小时用不到,项目大时不太可能直接在原来的代码上修改了,大概率就重构了,既然重构了还选 PHP 的我感觉可能性不大

3周前 评论

php生态不行,微服务 分布式 消息治理 服务发现……,到中后期后基本换语言了,TB最开始也是用PHP,MySQL支撑不住,并发性能不高,开源连接池 SQL Relay 连接到 Oracle代理经常死锁,于是从 PHP 热切换到了 Java,当项目发展到一定阶段,基本都选用生态更好,性能更强的语言,在《淘宝技术发展》从业务演变和架构角度来看编程语言的更替

3周前 评论

估计是想搞微服务架构的都转语言了,毕竟从资料和成功案例看,微服务架构一般在java和go那边。

如果你想用PHP搞微服务也不是不行,不过我建议上云然后all in serverless,把服务发现/网关丢给云厂商,数据库换PostgreSQL 14起或者加个数据库代理轻松撑起海量连接,消息队列也直接丢给云厂商,被触发器唤起的那部分用PHP写接口就可以了。

之所建议all in serverless,是因为二八原则到处都是,大部分业务高峰期就那么一段时间(比如OA类应用的高峰期是上班时间,外卖类应用高峰期是饭点时刻)。在业务低谷期,传统微服务架构下甚至是k8s这种玩法,还是要几个节点在运行,全年下来一算账会发现资源利用率很低。我经历的大部分业务,应用层为了高可用最少部署2个实例,但是在完全没有流量的情况下那些冗余实例在哪里岂不是浪费能源?而serverless模式就是完全的按量付费模式,可以0应用实例做到高可用,由云厂商来兜底。

现在各大云厂商serverless部署都支持容器了,你只管丢个docker镜像上去,点几下就配置好弹性伸缩策略(因为Web入口由云网关接管,可以观测到并发量,可以轻松设置并发扩容阈值和实例上下限数量,数据库按照上面的玩法也不怕扩容时由于连接数过多拖累性能)。反正国内serverless一个实例也就给你100个并发,各种语言都是众生平等,可以把重心放在业务上。每个服务都有一个域名给你,配置成内网的就差不多了,服务互相调用直接就是http,监控告警负载均衡限流熔断之类的也是云厂商的API网关搞定,负担很低。

3周前 评论

比如你要做一个项目 赶时间

第一版一般都是PHP 并将开发快啊

然后产品运用到一定程度 满足不了当前业务需要就会重构

就会使用支持高并发的语言开发

3周前 评论

这个还得看业务,我们有个请求量大的也是php写的,用的webman...开了200个进程,峰值最高4900多的每秒请求

3周前 评论
Evilk 3周前
shunjian_s_s_s (作者) 3周前
Evilk 3周前
shunjian_s_s_s (作者) 3周前
Evilk 3周前
shunjian_s_s_s (作者) 3周前
Evilk 3周前
shunjian_s_s_s (作者) 3周前
Evilk 3周前
shunjian_s_s_s (作者) 3周前
黑将军 2周前
by159147 1周前

php在微服务这一块,没有什么好的解决方案,都是半桶水

3周前 评论

小公司用微服务架构开发除了增加成本没别的好处

3周前 评论
shunjian_s_s_s 3周前

我们用的 hyperf,已经 1 年多了,不过都是内部的 ERP 系统,用的人不多,哈哈。

3周前 评论
保安 3周前
Geekc 3周前

k8s没普及吗?? 微服务还绑定语言了?

3周前 评论
cevin 3周前
fatrbaby 3周前

0, 说句实话php是脚本语言是弱了点。
1,但是我也要为php说几句,那为什么没人用c语言做微服务呢?(c++? python?node?)
2,说白了几大正统语言,java最普及,微服务所需的组件大部分可以用java写出来,事实也是大部分组件也是java写的,不过也有例外,例如万一用到ectd (go语言) 万一用用到nginx(c系列) 总不能归入java阵营吧
3,总结微服务领域java强而已。写html还是得js对不,其他领域例如运维肯定用python. 大数据(基本是函数式了而且是去java的,要不然发明那么多jvm语言干嘛)
4 对了补充下游戏领域基本就是js c# c++

3周前 评论

很多公司宁愿把一堆开发工程师在新旧系统的双写下折磨到死,也不愿意花时间钻研技术,突破php的gc限制。微服务双写下所消耗的时间,难道比研究gc的时间要少吗?

3周前 评论
krilima 2周前

php优势在于开发快,因此很多新创公司或者中小型公司会使用它来进行项目开发。但是一旦业务量做大了以后,原本的系统无法满足需求。随着业务量的增加,要处理并发的问题,可能我们能想到的就是分表分库、引入swoole、引入非关系型数据库、队列等等,一般这种优化也能有很大的提升。
但是业务量爆炸增长呢,可能又要面临着新业务增加,用户量、访问量增加以及无法简单的进行后续的开发(屎山),因此可能就会想到重构,想到微服务。
php微服务也不是不行,只是成熟的方案不算太多,而且由于php性能方面的问题,因此很多从php重构或者搞微服务的,都是用go或者java。

2周前 评论
千秋大劫

我们这使用 roadrunner 来做PHP微服务

1周前 评论
黑将军 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!