今天写完了自己的一个大电商项目,昨天针对一些地方进行了优化,我大概得优化点如下,大家可以自己看一下,也可顺便补充:
性能优化:
1.前端做缓存,请求过一次的资源就不用重复请求。
2.延迟加载页面图片等信息,提高首屏响应速度
3.请求合并发送,比如一个热点商品出现,如果每个人都去购买,那么会有多次请求,我们可以在请求到达后端之前,做合并,等数量达到20个小请求时,再同意发送到后端。
4.增设多台服务器或者集群模式,通过网关等路由,减小单台服务器节点的压力
5.在网关层面做缓存,将后端的数据缓存在网关层,下次请求,直接从网关获取数据。
6.选择nginx等,性能更高的中间件,提高系统QPS,
7.在nginx做缓存,可以利用openrestry实现,为nginx提供了强大的扩展性
8.将大型服务拆分为小型服务,并通过微服务网关进行转发,提高服务的并发处理能力(比如电商系统的订单,用户模块)
9.异步技术,对于影响不大的接口,可以采用异步保证数据的最终一致性即可,对于安全性要求性较高并且同步性要求高的数据才需要同步或者加锁。
10多线程,可以和异步技术结合,通过开启多个线程,加快对指定数据量的处理速度,当然多线程往往会伴随着并发问题,需要我们对特殊的业务代码分析,进行加锁或者无锁情况保证线程安全。
11.采用缓存相关技术,如redis,mongodb,本地缓存caffine,guava等。
12.对于一些应用的使用,例如tomcat我们可以人工调整他的参数,比如maxThread,maxConnections等,增加tomcat请求处理阈值。
13.在存储层面进行优化,(1.当数据库数据单表过大时,可以采用分库分表对数据拆分)(2.对关键字段做索引,提高数据检索效率)(3.对数据做冷热分离,定期清理访问量过低的数据)
14.sql优化:(1.常见的sql优化就是加索引,但也不只有这一种) 《有时我们可以不用先考虑索引而是考虑简化sql语句,对于不必要的数据我们尽量不要一并查出来》-----这是很多刚开发的同学的通病,看了过多的八股文缺少自己真正的想法,对于优化场景我们往往可以自己先去想想,而不是直接选择八股文推荐的优化
15.选择更合适的数据库,不一定局限于mysql,例如pgsql,大数据相关数据库clickhouse等。
16.采用性能更好的框架,例如vertx反应式编程,spring系列的框架的性能其实排在60几名,但是vertx却在前10 .
整体下来光是优化,感觉这个项目就能写好多哈哈。大家得空也可以挨个实践一下哈。