1.使用多线程与futureTask进行进行优化
1.1 实现流程图
1.2 代码逻辑模拟实现
public class OrderService {@Resourceprivate RemoteService remoteservice;//远程过程调用(模拟类)@Resourceprivate ExecutorService executorService;public Object order( long userId){JsonObject orderInfo =remoteService.create0rder(userId);Callable<JsonObject > call1 = new Callable<JsoNobject>(){@Overridepublic JsonObject call() {JsonObject goodsInfo = remoteService.dealGoods(orderInfo);return goodsInfo;}};Callable<JsonObject > call2 = new Callable<JsoNobject>(){@Overridepublic JsonObject call() {JsonObject pointsInfo = remoteService.dealPoints(orderInfo);return pointsInfo;}};Callable<JsonObject > call3 = new Callable<JsoNobject>(){@Overridepublic JsonObject call() {JsonObject deliverInfo = remoteService.dealDeliver(orderInfo);return deliverInfo ;}};FutureTask<JsonObject> task1 = new FutureTask<JsonObject>(call1);FutureTask<JsonObject> task2 = new FutureTask<JsonObject>(call2);FutureTask<JsonObject> task3 = new FutureTask<JsonObject>(call3);executorService.submit(task1);executorService.submit(task2);executorService.submit(task3);orderInfo.putAll(task1.get());orderInfo.putAll(task2.get());orderInfo.putAll(task3.get())return orderInfo;}}
1.3 实现逻辑描述
①将生成订单、修改库存、处理积分、发货等步骤拆分为子线程并行执行。
②使用Future和Callable实现多线程,获取子线程的返回值。
③通过FutureTask启动子线程,并获取结果。
2.后台批量处理的优化
2.1 实现逻辑描述
①.优化后端批处理的目标是在高并发场景下实现极致性能。
②.通过将单个请求转化为批量请求,以减少后端并发压力。
③.通过消息中间件(如MQ)和定时任务实现订单系统与商品系统之间的消息传递。
④.定时任务周期性运行,从MQ中获取数据并调用批量接口,提升处理效率。
⑤.采用异步处理方式,通过定时任务实现批量请求,提高整体性能。
⑥.定义Future类和Request对象,用于异步处理和批量请求,简化代码。
⑦.通过压测验证批量请求优化后的性能提升,确保优化方案有效。
⑧.优化后端接口调用次数,从一万次减少至十一次,显著提升处理速度。
⑨.通过限制批量请求数据量,确保定时任务运行稳定,避免数据堆积。
3.批量处理与mysql的综合性能优化
3.1 实现逻辑描述
①.展示了一个包含商品ID、商品名称、库存和价格的示例表。
②.通过SQL语句更新库存,展示了库存如何随商品ID的变化而变化。
③.批处理优化不仅仅是针对单个任务的优化,而是可以实现MySQL的综合优化。
④.通过批处理优化,可以提高数据库的处理能力,减少并发问题,从而提升整体性能。
⑤.通过应用层批处理优化,可以将多个请求合并为一个请求,减少数据库处理负担。
⑥.通过哈希表计数,可以实现对相同商品ID的库存进行批量更新,提高效率。
⑦.批处理优化在实战中的应用可以显著提升系统性能,特别是在高并发请求场景下。
⑧.结合业务需求和批处理优化,可以实现MySQL的极致优化,提升整体性能。