mirror of https://github.com/halo-dev/halo
![]() #### What type of PR is this? /kind improvement /area core /milestone 2.20.x #### What this PR does / why we need it: 将 concatMap 替换为 flatMapSequential 以提高并行度和执行效率 可以看一下这个场景示例来模拟像文章列表 API 的数据组装 假如每个步骤的执行时间是 1s 有 4 个步骤 同时 Flux 发出 4 条数据: ```java @Test void test() { var startMs = System.currentTimeMillis(); var monoA = Mono.fromSupplier( () -> { sleep(); return "A"; }) .subscribeOn(Schedulers.boundedElastic()); var monoB = Mono.fromSupplier( () -> { sleep(); return "B"; }) .subscribeOn(Schedulers.boundedElastic()); var monoC = Mono.fromSupplier( () -> { sleep(); return "C"; }) .subscribeOn(Schedulers.boundedElastic()); var monoD = Mono.fromSupplier( () -> { sleep(); return "D"; }) .subscribeOn(Schedulers.boundedElastic()); var convert = Mono.when(monoA, monoB, monoC, monoD); Flux.just("1", "2", "3", "4") // concatMap(convert::thenReturn) .flatMapSequential(convert::thenReturn) .collectList() .block(); System.out.println("Time: " + (System.currentTimeMillis() - startMs)); } private static void sleep() { try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } ``` **结果:** 1. 如果每个步骤没有加 subscribeOn 且使用 concatMap 耗时: 16362 ms 2. 每个步骤使用 subscribeOn 且使用 concatMap 耗时: 4174 ms 3. 每个步骤使用 subscribeOn 且使用 flatMapSequential 耗时: 1185 ms #### Does this PR introduce a user-facing change? ```release-note 提升页面访问速度 ``` |
||
---|---|---|
.devcontainer | ||
.github | ||
api | ||
api-docs/openapi/v3_0 | ||
application | ||
buildSrc | ||
config/checkstyle | ||
docs | ||
e2e | ||
gradle/wrapper | ||
hack | ||
platform | ||
ui | ||
.dockerignore | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitpod.yml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Dockerfile | ||
LICENSE | ||
OWNERS | ||
README.md | ||
SECURITY.md | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
settings.gradle |
README.md
Halo [ˈheɪloʊ],强大易用的开源建站工具。
快速开始
docker run -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.19
以上仅作为体验使用,详细部署文档请查阅:https://docs.halo.run/getting-started/install/docker-compose
在线体验
- 环境地址:https://demo.halo.run
- 后台地址:https://demo.halo.run/console
- 用户名:
demo
- 密码:
P@ssw0rd123..
生态
可访问 官方应用市场 或 awesome-halo 仓库 查看适用于 Halo 2.x 的主题和插件。
许可证
Halo 使用 GPL-v3.0 协议开源,请遵守开源协议。
赞助
如果 Halo 对你有帮助,欢迎赞助我们,感谢以下赞助者对 Halo 项目的支持:
贡献
参考 CONTRIBUTING。