reactor中的并发

  1. reactor中的并发有两种方式

1.1 flatmap,底层是多线程并发处理。在reactor的演讲中,flatmap对于io类型的并发效果较好.

flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小

注意凡是参数中有prefetch的,都表示这个operator有对应大小的缓存。

1.2 parallel,这种operator对cpu并发的效果较好

  1. groupyby的优化

因为groupby的缓存可能会用完导致hang住。因此这里有如下的可以考虑的优化方法

  1. 提高groupby的缓存数量

  2. 增加flatmap中的concurrency和prefetch值

复制代码
List<String> data = List.of("alpha", "air", "aim", "beta", "cat", "ball", "apple", "bat", "dog", "ace");
 Flux.fromIterable(data)
         .log()
         .doOnComplete(()->{ System.out.println("end");})
        .groupBy(d -> d.charAt(0),5)
        .flatMap(g -> g.map(String::valueOf)
                .startWith(String.valueOf(g.key()))
                .map(o -> {
                    System.out.println(o);
                    return o;
                }),2,1
        ).subscribe();
  1. share和publish两个方法可以将冷流变成热流

  2. 相对应的cache/buffer/onBackpressureBuffer等操作符因为存在了cache,因此将热流变成了冷流。

可学习文章:

flux中的缓存-CSDN博客

相关推荐
海梨花15 小时前
又是秒杀又是高并发,你的接口真的扛得住吗?
java·后端·jmeter
小肖爱笑不爱笑15 小时前
2025/11/19 网络编程
java·运维·服务器·开发语言·计算机网络
郑州光合科技余经理15 小时前
开发指南:海外版外卖跑腿系统源码解析与定制
java·开发语言·mysql·spring cloud·uni-app·php·深度优先
SuperherRo16 小时前
JAVA攻防-反序列化利用&JNDI注入&高版本绕过&依赖Jar包&gadge包链&自动Bypass
java·反序列化·jndi·高版本绕过
智语言16 小时前
SpringBoot实战一:五分钟创建第一个Web应用
java
fanruitian16 小时前
Java 静态代码块
java·开发语言
IUGEI16 小时前
【后端开发笔记】JVM底层原理-垃圾回收篇
java·jvm·笔记·后端
迈巴赫车主16 小时前
蓝桥杯 20541魔法科考试
java·数据结构·算法·蓝桥杯
饭饭大王66616 小时前
Python 模块的概念与导入:从基础语法到高级技巧
java·服务器·python
u***13716 小时前
SpringBoot项目整合Knife4J
java·spring boot·后端