hyperf 学习小记 - 1 序言

原创
2020/08/22 10:00
阅读数 466

hyperf 学习小记 - 1 序言

说说PHP

PHP是最好的语言?

不能说是最好的语言,但 PHP 是一个很适合做 快速web开发 的低门槛语言。

主要在于 PHP-FPM 架构的优秀,极大的降低了做开发的心智负担:

  • 面向请求/页面 的同步、串行的数据流模式,思维上简单直接,一条线走下去;
  • 解释型语言,无需编译,所改即所得,实时查看修改效果;
  • 底层架构保障:非常好的横向可扩展性,很多性能问题可以通过加机器解决;较好的稳定性,请求容器模型,进程隔离及重启机制,保证了即使单个请求触发的错误或崩溃,也不会影响整个系统运行。

加上长期积累起来的大量实用函数、类库、解决方案支持,开发者可以专注于业务本身,开发快,产出高。在互联网高速发展的十几年,应对快速成长的业务,不断“创新”的需求,PHP(或说lnmp技术栈)确有优势,甚至大量新人或跨行业者成为了PHPer。

PHPer是最差的开发者?

不过双刃剑效应,PHP的好,也是PHPer的坏。

这种架构层面的“糖”,对开发者的“毒害”也很深。我以及我所接触的很多PHPer,(至少前期)系统性思维都较差。 不跟其它语言和业务场景比较,仅在典型web开发领域,很多开发者都会有这些问题:

  • 经常有意或无意地忘记了“请求是并发的”这回事。在很多业务,如秒杀之类需要考虑高性能大并发的场景上,经常踩坑。
  • 系统分层思想理解不足,完全没有理解分层的意义和边界。普遍使用的MVC模式,常常只是套样子,关键的业务抽象变成一个仅做透传的多余存在,本质还是Controller直接操作数据库在搞。
  • 编码过于自由,缺少编码规范约束和设计模式,代码维护靠口口相传。

PHP很多时候是作为产品1.0先锋,做业务探索者的角色。前期规模一般不大,很多问题还没暴露出来项目就挂了。 或者就算业务规模大了,但性能方面无法满足,或代码可维护性很差,背负原罪被用其它语言的拥护者重构。缺少大规模系统的项目实践,更造成实际上很多的PHPer技术上始终停留在浅层应用阶段。

中肯的定位?

个人认为,PHP较好的使用方式应该是:在探索性的产品初期可重用,快速实现业务,落地试错;随着业务成长,对系统稳定性,性能有更高要求时,逐步将关键模块逐步服务化(可使用其它语言),PHP做为“胶水”主要面向端场景进行适配。

因此,一个好的PHP基础架构,必须是一个可渐进式扩展的,既保证前期开发的快速,也要为未来系统扩展预留楔子; 而PHPer,则要有看到未来架构形态的眼光,也要有着眼业务的定力,微妙保持开发效率和系统可维护性的平衡。

说说 swoole & hyperf

衰落?

PHP7 带来性能的提升以及大量的新语法糖,PHP-FPM 成熟模式对于快速 web 应用开发仍然有一定优势。

但需求上整体环境遇冷,缺少广泛的业务市场;技术上前后端分离成为常态,微服务甚至serverless等新架构出现。 缺乏新业务的刺激,成熟业务模式下,其它语言的也可以构建完整微服务化解决方案且有更好的性能。PHP语言来到着衰落的关口。

大环境问题由天不由人;技术上,PHP被诟病的性能上主要的问题有两点:1 同步阻塞的运行模式;2 缺乏系统级的资源共享。

契机?

swoole扩展实现了协程和多种网络服务引擎,带来PHP开发高性能应用,构建完整后端服务的可能。

落地

是否选择swoole生态,是一个可以展开的话题。考虑到渐进式的技术成长(迭代)是较容易落地的方式,我认为还是值得学习的。

但对很多只会“面向页面编程”的开发者来说,直接学习应用swoole的成本是有点高的。最好还是找到一个相对成熟的框架,减少技术本身的心智负担,继续专注于业务之上。

hyperf 是当前相对 文档成熟,架构清晰,工程化支持较好 的一个基于swoole的应用框架。

嗯~也可能是swoole生态接下来可选的最主要甚至唯一的框架了。

说说文章

上面也说了,其实 hyperf 文档写的还是比较清晰的。除了介绍是什么和怎么做,有时候还顺便科普了为什么。

不过总归他是一个框架的文档,内容还是大而全。正如产品上多一个按钮点击都会流失很多用户,多一点点的学习门槛,就能卡掉不少准备学习的人。

本系列文章是自己的学习总结,主要针对之前只熟悉CGI模式的PHPer,以场景实例为引导去串联内容。内容上屏蔽可选项,大多只提供一种实践方案(注意:偏入门实践,而非生产实践),让感兴趣的人能够快速上手并见到效果,后续再自己逐步学习查漏补缺,完善整个知识体系(重要!)。

扩展阅读

2017年PHP程序员未来路在何方

编程语言的心智负担

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部