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

相关推荐
一只韩非子5 分钟前
Spring AI Alibaba 快速上手教程:10 分钟接入大模型
java·后端·ai编程
叫我阿柒啊7 分钟前
从Java全栈到云原生:一场技术深度对话
java·spring boot·docker·微服务·typescript·消息队列·vue3
ONLYOFFICE16 分钟前
【技术教程】如何将文档编辑器集成至基于Java的Web应用程序
java·编辑器·onlyoffice
lbwxxc32 分钟前
手写 Tomcat
java·tomcat
CHEN5_0235 分钟前
【CouponHub项目开发】使用RocketMQ5.x实现延时修改优惠券状态,并通过使用模板方法模式重构消息队列发送功能
java·重构·模板方法模式·项目
杨杨杨大侠36 分钟前
实战案例:商品详情页数据聚合服务的技术实现
java·spring·github
杨杨杨大侠37 分钟前
实战案例:保险理赔线上审核系统的技术实现
java·spring·github
计算机毕设定制辅导-无忧学长39 分钟前
MQTT 与 Java 框架集成:Spring Boot 实战(一)
java·网络·spring boot
叫我阿柒啊41 分钟前
从Java全栈到Vue3实战:一次真实面试的深度复盘
java·spring boot·微服务·vue3·响应式编程·前后端分离·restful api
快乐非自愿43 分钟前
掌握设计模式--模板方法模式
java·设计模式·模板方法模式