技术派并行访问性能优化
选中新版正文中的对应文字,然后点“定位到这里”。
性能调优可以说是贯穿每一个研发的职业生涯的,对于一个合格的后端而言,如果发现某个页面加载很慢,接口响应耗时较多,那么我们应该怎么进行优化呢?
通常对于后端而言,有几个最简单的优化思路;
- 加机器
- 加缓存
- 串行改并行
接下来我们重点看一下技术派中针对上面的第三点,串行该并行是怎么支持的
使用场景
对于串行改并行的优化方式,请注意并不是所有的场景都适用;再适用这种方案之前,请先做好充分的认知
以技术派为例,什么场景会适合利用并行来提高接口响应性能呢?
- 再代码的实现中,主要是首页进行了这种方式的优化
why ?

我们先看一下首页的布局,有四大版块信息展示出来了;而且这些板块有一个较大的特点;板块与板块之间没有前后依赖关系,即它们的信息获取完全是可以并行执行
这种场景同样给大家举一个另外好理解的例子,电商的详情页,假设后端是一个接口返回所有的信息
那么商品详情信息,推荐商品信息,店铺信息,评价信息,广告位信息等没有依赖的信息封装服务,也同样是可以并行执行的
并行访问改造实例
1. 改造目标
首先我们看一下需要改造的地方,入口在 IndexRecommendHelper#buildIndexVo()

看一下上面的实现,其中除了第一个获取类目信息的方法要先执行之外,剩余的其他信息补充,都是可以并行执行的
我们来统计下各个方法的耗时以及整个接口的耗时情况,这里直接借助Spring的StopWatch来实现统计
public IndexVo buildIndexVo(String activeTab) {
IndexVo vo = new IndexVo();
CategoryDTO category = categories(activeTab, vo);
StopWatch stopWatch = new StopWatch("首页信息返回");
stopWatch.start("类目文章获取");
vo.setArticles(articleList(category.getCategoryId()));
stopWatch.stop();
stopWatch.start("置顶文章获取");
vo.setTopArticles(topArticleList(category));
stopWatch.stop();
stopWatch.start("轮播图获取");
vo.setHomeCarouselList(homeCarouselList());
stopWatch.stop();
stopWatch.start("侧边栏信息");
vo.setSideBarItems(sidebarService.queryHomeSidebarList());
stopWatch.stop();
vo.setCurrentCategory(category.getCategory());
vo.setCategoryId(category.getCategoryId());
stopWatch.start("登录用户信息获取");
vo.setUser(loginInfo());
stopWatch.stop();
prettyPrint(stopWatch);
return vo;
}
// 因为stopWatch默认输出的是纳秒;为了大家更好的理解耗时,我们换成ms进行输出
private void prettyPrint(StopWatch stopWatch) {
StopWatch.TaskInfo[] taskInfos = stopWatch.getTaskInfo();
StringBuilder sb = new StringBuilder();
sb.append('\n');
sb.append("StopWatch '").append(stopWatch.getId()).append("': running time = ").append(stopWatch.getTotalTimeMillis()).append(" ms");
sb.append('\n');
if (taskInfos.length < 1) {
sb.append("No task info kept"...未能定位到原文的划线
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复