今天太忙了,少写,以后再补充。异步模式的Go语言越来越流行,很多大型互联网公司的后端都转向了GO。Java圈知名的面向服务框架Dubbo也宣布向异步模式转型。这是一个大趋势,异步模式已经被市场验证和认可。在Web服务器选择方面,几年前,大多数人开始选择异步非阻塞的Nginx,而不是同步阻塞的Apache。正是因为有了Nginx这样的异步程序,才具有更好的适应性和更强的并发能力。现在在后端业务开发和编程方面,技术实力雄厚的团队开始将技术栈从同步切换到异步。同步阻塞模式存在很多缺陷,如并发性弱、适应性差、请求慢导致服务不可用等。比如在后台接口调用第三方API的场景,同步方式的效果极差。过去越来越少人使用Java、PHP、C++、Python、Ruby语言开发的同步阻塞模式框架。Node.js虽然Node.js也很火很流行,但是仍然很少看到公司使用Node.js作为公司后端的主要编程语言。C++、Java、PHP、Python语言也有一些类似的解决方案,包括Swoole-1.0,也是基于类似Node.js的异步回调模式。本质原因是异步回调的技术方案以及基于它的一些优化方案,包括Promise、Future、Yield/Generator、Async/Await等,改变了程序开发的风格和习惯。如果要使用这些技术,工程师需要额外学习如何使用这些关键字和函数。这些技术解决方案的使用无法与现有程序兼容。可以说研发成本巨大,而且很难平稳过渡。影响了异步回调技术栈的普及。这种编程模型很难让所有人都接受。协程模式兼顾了同步阻塞的可维护性和异步非阻塞的高并发性。将成为未来后端开发领域的主流技术方案。最重要的是,协程模式只需对现有项目代码进行少量调整即可运行,甚至可以完全兼容老项目。兼容性只需要框架层。这允许团队平稳过渡。使用协程模式,开发者完全不需要学习额外的关键字和函数用法。编码风格与同步模式完全相同。在各种协程技术中,GO是最为耀眼的。协程、通道、静态语言、性能、丰富的编译、丰富的标准库、完整的生态、谷歌等等,优势太多了。GO语言,我个人认为是所有编程语言中最值得学习的。Swoole2.x让拥有20多年历史的老牌后台编程语言PHP也具备了协程的能力。与Go等技术相比,PHP+Swoole技术栈更适合快速开发、快速迭代、业务驱动的场景。毕竟动态语言比静态语言更灵活、更高效。而Go更适合编写系统级软件和核心业务。2018年重构了swoole框架,一个很老的项目,底层支持Swoole2.x协程模式。主要是wheel公司里面有很多项目是基于这个框架的,尤其是service层用的是swoole框架。我们希望业务代码可以一键切换到协程模式,而无需更改一行。理论上,其他同步阻塞的PHP框架,如Laravel、Yii,只需修改底层即可兼容Swoole2.x协程,实现项目代码到协程模式的无缝切换。使用协程后,整个系统的性能、并发、稳定性都有了很大的提升。以前线上经常出现一个慢请求导致整个服务器卡死的问题已经不存在了。PHP&Swoole虽然Swoole2.0的历史还不到两年,但与Go语言10年的耕耘相比,还有很长的路要走。但是相对于GO这样的静态语言,PHP+Swoole还是有很多优势的。PHP更简单易用,PHP是一种动态语言,使用起来更灵活。当然,如果是新项目,还是推荐使用Swoft这个专门为Swoole2.x设计的框架,历史包袱少,稳定性更好。现在有了Swoole2.0协程,我们对PHP的未来还是充满信心的。
