做网站需要申请商标哪些类目,网络推广的基本手段,网络规划设计师教程pdf,wordpress网站管理文章目录 场景描述优化思路分享资源 场景描述
接口需要从系统1查询数据#xff0c;查出的每条数据需要从另一个系统2中再去查询某些字段#xff0c;
比如#xff1a;从系统1中查出100条数据#xff0c;每条数据需要去系统2中再去查询出行数据#xff0c;可能系统1一条数… 文章目录 场景描述优化思路分享资源 场景描述
接口需要从系统1查询数据查出的每条数据需要从另一个系统2中再去查询某些字段
比如从系统1中查出100条数据每条数据需要去系统2中再去查询出行数据可能系统1一条数据对应系统2的10条数据这样数据量很大的情况下这个接口很慢如何解决
优化思路
结合业务考虑优化点 分页查询、批量操作 、异步 、多线程、sql优化、表索引等优化、es整合数据放ES里… 道友们有补充的可以评论下哈
这里的优化点优化1考虑分页查询 批量查询 优化2开启2个线程去查Future.get()会造成主线程阻塞也就是当所有future都得到结果后主线程才能继续执行下去示例代码
package com.song.controller;import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;/*多线程解决当前系统接口需要去另外2个查询数据并将数据拼接出来返回前端系统数据优化1分页查询 批量查询优化2开启2个线程去查Future.get()会造成主线程阻塞也就是当所有future都得到结果后主线程才能继续执行下去*/
public class DataFetcher {public String fetchDataFromSystem1() {// 查询系统1的数据逻辑String dataFromSystem1 Data from System 1;return dataFromSystem1;}public String fetchDataFromSystem2() {// 查询系统2的数据逻辑String dataFromSystem2 Data from System 2;return dataFromSystem2;}public String fetchDataFromSystems() throws Exception {ExecutorService executorService Executors.newFixedThreadPool(2);// 创建两个线程分别用于查询系统1和系统2的数据FutureString future1 executorService.submit(() - fetchDataFromSystem1());FutureString future2 executorService.submit(() - fetchDataFromSystem2());// 等待两个线程执行完毕String dataFromSystem1 future1.get();String dataFromSystem2 future2.get();// 拼接数据并返回结果String combinedData dataFromSystem1 | dataFromSystem2;return combinedData;}public static void main(String[] args) {DataFetcher dataFetcher new DataFetcher();try {String combinedData dataFetcher.fetchDataFromSystems();System.out.println(combinedData);} catch (Exception e) {e.printStackTrace();}}
}
分享资源