有点遗憾对于Notadd,我们期待它能实现更多...虽然我们已经尝试了很多,但是由于自身的局限性PHP本身以及考虑到开发环境配置的复杂性,最终采用了折中的方案。下面说一下整个技术选型过程,也供以后相关开发者借鉴和借鉴:我们希望Notadd不仅能应用到web领域,也能应用到嵌入式开发领域,并且可以使用常用的websocket协议。Swooleswoole是我们考虑的首选,但是在扩展性方面,很难满足我们的模块化需求,对HTTPS和HTTP2的支持也不是很完善。同时,安装一些phper比较困难。在ARM板上安装太复杂了。当然,也有好的一点。2.0的自动异步,大大提高了并发量。workerman的主要问题在于workerman对HTTP2等协议的支持并不完善。同时phpsocket.io只支持服务端模式运行,并没有相应的MQTT协议实现,而且大部分都是ThinkPHP开发者,成本相对较高。AmPHPamphp协议支持最全,各种非阻塞扩展,可以说是最适合的,但是异步需要对laravel做很多改动。ReactPHPReactPHP实现起来足够优雅,但是问题也够多,而且PHP-cli本身的报错机制也不完善,给调试带来了很大的困难。按照PHP-PM的官方说明,几乎不需要大的修改就可以将PHP的并发提高10倍。但是在测试的过程中,Laravel无法正常运行,只好放弃~1.0。后续计划1.0也将是PHP版本,后续还会有更新,但会取消一些过于激进的更新。目前来看,Notadd的门槛已经足够高了。在线应用商店后,还会提供1.0(PHP)安装包。包括之前比较激进的一些改动,也会根据开发者的投票来选择。当然,商城等模块还是会提供的。2.0计划Notadd2.0将基于Nodejs开发,同时提供一些1.0无法提供的功能和特性。为什么选择nodeJS?性能:在IO密集型操作中,由于异步非阻塞机制,NodeJS可以轻松实现单机5W并发,而Laravel只有200个。方便:NodeJS可以轻松安装和扩展,而PHP需要pecl或phpize甚至重新编译,这对于很多对环境部署不是很熟悉的PHPer来说是噩梦。简单:在ARM环境下,只需要Node就够了,不需要Nginx或者Apache,PHP自带的服务器只适合调试。扩展:NodeJS本身提供了很多系统层的操作。另外,npmjs.org上的包也足够多,对于后期的扩展来说无疑方便很多。为什么是nest.js?expressThinkJSKOAEGG都不能满足中大型项目的开发,目录结构会极其复杂。借鉴spring思想的Nest.js无疑是最适合和方便Laravel开发过渡的。Nest默认使用typescript~为什么不直接使用Go或者JAVA呢?归根结底还是开发成本的原因,而这些语言在IO密集型上的优势并不明显,只有10-20%的差距,但是开发效率却差了很多,而且对于企业来说,招聘是也是一个问题。开源地址https://github.com/notadd/notaddhttps://gitee.com/notadd/notadd
