00:00
接下来我们优化一下我们系统里边最慢的这个接口,三级分类数据获取,那这个接口我们刚写出来,它的吞吐量呢,每秒两个,我们给数据库加了索引以后,每秒变为八个,其实这样呢也非常慢,慢的原因主要是我们这个接口里边来看这个catlo JS接口里边呢,我们是一个嵌套的,不断去数据库来进行查询,所以导致呢,跟数据库做很多次交互,这样呢就比较慢,那我们可以优化一下我们的业务逻辑,我们变为什么,我们可以在前边我们预先查出我们所有的分类,然后呢,我们将它保存起来。接下来我们。自己在这一块呢,从我们保存的这个list里边来挑,不让他去数据库再来查,所以我们把多次查数据库变为一次,好我们来说第一种优化,将咱们这个数据库,那多次查询变为一次,想要变为一次呢,那我们就来做第一步,我们先来查出所有,我们可以使用base member,点一个select list,那我们来不传任何的查询条件,这就是来查询所有,那将查到的所有的这些数据,我们接下来我们要开始来遍历,来寻找他们的parent CAD等于我们指定的这些值的,那我们把这些方法呢,我们就来挑出来,我们把它们抽取成一个我们。
01:26
公共的这个方法好,我们把这个我们来右键在这有re factor,这有一个抽取好抽取呢,我们把它变成一个抽取成方法,CR out m,我们就将get parent cid,那我们传的这一块参数的这个类型,它来传category entity,那我们就来先来抽取过来,抽取过来以后呢,我们来自己来写,能把我们所有的这些地方呢,我们都来替换一下,好。以后呢,凡是这个查询base map,我们发现它在这一块都自动的替成get parent CI的这一块方法了。
02:03
那把这一块方法呢,我们重新来变一下方案,签名呢,我们来改为我们要从哪一块来查询,我们把这个整个集合我们传进来,集合就在这儿,所以我们传的呢,是这个集合,我们从这个集合里边挑选出我们指定的这个parent CAD的,那接下来还有一个浪类型的,我们这个parent CAD,我把这两个参数呢调出来放在这,那接下来我们这个方法就应该是我们从。已知的这个集合里边挑出per cid等于我们指定的值,好,我把这一块呢去掉,这是已知的集合,从这个里边调来select list点我们使用stream,点一个filter,我们来进行过滤,那过滤的条件是什么呢?我们来写上过滤的条件,我们这个item,那整个的条件返回的到底是成功还是失败,我们要还是不要,我们是item里边有parent cid。
03:00
就是这个等于我们指定的这个值,如果等于我们指定的这个值了,我们就要,否则呢我们就不要,所以我们最终相当于是来返回它,那么来简写起来,那么filter就来写,那么当前的这个条件直接减括号,好直接来返回就行了。那么将返回的这个我们来收集成一个list.collect to list。这样呢,我们就找到了我们所有的parent cid是我们指定的值的,我们在这个集合里边找,然后呢,我们把它进行返回return,我们这个collect,那以后呢,所有来调用我们这个方法的get parent CAD,传两个,这是我们第一次查询到的所有select list,第二个我们来查哪个cid,那就是我们当前正在便秘的这个元素,就是V里边的,那把这个V的ID作为我们这个负ID,我们来进行检索,那下边这一块呢,也一样好把这个呢复制过来。
04:05
我们相当于要查这个分类的子分类,那就是L2里边的,把它的ID作为负ID,我们来查过,好我们这样就查出来了,包括还有我们LEVEL1所有的一级分类,那一级分类呢,也是get parent cid,我们调用我们这个指定的方法,那这个方法呢,传入我们所有的这个集合,而我们这个cid,所有一级分类,那就是cid是零的,我们写一个0L。我们相当于呢把这个方法改造了一下,那接下来我们来做一个压力测试,我们来看一下现在性能怎么样,那在这个测之前呢,我把这一块修改一下,为了开发期间方便,我就不写这么大了,我之前给大家演示内存溢出的时候来写这么大,现在呢,就来约定最大还是100M好,然后我们来重新运行起来,那现在来压力测试,我们的这个获取我们杰森数据的,那它的这个完整请求是我们来local host访问我们本机1万端口,写上1万端口下的,我们这儿有一个叫index的杰森,我们之前访问过来,点过来。
05:17
我们发现数据呢也是获取到位的,接下来我们来做一个整体的压力测试,我们打开解密,我们在这来HTP请求来指定上,那们现在呢是来压力测试,我们index catalog杰S,以前呢它还是非常慢的,那现在还是50个线程来进行测试,走,那看一下我们现在整个吞吐量怎么样,来看一下汇总报告,这块呢,还没有值,我来看结果数,有很多请求呢,已经成功了,那我们把这个呢停掉,来重新来测一下,好,HV请求来重新来发走。们是来获取看德lo接S来稍等一下看我们的这个汇总报告来点开,好现在我们通吐量呢变为每秒100多,如我们通过合理的业务逻辑设计,我们也能提升我们非常大的吞吐量,我们避免频繁的数数据库交互,好我把这个呢停掉,我们现在吞吐量呢是每秒111。
06:14
那相当于我们在这优化三级分类数据的获取,我们给他呢,优化了一下业务逻辑,好,那在这来记录上三级分类们现在呢,只是来优化业务,我们这个优化业务的时候呢,50的并发,在这得到的是111的吞吐量,我们来看一下响应时间。90%的响应时间是500多毫秒,99%呢是896毫秒,这个比以前要快很多,好,我们来写一个571和896,所以我们以后再来编写业务逻辑的时候,我们一定要考虑我们相关的优化操作,但是呢,其实这样我们发现它的吞吐量也并不高,所以呢,从下一节课开始,我们就来讨论我们分布式系统里边的性能提升大神器,我们的缓存,我们合理的运用好缓存,我就能对系统的整个体系能有一个质的提升。当然在使用缓存期间也会存在非常多的问题,那我们呢,就一起来分析和解决这些问题就行了。
我来说两句