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的情况下 保持不变..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值