Skip to content

【思考总结】如何提高项目的稳定性和开发效率

前言

除了保证项目如期上线,如何保证项目上线后的运行速度,如何提高容灾能力,减少bug同样是我们需要考虑的问题。

我们从以下几个方面来探究思考,抛砖引玉,看看大家是否有其他维度来提高项目,欢迎在评论区留言。

1.语言选择方面

开发效率和运行效率的平衡点

  1. 我入行时做的安卓开发,使用Java语言,觉得入门门槛比较高:异常处理,IO,集合,JDBC等等,除了基础概念不好理解之外,代码量也比较大。
  2. 使用Java开发了2年安卓之后,开始使用PHP做接口开发,觉得PHP开发真的比Java开发代码量少太多了,而且PHP的数组实在是太简单了。那时候满脑子想的就是“PHP是最好的语言”
  3. 去年接触了Go,发现Go对并发处理实在是太友好了,而且代码量像PHP一样少,甚至更少。而且Go打包编译时自动格式化代码,比PHP更规范。Go性能比肩Java,对开发者的友好程序甚至略好于PHP(我个人的体会)
  4. 所以,对开发语言的选择对项目至关重要,我们要结合自己的业务场景,选择合适的语言进行开发。我们目前采用的是PHP+Go,内部服务采用RPC的方式来通讯。

2.框架选择方面(开发速度、项目性能)

我们来探究一下相较于其他框架,为什么swoole的速度更快?swoole是如何做到的?

  1. swoole是PHP的一个extension扩展,但又不仅是一个扩展,因为普通的扩展只是提供了库函数。而swoole扩展在运行后是可以接管PHP的控制权,进入事件循环的;
  2. swoole使用纯C语言编写,定位就是一个网络通信和异步IO的基础库,不依赖其他三方,定位纯粹;
  3. swoole底层内置了异步非阻塞、多线程的网络IO服务器,当IO事件发生后,swoole会自动回调相应的php函数
  • 总结:异步处理,提高对IO密集型场景并发处理
  1. swoole框架相比于fpm等,主要节省了PHP框架和全局对象每次请求创建销毁带来的性能消耗:与http请求无关的全局对象只需要构造一次,并且swoole还支持对某些对象和数据做缓存控制
  • 总结:swoole常驻内存,避免重复创建销毁,重复加载带来的性能消耗
  1. 之前一个浅薄的认识:认为swoole之所以比laravel这类框架性能高,是因为laravel做了