PHP和微服务,是否是一场错配?
时间:2022-03-14 05:57:01 | 来源:行业动态
时间:2022-03-14 05:57:01 来源:行业动态
PHP语言具有运行高效、部署快速、扩展库功能强大、且HiFM智慧楼宇管理系统的研发团队具有多年的PHP语言研发经验,能够快速、准确地实现复杂的业务需求,因此HiFM系统首选PHP语言作为系统的主开发语言。
HiFM系统由数十个功能模块组成,业务模块耦合性高。随着系统功能不断丰富,复杂性不断提升,系统体量越来越大,维护和升级成本不断攀升。HiFM系统作为面向企业用户的SaaS解决方案,需要对接大量企业已有的业务系统,这使得系统变得越发臃肿。为了减小耦合性,HiFM系统启用了前后端分离的模式,更为轻巧快速的PHP框架,但这并未从根本上解决所有问题。而从长远来看,HiFM系统必将扩展更多边缘模块,对接更多的个性化业务系统,这对系统架构提出严峻挑战。
我们决定选用微服务架构解决这些难题。微服务技术带来的好处不言而喻,独立开发、独立部署、独立发布、去中心化管理,支持高并发高可用,支持丰富技术栈,企业可以根据需要灵活技术选型。
但深入分析之后发现:PHP 需要 Nginx 和 PHP-FPM(或类似工具)来实现进程和连接池管理等功能。这意味着部署基于PHP语言的微服务,PHP-FPM 和 Nginx 也必须一起运行。这浪费了系统资源,也降低了扩展的效率,也带来配置复杂性的问题。优化单 PHP 实例已经很头大了,因为需要了解和配置 PHP,PHP-FPM 和 Nginx 这一堆组合,我们无法想象最终在弹性的 Kubernetes 环境中配置多个 PHP 栈的痛苦情形,完全不知道在同一台机器上运行了哪些服务。
既然我们已经致力于以软件架构的优化整体提升应用的快速发布、快速上线,那么因为语言而增加更多长期开销、配置和管理复杂,就是得不偿失的。
重构PHP应用是唯一的选择吗?