首页 » PHP教程 » php去转移技巧_浅谈从PHP迁移至Golang根本篇

php去转移技巧_浅谈从PHP迁移至Golang根本篇

访客 2024-10-25 0

扫一扫用手机浏览

文章目录 [+]

由于PHP在高并发、多进程/线程以及密集打算领域并不善于。
这种情形在swoole涌现之后得到了很大的缓和。

但是,随着微做事架构的兴起以及容器时期的到来,这种情形又再次加剧。
由于PHP大都须要借助Nginx和PHP-FPM或类似软件来进行进程管理,这对付支配的微做事意味着支配PHP项目代码的同时必须同时包括PHP-FPM和Nginx,这除了增加资源本钱也降落了效率。

php去转移技巧_浅谈从PHP迁移至Golang根本篇

2、Why Golang

那么,为什么是Golang呢?

php去转移技巧_浅谈从PHP迁移至Golang根本篇
(图片来自网络侵删)
首先,Golang与PHP很像,都是类C措辞,可以很好的进行『知识迁移』其次,Golang在性能和开拓效率上有很好的平衡,语法大略,措辞层面上支持并发编程,且根本库健全,支配随意马虎。
最主要的是,Golang在微做事与容器领域有很好的根本,后期系统可完美实现微做事化与容器化。

当然了,即便如此,PHP还是天下上最好的措辞。

附上一些Go的教程,适宜刚入门级别看看,算是福利。
关注头条号,私信回答“资料”获取。

3、How To

做好了思想上的准备之后,就可以开始确立技能方案了。

任何大型系统的重构都不可能是一挥而就,顷刻之间发生的,须要一个循规蹈矩的过程。
并且,在此重构过程中,大条件必须保持现有系统的所有业务照常运行,以是须要确立的是一个对系统基本无损的分模块逐步更换的方案。

回归到我们当前的系统架构:每台做事器上均支配相同的PHP项目代码,统一由PHP-FPM阐明实行,并通过Nginx进行反向代理。

在梳理了系统各功能模块业务职责之后,我们决定先将数据模块试水:利用Golang进行改造,情由是数据模块功能较为大略,Golang只需打算逻辑然后向前端页面供应数据接口即可。
同时借助Nginx的反向代理功能,将数据接口前缀的转发至Golang程序,其他所有要求还是依旧转发至原来的PHP-FPM程序。
其抽象模型大致如下:

4、About Hot-Update

所谓热更新,是指在系统升级或修复bug过程中对用户来说是无感知的。

利用PHP开拓时,开拓者无需关心热更新,由于PHP是阐明型的编程措辞,PHP-FPM会根据最新的要求实时去调用实行详细某个PHP文件;而Golang则不同,它是编译型措辞,在运行时会把Golang文件加载到内存,这时,所有对代码的改动想要更新必须要重启做事才能生效。
那么如何在重启做事过程中,不影响当前用户要求,便是热更新须要办理的问题。

目前Golang热更新大致有两个思路:Plugin包(Golang1.8+,事理类似C++动态链接库办法)和第三方热更新库(如)Facebook开源的grace库以及endless库等。

关于第三方热更新库逻辑大致为:

发布变更的项目代码文件发送变更关照给做事进程(旗子暗记办法,常日是USR2旗子暗记)做事进程收到关照后,调用 fork/exec 启动最新项目代码(新进程)子进程调用会从父进程继续 socket 文件描述符来重新监听 socket(此时父子进程同时Accept连接)原有父进程不再吸收新要求,待正在处理中的要求处理完后,进程自动退出(gracefully shutdown)子进程托管给init进程总结

以上大致接先容了从PHP项目迁移到Golang所需的一些思想与技能上的准备,后续篇章将先容详细技能方案与实现细节。

标签:

相关文章