Laravel 如何将部分 api 一步步使用 golang 进行重构

2019-04-28 13:44:19 +08:00
 zjtsunshine

目前状况: 1 )有 2 台 8 核 16G 服务器,tps1000 多。

2 )使用 nginx+php-fpm+laravel。

3 ) php-fpm 进程占有的 cpu 较高,经常飙到 80%以上。

目前想一步步地将 laravel 上的 api 接口,逐步使用 golang 重构,并部署到生产环境,但又不影响生产环境功能的正常使用。比如今天先把某个使用频率较高的 api,重构成 golang,部署上去;明天再部署新的 api,一步步操作。

1 )如果使用 Laravel-Swoole 测试了下并发性能确实提到了几十倍,但是有很多坑,怕部署到生产环境出问题。。。

2 )若使用 golang 重构,是要在 nginx 中配置,当请求某个 api 的时候,给他转发到 go 服务器吗?有没有具体的教程,在网上没有找到了的解决方法,有没有大神求助下

7638 次点击
所在节点    程序员
76 条回复
peinhu
2019-04-28 16:07:06 +08:00
不建议使用 laravel-swoole 和 laravel-s 等方案,虽然看上去很方便,性能也有不小提升,但原项目要改的地方太多,有点像针对这种方案开发项目了,得不偿失。
要上 swoole 只能使用完全基于 swoole 开发的框架,不过现在这种框架都不成熟,周边生态也不完善,要是学那个还不如学其它语言的成熟框架了。
mscb
2019-04-28 16:09:07 +08:00
建议先 swoole
PHPJit
2019-04-28 16:11:43 +08:00
easyswoole 吧,有一个项目生产环境已经用上了。
另外一个用 laravels 的也用上生产环境了
luozic
2019-04-28 16:49:32 +08:00
flashrick
2019-04-28 16:55:24 +08:00
我也在纠结是 go 还是 swoole 。能说下你的机器配置么
jswh
2019-04-28 17:09:24 +08:00
go 承接所有请求,对于还没有实现的部分,转发到 nginx 上去。
triptipstop
2019-04-28 17:34:06 +08:00
仅仅把消耗过大的业务用 Go 写成 api
Laravel 用 Go 的 api
ROR 已经是很好的设计了
smallX
2019-04-28 17:41:42 +08:00
果断上 go 啊。楼主的问题已经很具体了,还怕找不到解决方法。撸 go 将是另一片天地...
loading
2019-04-28 17:46:49 +08:00
解决 session 共用,然后 nginx 匹配后转发。
namek
2019-04-28 17:49:48 +08:00
helloworld 8 核 16G 80%cpu 单这一点 我觉得是代码的问题 跟语言没关系
zarte
2019-04-28 17:50:23 +08:00
golang 本身是不需要 nginx 的并发性能也 ok。
要用 nginx 的话反代到对应地址就可以了。
zjtsunshine
2019-04-28 17:54:01 +08:00
@namek 老哥你用下 laravel 就知道了
namek
2019-04-28 18:02:11 +08:00
@zjtsunshine 我们是 lumen+hprose+swoole laravel 初始化确实会占用 fpm 更多的内存跟 cpu 关系不大,laravel 写接口尝试去掉意义不大的中间件比如是否初始化了 session,6 楼和 26 楼的建议都很好,几百 tps 的 hellworld cpu80%有点高了。
OMGZui
2019-04-28 18:18:50 +08:00
这么好的写 go 经验,干吧
tanszhe
2019-04-28 18:28:23 +08:00
我也用过 laravel 确实有点慢,你的瓶颈是 php 本身还是数据库?
你可以看看 one 框架 和 laravel 非常像,性能保守估计比 laravel 高 10 倍以上
https://github.com/lizhichao/one
snail404
2019-04-28 18:30:14 +08:00
hello world 几百并发不至于 80% 吧,什么配置,opcache 开启了吗?
veike
2019-04-28 18:30:20 +08:00
8 核几百并发就彪到 80%了吗,有点恐怖啊。
KgM4gLtF0shViDH3
2019-04-28 18:31:42 +08:00
还是用 go 吧,变成体验完全不一样,php 在内网做管理后台比较适合
Trim21
2019-04-28 19:09:06 +08:00
可以看看知乎 Python 迁移 golang 的做法
ben1024
2019-04-28 19:27:13 +08:00
建议先考虑下项目本身的优化和问题定位

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

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

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

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

© 2021 V2EX