前面我们和大家分享过2018年的前端技术趋势总结,本文我们针对后端再和大家分享一下关于2018年后端技术分析总结,希望对大家有用。
node.js
虽然 node.js 也很热门,很流行,但仍然很少见到企业将 node.js 作为公司后端方面的主要编程语言。c++、java、php、python 语言同样也有一些类似的方案,包括 swoole-1.0 也是基于类似于 node.js 的异步回调模式。
本质原因是异步回调的技术方案,以及在它之上所做的一些优化方案,包括 promise、future、yield/generator、async/await 等,改变了程序开发的风格和习惯。如果要使用这些技术,那么工程师需要额外学习这些关键词和函数的使用方法。
使用这些技术方案是无法兼容已有程序的。可以说研发成本巨大,难以平滑过渡。影响了异步回调技术栈的普及。这种编程模式很难让所有人都接受。
异步模式go 语言越来越热门,很多大型互联网公司后端正在转向 go 。java 圈知名的服务化框架 dubbo 也宣布转型异步模式。这是一个大趋势,异步模式已经被市场验证和认可。
在 web 服务器选择上,几年前大部分人就开始选择异步非阻塞的 nginx,而不是同步阻塞的 apache。就是因为 nginx 这样的异步程序,它的适应性更好、并发能力更强。现在在后端业务开发编程方面,技术力量强的团队已经开始将技术栈从同步模式切换为异步了。
同步阻塞模式存在较多缺陷,并发能力弱、适应性差、慢速请求导致服务不可用。如:后台接口中调用第三方 api 的场景,同步模式效果极差。过去那些使用 java、php、c++、python、ruby 语言开发的同步阻塞模式框架,用的人越来越少。
协程而协程模式,兼顾了同步阻塞的可维护性和异步非阻塞的高并发能力。将会成为未来后端开发领域的主流技术方案。
最重要的,协程模式只需要对已有项目代码进行少量调整就可以运行起来,甚至可以完全兼容老项目。只需要框架层进行兼容即可。这使得团队可以平滑过渡。
使用协程模式,开发者完全不需要学习额外的关键词和函数用法。编码风格与同步模式下是完全一致的。
各种协程技术里,go 是最耀眼的那一个。协程、通道、静态语言、性能、富编译、标准库丰富、生态完整、google 等,优势太多了。go 语言,个人认为是目前所有编程语言中,最值得学习的。
swoole 2.x 让 php 这门 20多年历史的老牌后台编程语言也能有协程的能力。相比 go 这样的技术,php + swoole 的技术栈,更适合快速开发、快速迭代、业务驱动的场景。毕竟动态语言比静态语言还是要更加灵活、开发效率更高。而 go 更适合编写系统级软件、核心业务。
2018 年我重构了 swoole framework 这个很老的项目,底层支持 swoole 2.x 协程模式。主要原因是车轮公司内部有很多项目基于这个框架,尤其是服务层全部用了 swoole framework。我们希望业务代码一行不改,可以一键切换为协程模式。理论上其他的同步阻塞 php 框架,如 laravel 、yii ,都可以实现只修改底层兼容 swoole 2.x 协程,实现项目代码无缝切换协程模式。
使用协程后,整个系统的性能、并发能力、稳定性有了巨大提升。过去,线上经常出现一个慢请求导致整个服务器卡住的问题不存在了。
php & swoole虽然 swoole 2.0 只有不到两年的历史,相比 go 语言 10 年的耕耘,还有很长一段路要走。但相比 go 这样的静态语言,php + swoole 还是有很多优势的,php 更加简单易用,php 是动态语言,使用起来更加灵活。
当然,如果是新项目还是推荐使用 swoft 这个专门为 swoole 2.x 的框架,它的历史包袱更少,因此稳定性更好。
现在有了 swoole 2.0 协程,我们对 php 的未来仍然充满信心。
相关推荐:
19 个 javascript 有用的简写技术分享
2018年web开发者不得不知的技术趋势分析
php技术提升心得与方法