当前位置: 首页 > article >正文

reactor中的并发

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

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

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

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

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

2. 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();

3. share和publish两个方法可以将冷流变成热流

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

可学习文章:

flux中的缓存-CSDN博客


http://www.kler.cn/a/469414.html

相关文章:

  • 嵌入式驱动开发详解10(MISC杂项实现)
  • 深入探讨 Android 中的 AlarmManager:定时任务调度及优化实践
  • 我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
  • Python自学 - 函数初步(内置函数、模块函数、自定义函数)
  • Gin框架中间件原理
  • Chapter4.3:Implementing a feed forward network with GELU activations
  • Java(day3)
  • 使用JMeter对Linux生产服务器进行压力测试
  • Golang中的大端序和小端序
  • 五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的开源库 (二)
  • 51单片机——蜂鸣器模块
  • SpringCloud源码-nacos
  • 图片验证码
  • 解锁kafka组件安全性解决方案:打造全方位安全防线
  • 解决TortoiseGit 在Windows系统中文件不显示状态图标的问题
  • Elasticsearch操作笔记版
  • HarmonyOS学习大纲
  • 2.5万字 - 用TensorFlow和PyTorch分别实现五种经典模型
  • Go语言的 的接口(Interfaces)核心知识
  • 优雅草采集器系统全面开源-优雅草YYC采集器系统不同版本的合集整体开源yyc-gather-采集器开源-优雅草央千澈
  • centos7安装elasticsearch8.17
  • 智能运维分析决策系统:赋能数字化转型的新引擎
  • 【Stable Diffusion】用AI给老照片上色,岁月不改它模样
  • 计算机网络——数据链路层-介质访问控制
  • Java面试要点113 - Java异步编程CompletableFuture
  • github开源链游详细搭建文档