前言
在我们工作中,有可能仅仅是把某一个项目经理或者架构师等你的领导分配给你的任务完成后就没有什么事情了。但是整个项目不可能仅仅是完成我们编写的代码,在保证我们编写代码的正确性的基础上,有可能会有很多其他的需求。比如说:响应速度,或者同时的访问量等需求。这个时候,我们就要从项目的整体上进行考虑我们的可以优化的地方。
正文
那接下来我们看一看我们的项目都有哪里可以进行优化:
首先是数据缓存的优化:页面缓存,URL缓存,数据缓存
页面缓存:如果我们访问某一个静态页面,而且这个页面很长时间里面的内容是不会轻易变化的时候,我们就可以运用页面的缓存。
URL缓存:顾名思义,就是将某一个特定的URL进行缓存,与页面缓存的不同的是,我们缓存的URL是含有数据的,不同的参数会返回不同的页面(也就是说这个页面是动态的页面)。
数据缓存:(1)redis缓存:redis是内存的K-V数据库,我们可以将某个对象进行序列化,缓存到我们的内存数据库中。比如:一个场景,某一时间段会有大量的用户访问我们的网站,刷新我们的网页,如果没有缓存,那么我们的数据是从数据库中取得的,每个用户取一次,那么10000用户就会10000次。是不是给数据库造成了不小的压力,这时候我们就要想办法缓存我们的数据,来缓解我们的数据库的压力;(2)直接内存缓存(代码里Map可以看似K-V的缓存数据容器):我们在使用redis数据库的时候,有可能某一些场景,在时间上不让我们从redis数据库中取出(虽然很快,但是会有一定的时延)这个时候我们就要考虑使用内存直接缓存我们的数据了。
其次是应用的性能优化:应用的部署优化,业务逻辑优化
上一个是对我们访问数据的优化,这一次是我们对我们编写的应用进行优化,(1)应用部署优化:故名思思,在我们部署我们编写好的应用部署的时候,我们优化我们的部署的结构。我们可以用LVS+keepalived对IP进行负载均衡来部署,在有就是我们可以运用nginx进行负载均衡部署,最后,我们可以区分核心功能和非核心功能,来进行分别的部署。(2)前面说的是我们对我们的应用在部署上的优化,那我们应当考虑我们对编写的应用进行优化:代码优化----优化代码逻辑,提高代码的处理效率;逻辑解耦------使用中间件,来进行异步操作我们的业务逻辑。
我们已经对我们的数据以及我们的部署做了许多优化,下面我们就要考虑我们对数据库性能优化:对于数据库的优化,我们首先可以对我们的服务器硬件进行升级,比如:处理器升级,内存升级,磁盘升级,网络升级;处理器可以提高我们处理数据的速度,内存升级,可以减少我们读出以及写入的时间,磁盘升级可以加快我们的数据的读写速度,网络升级可以增加网络的带宽,因为一般我们的数据库是有专门的服务器的,所有会有带宽网速的问题。仅仅硬件升级,不对我们的数据库表升级是不正确的,所有,我们还要对我们的数据库表进行比较好的设计,符合我们的业务需求,我们还可以对查询频繁的表设置索引,减少查询的时间。如果某一个表的数据量比较大,我们可以进行分表,把一个复杂的查询分为几个比较简单的查询。
上面我们考虑的设备升级会有一定的效果,但是任何计算机都有瓶颈,即使最好的硬件,但是结果会差强人意,那我们应到考虑1+1的策略,也就是说我们购买许多的服务器,来进行集群的部署,那么我们的业务处理的速度会大大的加快!!!!
由于时间仓促,以及作者的水平有限,里面有可能会有很多错误,尽请谅解,仅供参考!!!!