API接口访问优化方案

背景:

   rest接口提供服务. 接口的逻辑是:POST服务,批量数据的传入 到本地库(根据入参的条件分别到本地15个库表中查询)查询,以前的处理逻辑为 串行执行,假设有200的参数,则打开200个DB conn. 如果中间有一条conn wait,那么 后面的查询将一直 wait.. 最终报出 read time out , 有时候返回的时间在15-30秒.. 调用方的业务量上来 影响了处理效率


UPDATE:

优化方案: 
1. 减少数据库连接次数
        2.  对于传入参数的验证,不合法的参数不进行DB select操作
        3. 串行改并行处理。


具体实现:

1. 传入的参数中 对于同一个表的查询 进行 sql union的操作,形成一条SQL. 然后对于查询的字段 数据库增加index 
        2. 因为插入的参数类似人的基本信息 ,手机号跟身份证进行核验,不合法的不会进行SQL的拼装
        3. 对于同一个表的查询 作为一个 Thread去并行处理。使用到的countdownlatch这个工具类.
        4. countdownlatch中查询的结果都在一个ArrayList中. 线程不安全的,在结果封装的时候出现数据add错误的情况, 可以改为线程安全的list vector 。或者是使用Collections.synchronizedList 将list变成线程安全。

RESULT:

目前的响应时间在 1-2S,jmeter压测10的情况下 保持不变..

你可能感兴趣的:(性能优化)