这半年来我都学了什么?这是一个揪心的问题。毕业那年我开始基础了Vue Or React ,去年一年估计都是在摸索Vue 和 React 在项目中遇到的各种坑,在去年的尝试中,我发现React是符合我们团队技术核心。
同时在去年的时间里我几乎试了 Thinkphp5,Laravel,Yii2 做差不多的项目,在今年中询,最后还是选择了Laravel,因为laravel的升级和扩展都做的比较好,thinkphp不是不好,就是在某些设计模式上做的没有laravel好,Yii3明年也准备出了,而已底层框架也要重写这个也将会参考laravel的来做。在这么久的尝试中,我最后还是选择了laravel,无论在框架和生态都是我们这里小团队需要的。小团队没这么多时间造轮子。
这也是在去年一年里面总结出来的。
在过往的一年里我们一直使用的虚拟机共享文件到本地里开发的,原因在于使用linux开发并不实际,如果你是纯后端人员使用linux完全没有问题,我这里指的是deepin。如果你要一个前端使用linux那就有问题了。在使用虚拟机开发后,我发现前端在使用npm i 或者 yarn install 的时候有时候会出现莫名的错误,谷歌了很久后发现是虚拟机共享文件的io问题。需要使用ssh链接到虚拟机里面进行操作。在去年已经了解过docker,不过那时候github的代码并没有这么多,几乎还是停留在dockerFile那个年代,那时候docker的使用操作不太适合我们的团队。
直到今年,发现环境统一的问题,每次都要配置nginx,和hosts这些复杂的操作后,我觉得重新拥抱docker,刚刚今年的docker几乎都已经是docker-compose 的用法了,我大概下载了4个开源的php环境,然后看着docker-compose.yml 后大概已经明白了用法。接下了的就是为团队编写一个方便的docker服务器环境。
就有了以下的东西了
https://gitee.com/caihongmao/dnmp/tree/master
随着业务的基础后,以前知道swoole这个东西,那时候的swoole还停留在2的这个阶段,那时候的听说做socket还有性能都不错,可我并没有打算用swoole来重新公司的服务底层架构,由于php-fpm的io读写机制,导致laravel在后面的性能上会不理想,在这个时候大家一般会提出负载均衡和分布式的方案,php-fpm做微服务是不可能的啦,可是以上的方案对于我们小团队来说成本并不划算,知道swoole可以用来承当服务器。所以搜索了一下后发现有laravel-swoole这个包,并且支持swoole4。
大概配置了一下后,使用wrk 测试后,发现性能比原来的php-fpm快了40倍左右吧,在这样的性能下,对于我们来说是零成本提升性能,算是比较满意啦。
由于本人一直使用的是ORM来做数据库的操作,所以SQL的能力并不是很厉害,mysql的性能和优化一窍不通,一台服务器完全做不了读写分离这个概念,如果用docker是可以,可是意义不大,既然用了Swoole,Swoole既然可以掺注内存中,那么.net 和 java 这里说的数据库连接池在swoole也能实现,当然node也有这样一个概念,可是node的回调用法老让我距的怪怪的。
SMProxy 是一款基于swoole做的数据库连接池工具,目前来说是开源,我并不知道以后会怎样,哈哈哈。
https://smproxy.gitee.louislivi.com/
使用起来也比较简单。在一番配置完毕后,发现的mysql的性能提升了3倍左右。SQL全部走ORM。
以上是后端和环境的配置环境处理。
在我的团队中,目前来说就我一人是前端,工作了是比较麻烦的,因为现在已经进入了多端年代了,目前还没有打算搞App端,这让我感到轻了一口气,目前有手机端,PC端,还有小程序端,这三端都是由我一人维护。手机端使用的vue,pc端使用React + Jquery的,小程序目前只有微信,直接用原生
现在pc要做SEO操作,以前用React写的程序效果是不错,可是SEO并不支持,以前在开源中国看过Next.js这个东西,然后在一番入坑后总结出以下文章内容
React 单页程序 转 SEO 渲染踩到各种深坑。
https://www.jianshu.com/p/f1ac53f04ae5
Next.js 算是成本比较低的一种做法,可是坑也比较多。不过先用这吧,总之比你用node 重写要好,当然现在已经使用了swoole那么php 的渲染性能也不成问题。
所以我在默默的做一件事情,参考了一个广州好朋友以前公司的一个政府项目,然后多页面的项目管理工具就变成以下的一篇文章了。
webpack + gulp 传统 多页面搭建
https://www.jianshu.com/p/a7cefa34745a
这样做可以用http-server来做前端服务器,也可以直接打包成多页html代码改后端套页面,比较现在的后端一大部分都会jquery 和基础html。
Mock.js这个东西是用来模拟数据的,可是用在传统代码中,就显得不太优雅,我现在计划是要用laravel belad 模板引擎的语法 + Mock.js来打包出一个给到后端直接套用的东西,目前阶段只是完成了打包成 html 这个阶段。不过没关系,有问题就去解决。
PC端暂时先由我这样来维护吧,同时也要完善以上内容。
手机端,使用的是有赞的ui框架,不过vue写出来的ui框架都有个同步,就是扩展太差了,不像React那样继承就能重写。
Vue能踩的都是那些坑而已,不懂就谷歌罗。
只是在目前滴滴公司出的多端框架还行,就是目前的ui组件太少了,还不完善。还要等等在做,打算用滴滴的框架管理手机端和小程序端。
接下来说说socket问题,socket可以说是比较重要的一个知识点,当然因为小程序的原因,你只能选择websocket了,做websocket里面你有很多,做的比较好又简单可能就Socket.io了,因为他是一套东西,加上Swoole也支持这个东西,当然Swoole也有他的客户端,既然这样的话就可以用客户端去通知Socket.io的服务端,当然你也可以用Swoole来做服务端,可是我想说的是json是javaScript的利器,所以服务端我最后还是选择了Socket来做团队的服务端,缺点嘛,就是还是要我来维护。
Socket.io我也总结出的以下内容
Socket.io 快速搭建 和 注意事项
https://www.jianshu.com/p/81ed0affe85a
最后说说
API网关还有数据库备份这个问题
api网关吧,这东西就像你调用微信接口一样,有次数,有目的,有防御。
由于本人不太懂JAVA 所以也只是简单配置一下 Kong 这个东西
效果还是比较好的,至少不过别人一直刷你的程序。
因为好一点的同学可以来了这里看看
现在使用了docker来做服务框架,有时候直接打包mysql-data 就好了 ,有时候就是打包镜像,可是发现一个问题就是空间越来越大,去年简单学习了一下Hadoop这个东西,知道facebook出了一个叫Hive可以用了数据库仓库,基于hadopp的存储原理,数据的丢失量不会太大,正在考虑这么处理。后面使用MQ来把数据写入到Hive里面。
以上是上半年对项目的业务和技术调整
我就是一枚 94年的代码搬运工,我叫傻梦兽。 苦逼….
网友评论