搜索接口调研
小于 1 分钟
一、背景
背景:老板让我优化一个用户搜索接口,要求是用户搜索请假交接人时优先展示同部门的用户其次是上级和下级部门的用户最后是其他部门的用户。
二、优化方案
- 数据库查询优化。目前的公司内部的平台都是比较通用的查询,一些没有用的字段,也查询了。这里我去找前端沟通确定他们那边需要用到哪些字段,开发一个专用接口去进行操作。
- 借鉴Elasticsearch的
IndexSorting
技术,优化搜索性能。 - 并行调用与异步处理
- 使用
CompletableFuture
实现并行调用,提高接口响应速度。 示例代码:CompletableFuture<Void> task1 = CompletableFuture.runAsync(() -> { // 查询同部门用户 }); CompletableFuture<Void> task2 = CompletableFuture.runAsync(() -> { // 查询上级部门用户 }); CompletableFuture<Void> task3 = CompletableFuture.runAsync(() -> { // 查询下级部门用户 }); CompletableFuture.allOf(task1, task2, task3).join();
- 使用