`

spring在多并发情况下的场景应用

阅读更多

应用场景:在一个web应用中,程序需要通过一定协议定时或手动向另一部分硬件或软件推送差异数据,目标硬件或软件分布在不同的地方.

       这个需求很简单,在这里并不会考虑出错情况下的容错处理,考虑的是理想状态下的情况(网络正常,设备正常),但却会催生一些并发问题。在这里定时调用和手动调用推送数据是在同一个类中实现的.例如推送数据时会产生以下一种情况,定时推送过程中,数据还没有提交完成,数据已被更改,当推送的数据对象只有一个时候,这并不会明显产生问题,运行正常,但当推送数据的对象不断增加时,问题出来了,经过检查,发现程序运行完成时,只有一个或几个推送成功的,绝大部分目标硬件或软件并没有收到预期的数据,原因在哪里?原来是和spring的scope配置有关(关于这方面的知识可以从相关的技术文档或网上得到),scope默认情况下的属性值是singleton,即单例模式,全局共享一个对象,也就是说保存的数据是无状态的数据,每新增一个请求就把旧有的引用覆盖掉,于是又引申出一个关于java的堆和栈的问题,其实在java的堆和栈中旧数据还是存在的(关于java堆和栈的知识 可以从相关的技术文档或网上得到 ),但为什么依然只有一个或几个数据推送成功的?这就引出了关于spring的bean管理问题了,前面说过,spring的bean配置中scope是singleton,只要把scope的值改为prototype这个问题就基本解决了.

不过以为这个问题完全解决了,也就错了,以上解决的都是定时器调用的问题,还有一个问题是,当定时器在调用但未运行完成的时候,一个管理人员或几个管理人员也同时调用了针对同一个软件或硬件的数据推送方法,这时候出现会出现几个操作相同的线程,这对程序来说可不是什么好事情,对我们来说,我们希望推送的数据是需要的就行了,问题是需要怎么样的数据,最新的还是最旧的?如果需要最新的数据把scope设置为singleton就行了,但前面已经说过这会有问题。这里面如何控制?问题所在,解决的办法有多种,例如通过保存时间戳,设置优先级等,皆可针对需求而定.

0
0
分享到:
评论

相关推荐

    springmvc+spring线程池处理http并发请求数据同步控制问题

    在现代Web应用开发中,Spring MVC作为主流的...同时,通过数据同步控制策略,可以确保在多线程环境下数据的正确性和一致性。在实际开发中,我们需要结合业务需求,灵活运用这些技术,以实现高性能、高可用的Web服务。

    Spring Boot高并发性能优化与微服务架构挑战分析

    内容概要:本文详细分析了Spring Boot在高并发场景下的性能瓶颈和技术挑战,并提出了具体的优化方案。主要讨论了启动性能与资源占用、内存管理与GC性能、高并发场景下的线程池优化、微服务架构中的服务治理与分布式...

    Spring5 WebFlux响应式编程应用场景示例

    响应式编程在处理高并发、低延迟的场景下表现出色,尤其适用于现代微服务架构。本文将深入探讨Spring WebFlux的应用场景及其示例。 1. **什么是Spring WebFlux** Spring WebFlux是Spring Framework 5.0引入的新...

    基于Vue3 + Spring Boot开发的云共享资源应用系统.zip

    在当今互联网技术日新月异的时代,基于Vue3和Spring Boot构建的云共享资源应用系统已经成为企业级开发的热门选择。Vue3是一个轻量级、高性能的前端JavaScript框架,而Spring Boot是Java后端开发的强大框架,两者结合...

    (源码)基于Spring Boot的高并发秒杀系统.zip

    系统通过Spring Boot、MyBatis Plus、Redis等技术栈实现高效的数据处理和缓存机制,确保在高并发环境下系统的稳定性和性能。 ## 项目的主要特性和功能 1. Spring Boot应用入口 使用SpringBootApplication注解启动...

    spring+netty+websocket高并发聊天

    在构建高性能、实时通信的应用场景中,`Spring`、`Netty` 和 `WebSocket` 的组合成为了一个强大的工具集。本项目围绕“`spring+netty+websocket`高并发聊天室”这一主题,旨在实现一个能够处理大量并发连接的聊天...

    RestTemplate如何在Spring或非Spring环境下使用.docx

    尽管如此,`RestTemplate`仍然广泛存在于Spring生态中,特别是在Spring Cloud等项目中,因为很多应用场景并不需要Reactive编程模型。 在Spring环境中,通常推荐使用Spring Boot来启动项目,此时可以引入`spring-...

    java统计高并发首页访问量,记录客户登录信息

    在高并发场景下,可以利用线程池来管理请求,例如通过ThreadPoolTaskExecutor配置一个合适的线程池大小,以提高系统处理能力并避免过度消耗资源。 接着,数据库部分,项目中提到了使用SQLServer,但同时表明MySQL也...

    Spring Boot 并发登录次数控制.docx

    本文将介绍如何在不使用Spring Security的情况下,通过Spring Boot结合JWT(JSON Web Token)、Redis以及Redisson来实现并发登录控制。 首先,我们需要理解并发登录控制的基本需求:当同一账号尝试多次登录时,系统...

    Spring Boot 2企业应用实战.rar

    3. **WebFlux**:Spring WebFlux是Spring Framework 5引入的一个新的模块,用于处理异步请求,支持Reactive Streams,适用于高并发场景。 4. **Actuator增强**:Spring Boot 2的Actuator组件提供了一套监控和管理...

    3.gRPC 在 Spring Cloud 中的应用.

    gRPC使用HTTP/2协议,使得在相同的网络条件下,gRPC可以处理更多的并发请求,同时降低CPU的资源占用。这对于微服务架构中,服务之间需要频繁通信的场景尤为重要。 gRPC框架支持多种编程语言平台,包括但不限于...

    spring-cloud-alibaba,spring cloud alibaba为阿里中间件的分布式解决方案提供了一站式的应用开发解决方案。.zip

    - **高并发场景**: Sentinel的流控机制可以在高并发时保护系统免受雪崩效应的影响。 - **数据一致性**: Seata解决了分布式环境下的事务问题,保证了业务数据的一致性。 - **日志监控**: 结合监控工具,如...

    spring 多线程队列执行

    在Spring框架中,多线程队列执行是一个重要的性能优化策略,它可以帮助应用程序更高效地处理并发任务,尤其是在高负载和大数据量的场景下。本文将深入探讨Spring如何实现多线程队列以及其相关的核心概念和技术。 1....

    Spring 5源代码(spring-framework-5.3.14.zip)

    Spring MVC现在可以与Project Reactor配合,提供非阻塞I/O和响应式流的API,这在微服务和高并发场景下尤其有用。 其次,Spring Data模块在Spring 5中也得到了显著增强。Spring Data支持各种数据存储,包括关系型...

    Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager.zip

    在这个项目中,Redis作为Spring Session的后台存储,存储用户的会话信息,保证了在高并发场景下的会话一致性。 Mybatis-Plus是在Mybatis基础上进行扩展的ORM(对象关系映射)框架,简化了对数据库的操作,包括插入...

    Spring Boot应用开发框架 v3.0.12.zip

    9. **WebFlux支持**:除了传统的Servlet API,Spring Boot 3.0.12还支持反应式编程模型的WebFlux,适用于低延迟、高并发的场景。 10. **容器化支持**:Spring Boot应用可以轻松地部署到Docker等容器平台,增强了其...

    (源码)基于Dubbo和Spring Boot的高并发秒杀系统.zip

    系统采用Dubbo进行服务间的远程调用,Spring Boot作为应用框架,结合Redis缓存和RabbitMQ消息队列,确保在高并发场景下的性能和稳定性。 ## 项目的主要特性和功能 ### 1. 分布式服务架构 Dubbo服务调用使用Dubbo...

    spring类库 spring类库

    8. **Spring WebFlux**:对于反应式编程,Spring WebFlux提供了非阻塞的Web开发模型,适用于高并发和低延迟的应用场景。 9. **Spring Boot**:Spring Boot简化了Spring应用的初始设置,通过默认配置和起步依赖,...

    spring 微服务相关框架学习。以及记录 jvm 调优 数据监控 并发控制-spring-frame.zip

    此外,Java并发库中的ThreadPoolExecutor允许自定义线程池参数,以适应不同的并发场景,防止资源过度消耗。 总的来说,理解并熟练运用Spring微服务框架、JVM调优技巧、数据监控工具以及并发控制策略,是成为一名...

Global site tag (gtag.js) - Google Analytics