ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(人的一生是短暂的,但如果卑劣的度过这一生,就太长了 - 莎士比亚)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
-
提高性能
- node自身
- 多用promise并行处理io,或者其他的第三方异步io库,比如async,bluebird
- 减少同步代码,多使用异步
- 使用typescript,虽然开发成本提高了,但性能会提升。因为动态类型的代码,v8虚拟机在运行的时候会反复的执行优化,如果不更改类型,那么就不会触发v8虚拟机的反优化。也是一个提高性能的手段
- 使用多进程,充分利用CPU的多核机制。提高处理非IO类业务的性能
- 数据库
- 热点数据使用缓存,比如redis
- 数据库分库分表,减小库和表的数据大小,提高检索性能。数据量的减少意味着检索范围也会缩小,从而提升了性能
- 数据库表添加索引,对热点字段建立索引,提高检索性能。数据库性能提升的主要方式之一
- sql优化
- 比如mongodb数据库,避免使用" n e " , " ne"," ne","exist","$not"等字段,这些字段在查询时不会使用索引,所以检索性能较差
- 限制返回的结果数,比如limit。当结果数过多时,会降低性能
- 表字段内容不要过大,比如几m,几十m的那种。过大的字段会在保存和查询的时候降低性能
- 数据库集群 以mongodb为例
- 使用副本集,读写分离,提高检索性能
- 当数据量达到千万,亿级别时可以使用分片。副本集虽然读写分离,但数据的存储并没有分离。mongodb的分片解决了这个问题,相比较副本集,一个副本存储了所有数据库,但分片等于一个副本的数据分别存储到数十个,数百个分片中。查询的时候,同时从这些分片中进行查询,将查询的性能又提高了一个档次
- node自身
-
提高质量
- 使用typescript,集成eslint,避免使用any,提前检查错误,减少bug出现率
- 审查代码,每次代码版本测试/发布前进行审查,及时对有问题的代码进行优化和修复
- 核心代码编写注释,方便后期维护和二次开发
- 抽象通用组件,提高代码复用性,减少冗余代码
- 编写测试单元,发版前运行测试单元