一、背景
在笔者工作中遇到的前后端交互的项目中,后端处理并返回数据,前端进行显示数据时,会有核心数据和非核心数据的区别。对于核心数据应该强保障,而对于非核心数据则弱保障即可。
那么核心数据和非核心数据的处理方式和逻辑编排则是不同。刚步入职场时,最得心应手的写法就是一把梭。不管数据核心与否,全部是同步调用和无异常处理。
二、演进
观察
一把梭的写法
public class ToBShowQueryTest {
//http的响应接口
public static void main(String[] args) throws InterruptedException {
String httpRes = getHttpRes();
System.out.println(httpRes);
}
//服务编排接口
public static String getHttpRes() throws InterruptedException {
String codeData = queryCodeData();
String nonCodeData1 = queryNonCodeData1();
String nonCodeData2 = queryNonCodeData2();
return codeData+"+"+nonCodeData1+"+"+nonCodeData2;
}
//原子能力查询接口
public static String queryCodeData() throws InterruptedException {
Thread.sleep(1500);
return "核心数据";
}
public static String queryNonCodeData1() throws InterruptedException {
Thread.sleep(3000);
return "非核心数据1";
}
public static String queryNonCodeData2() throws InterruptedException {
Thread.sleep(3000);
return "非核心数据2";
}
}
反思
一把梭写法的时序图如下:
其中查询核心数据需要1.5s,查询非核心数据1和非核心数据2则都需要3s,故一次http请求则需要7.5s。如果