通过负载均衡设备对外提供访问时发现,当选课开始时,该设备显示无法将用户访问量平均地分配到两台应用服务器上.故需要在选课之前,重新配置两台服务器,直接对用户提供服务.因此,优化选课系统的工作主要落在对数据库的操作上.具体措施如下:
2.1.2设置数据库连接池
对于选课系统来说,最重要的操作就是数据库连接,数据库连接管理好了,程序的性能也就提高了.数据库操作主要包括建立数据库、查询、修改、删除和断开数据库连接等.使用这种开发模式,如果是简单的操作,因为它访问数据库不频繁,所以只需要创建一个数据库连接,用完后就断开数据库连接即可.所以,系统开销不大.但是如果是复杂的操作,情况就截然相反了:对于数据库,建立、关闭数据库频率过高,在很大程度上系统的性能都降低了,系统的开销也增大了,甚至造成系统停滞不前.其次这种传统的管理模式,还要专门设置数据库管理,必须保证每一次的数据库连接都能够以正确的方式及时关闭.一旦有连接没有关闭,就会导致程序异常、数据库系统内存泄露,最终只有重启数据库才能解决问题,给工作带来很大的麻烦.因此提高系统的运行效率将是至关重要的.
针对这个问题,数据库连接池思想应运而生:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,使得该连接池中的连接可以得到高效、安全的复用.简单来说,就是为数据库设置一个“缓冲池”,提前在“缓冲池”中放一些连接。当需要访问数据库时,只要从“缓冲池”中取走一个,用完后放回去即可。这样就减少了数据库连接的建立和断开的次数,减少了开销。
但是,“缓冲池”中应该放多少连接池呢?下面将对数据库连接池进行设置.在进行数据库连接池设置时,可设置最小连接数(minConnection)和最大连接数(maxConnection)来控制连接池中的连接.最小连接池是从系统启动时连接池就一直保持的连接数,所以如果某操作对数据库连接的使用量不大,就会有大量的浪费;最大连接池是连接池中能够允许的最大连接数,如果对数据库连接的请求超过这个数,后面的请求将被加入到等待队列中,这将会影响之后的操作.
2.1.3缓存设计
由于在选课过程中,学生首先要查询信息,课程安排信息、有关选课规则信息等等,然后进行选课,最后提交选课结果.由此可以看出,客户端所请求的数据既有动态数据也有静态数据,下面将针对这两类数据设计不同的处理方式.
对于静态数据,采用静态策略,静态策略是发现空闲连接不够时再去检查.从数据库返回的信息经过缓存服务器,并在缓存中保存该数据,那么其他需要同样信息的学生就可以直接从缓存中获取信息而无需再次请求数据库连接读取信息.例如,同一个数学与应用数学班的学生所需要查询的课程安排信息、有关选课规则信息都是一致的,当该班中第一个选课的学生选课结束后,已查询的信息将从数据库中读取,保存在缓存中,因此,该班的其他同学再选课时,就不需要访问数据库,只要从缓存服务器中读取即可。这样一来,我们可以高效的使用连接,从而设备的负载压力、减少访问数据库的次数.
对于动态数据,采用动态策略,即每隔一段时间就对连接池进行检测,如果发现连接数量小于最小连接数,立即补充,保证连接池的正常运转。从数据库读取的信息不需要经过缓存服务器,由真实服务器直接传回负载均衡器,最后返回给客户端.