首页 > 其他分享 >Spring Cloud Gateway的Filter中如果有耗时操作应该如何处理?

Spring Cloud Gateway的Filter中如果有耗时操作应该如何处理?

时间:2023-12-14 18:01:04浏览次数:37  
标签:Spring boundedElastic Gateway Filter 耗时 线程 spring gateway cloud

1,如果不处理,会大大影响吞吐量;
2,spring cloud gateway是reactive的编码风格,改造代码难度很大,很不习惯;
3,spring cloud gateway使用事件线程处理一个http请求
4,事件线程比较少(参考netty event loop),不能有耗时操作,否则影响吞吐量;
5,spring cloud gateway可以使用一个异步线程池:boundedElastic ,通过Schedulers.boundedElastic()获取
6,spring cloud gateway还可以使用一个线程池:parallel,通过Schedulers.parallel()获取,通常用于CPU密集的任务。
7,把耗时操作,提交到boundedElastic线程池处理:

yourReactiveStream
    .publishOn(Schedulers.boundedElastic())
    .doOnNext(item -> {
        // ... Blocking code or computation-intensive task
    })
.subscribe();

标签:Spring,boundedElastic,Gateway,Filter,耗时,线程,spring,gateway,cloud
From: https://www.cnblogs.com/cwjcsu/p/17901671.html

相关文章

  • spring boot项目中org.springframework.boot.autoconfigure.AutoConfiguration.import
    一、resource下的文件org.springframework.boot.autoconfigure.AutoConfiguration.importsspring.factoriesmessages_zh_CN.properties二、spring.factories文件我们知道在springboot项目中,只要用注解@Configuration、@Bean、@Compont等注解标注的类springboot会自动为......
  • SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
    场景定时任务中需要获取数据库中数据进行数据转换成需要的格式并进行后续的业务处理。数据库中的数据更新频率不高。可将数据库中数据在项目启动后读取一遍数据,然后再通过定时任务定时查询数据库更新数据。实现数据库缓存的方式有多种,比如以下:SpringBoot中通过自定义缓存注解......
  • 浅谈一下对SpringBoot的理解
    简化Spring+SpringMVC的开发1.Maven导入依赖Starter依赖管理:SpringBoot的Starter依赖简化了项目的依赖管理。通过导入预配置的Starter依赖,开发者可以轻松地引入一组相关的库和配置,而无需手动管理每个库的版本和依赖关系。约定大于配置:使用Starter依赖遵循了Spri......
  • 别再重复造反射轮子了,Spring 中的 ReflectionUtils 工具类,应有尽有!
    作者:策马踏清风链接:https://www.jianshu.com/p/756778f5dc87ReflectionUtils是spring针对反射提供的工具类。handleReflectionException异常处理推荐一个开源免费的SpringBoot实战项目:https://github.com/javastacks/spring-boot-best-practice源码:publicstaticv......
  • SpringBoot 中使用 Filter
    Filter是JavaEE中Servlet规范的一个组件,位于包javax.servlet 中,它可以在HTTP请求到达Servlet之前,被一个或多个Filter处理。它的工作流程如图:Filter的这个特性在生产环境中有很广泛的应用,如:修改请求和响应、防止xss攻击、包装二进制流使其可以多次读,等等。实际工作中,......
  • Filter过滤器
    一认识过滤器1.1什么是过滤器Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、......
  • SpringCloud Seata【解决分布式事务的问题】安装
    SpringCloudSeata【解决分布式事务的问题】安装1.问题引出1.1单机单库(多表)处理事务示意图1.2分布式微服务架构下的数据库事务示意图图片梳理:用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:仓库服务:对给定商品扣除商品数量订单服务:根据采购需求创建订单......
  • Spring Cache + Caffeine的整合与使用
    前言对于一些项目里需要对数据库里的某些数据一直重复请求的,且这些数据基本是固定的,在这种情况下,可以借助简单使用本地缓存来缓存这些数据。这些介绍一下SpringCache和Caffeine的使用。引入依赖和CacheConfig在pom文件里面引入下面的依赖:<dependency><groupId>com......
  • 【转载】Springboot2.x单元测试
    参考https://blog.csdn.net/wangxi06/article/details/114630426https://blog.csdn.net/qq_44381387/article/details/120869168(新版spring-boot-starter-test不再集成junit,而是junit-jupiter,无需@RunWith)https://www.jianshu.com/p/34f57f41af70https://www.cnblogs.co......
  • split() 与 filter() 搭配去除符号
    msg1='hello\t\r\nworld'print(''.join(msg1.split()))#这里的split()可以去除所有的制表符,但不能去除一些其它符号。#helloworldmsg='hello----world'print(''.join(filter(None,msg.split('-'))))#helloworldprint('......