PHP 项目重构计划,推荐 GO 还是 Node js?

2016-05-16 11:02:41 +08:00
 vus520

现在的项目是标准的 PHPStack ,目前进入项目稳定期,准备对项目前端进行重构。

目标:高性能,高可用,可扩展

目前团队只有 PHP 基础,核心业务的重构准备用其它语言实现。

现在进入选择艰难,求推荐一个坑。

7822 次点击
所在节点    问与答
86 条回复
doublleft
2016-05-16 11:45:55 +08:00
看你们现在拿 php 来做什么了。
像你说的场景可以做离线计算,访问分层处理。用 java 之类的重构成后端,把 php 只当作前端解析模板之类的。而且这样的话方便真对业务场景快速切换前端环境, node 还是 php 还是 go 想换就换。

但不管换啥 不要把所有东西都压在一个上面,既处理请求,又操作数据库,又来做什么加解密的
ipconfiger
2016-05-16 11:47:03 +08:00
CPU 密集部分用 C++或者 C 写 PHP 的扩展模块嘛
libotony
2016-05-16 11:47:24 +08:00
Node.js 不适合做 CPU 密集型的应用,我觉得你现在的问题要在架构上做优化,或者用 Node 做胶水层,后端用 PHP 或者其他计算能力更优的语言
tabris17
2016-05-16 11:48:29 +08:00
为了重构而重构?
jhdxr
2016-05-16 11:50:56 +08:00
1. 不管用什么语言,你业务到了一定规模以后堆机器是必然的。架构上你要解决的是能够优雅地堆机器,而不是到了要堆机器的时候就换个语言。。。
2. CPU 密集的确不是 PHP 的强项,但是是 C 的强项啊。。。最直接的想法不是 C 写个模块封装下 PHP 去调么
3. 『目前团队只有 PHP 基础,核心业务的重构准备用其它语言实现』

看了你的前一个帖子,我不觉得换一个语言就能解决压缩效率的问题。。。当然如果你只是想玩玩学习下别的语言就随意了。。。只不过拿核心业务这么玩_(:з」∠)_
jhdxr
2016-05-16 11:51:12 +08:00
@tabris17 是为了重构而重写
88250
2016-05-16 11:52:23 +08:00
Go 的 Debug 可能是一个问题。如果团队的开发成员习惯以单步调式来 debug ,那就很难搞了。

建议 Java ,成熟稳定框架多~
finian
2016-05-16 11:52:33 +08:00
取决于你们团队熟悉哪种语言,或者哪种语言容易招人(意味着有人 hold 得住),如果为了学习新语言而重构,纯粹是给团队挖坑。。。
Felldeadbird
2016-05-16 12:04:25 +08:00
楼主这个换语言时解决不了问题的。指望更换开发语言来解决现有的业务问题,很容易被新语言的坑带来其他的业务问题。
上面都说了,有些时候推硬件远比软件升级快得多。唯一缺点就是硬件的维护成本会巨大。
strwei
2016-05-16 12:31:22 +08:00
laravel 大法好
scys
2016-05-16 12:35:40 +08:00
找人: Java
实用: PHP
计算密集: C
mirrosite
2016-05-16 12:36:43 +08:00
用的什么框架?
mirrosite
2016-05-16 12:40:32 +08:00
用 golang 还有点靠普,用 nodejs 重构了以后,我打赌你 100%要用 php 再重构回来
msg7086
2016-05-16 13:10:47 +08:00
8 台机器重构个毛……四五十台的时候你提重构我还能理解。
8 台机器贵还是你们这些工程师贵?

就算要优化,花点时间 profile 一下,把最慢的部分拿出来局部重写一下就行了。
redvoilin
2016-05-16 13:13:27 +08:00
把需要密集计算的那块用性能更好的语言写下不就好了嘛
iyaozhen
2016-05-16 13:14:51 +08:00
还是要喷一下楼主的,你熟悉的语言都搞不定的复杂场景换个都不了解语言能搞定?这么自信?这和谁是最好的语言无关。

「目前压力都在缓存上,业务输出算是 CPU 密集型,加解密压缩之类的,想在这一层换成其它语言来解决。 」
缓存问题和语言没有关系吧。 CPU 密集型,这个 Node 也不行。 Go 倒是挺合适,但 C 扩展成本更低呀。不要想着一个语言解决所有问题。

「还有一块业务, php 中存在重复的计算周期,想通过内存共享来解决,减少重复计算。 」这一块还是要用测试数据来说话,不要想当然, PHP 这样设计是有一定的好处的,比如内存泄露问题。话说业务上没有用 redis 吗? PHP 开启 OPcache 了吗?不考虑升级到 PHP7 ?
picasso250
2016-05-16 13:16:01 +08:00
我也是这个观点,将计算密集那块用 C 扩展。

当然,如果那块的逻辑经常变,那就用 Go 吧。

以上观点本人不负任何责任。
JasperYanky
2016-05-16 13:19:37 +08:00
典型的 XY 问题
falcon05
2016-05-16 13:20:33 +08:00
升级到 PHP7 了吗?
wingoo
2016-05-16 13:41:40 +08:00
lz 这样搞会掉坑里啊
业务逻辑换什么语言, 该复杂还是复杂啊
密集计算确实可以尝试切换, 但仅限于瓶颈的那块
学习新东西, 这个不能摊派, 要看目前团队的水准, 为了学习而去更换, 只会比现在更头疼

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

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

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

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

© 2021 V2EX