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博客

相关推荐
juniperhan17 小时前
Flink 系列第16篇:Flink 核心数据类型类详解(POJO、Row、Tuple)
java·大数据·数据仓库·分布式·flink
yyk的萌17 小时前
Spring AI + 智谱大模型实战:打造有记忆功能的智能天气助手
java·人工智能·spring·agent·spring ai
被开发耽误的大厨17 小时前
5、Integer缓存池里同一个对象指的是什么?Integer 和String 内存结构逻辑完全一样?
android·java·哈希算法
升鲜宝供应链及收银系统源代码服务17 小时前
管理类软件通用高级查询组件(一)---升鲜宝生鲜配送供应链管理软件重构方案
java·重构·生鲜配送源代码·供应链源代码·生鲜供应链源代码
工业甲酰苯胺18 小时前
Tomcat的事件监听机制:观察者模式
java·观察者模式·tomcat
QC班长1 天前
Maven公司私库配置踩坑点
java·服务器·maven·intellij-idea
Makoto_Kimur1 天前
java开发面试-AI Coding速成
java·开发语言
wuqingshun3141591 天前
说说mybatis的缓存机制
java·缓存·mybatis
空中海1 天前
Kubernetes 生产实践、可观测性与扩展入门
java·贪心算法·kubernetes
Devin~Y1 天前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 与 Spring AI(RAG/Agent)三轮连环问
java·spring boot·redis·mysql·spring cloud·kafka·kubernetes