应用场景:在一个web应用中,程序需要通过一定协议定时或手动向另一部分硬件或软件推送差异数据,目标硬件或软件分布在不同的地方.
这个需求很简单,在这里并不会考虑出错情况下的容错处理,考虑的是理想状态下的情况(网络正常,设备正常),但却会催生一些并发问题。在这里定时调用和手动调用推送数据是在同一个类中实现的.例如推送数据时会产生以下一种情况,定时推送过程中,数据还没有提交完成,数据已被更改,当推送的数据对象只有一个时候,这并不会明显产生问题,运行正常,但当推送数据的对象不断增加时,问题出来了,经过检查,发现程序运行完成时,只有一个或几个推送成功的,绝大部分目标硬件或软件并没有收到预期的数据,原因在哪里?原来是和spring的scope配置有关(关于这方面的知识可以从相关的技术文档或网上得到),scope默认情况下的属性值是singleton,即单例模式,全局共享一个对象,也就是说保存的数据是无状态的数据,每新增一个请求就把旧有的引用覆盖掉,于是又引申出一个关于java的堆和栈的问题,其实在java的堆和栈中旧数据还是存在的(关于java堆和栈的知识 可以从相关的技术文档或网上得到 ),但为什么依然只有一个或几个数据推送成功的?这就引出了关于spring的bean管理问题了,前面说过,spring的bean配置中scope是singleton,只要把scope的值改为prototype这个问题就基本解决了.
不过以为这个问题完全解决了,也就错了,以上解决的都是定时器调用的问题,还有一个问题是,当定时器在调用但未运行完成的时候,一个管理人员或几个管理人员也同时调用了针对同一个软件或硬件的数据推送方法,这时候出现会出现几个操作相同的线程,这对程序来说可不是什么好事情,对我们来说,我们希望推送的数据是需要的就行了,问题是需要怎么样的数据,最新的还是最旧的?如果需要最新的数据把scope设置为singleton就行了,但前面已经说过这会有问题。这里面如何控制?问题所在,解决的办法有多种,例如通过保存时间戳,设置优先级等,皆可针对需求而定.
分享到:
相关推荐
随着互联的发展,使用互联网的人群越来越多,软件应用的体量越来越庞大和复杂,传统的单体应用可能不足以支撑大数据量以及高并发场景,应
应用场景 1.特别适合在IO密集型的服务中,比如微服务网关。 2.IO 密集型包括:磁盘IO密集型, 网络IO密集型,微服务网关就属于网络 IO 密集型,使用异步非阻塞式编程模型,能够显著地提升网关对下游服务转发的吞吐...
在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...
在大数据量、高并发的场景下,批量更新数据库是一个常见的操作。然而,不同的批量更新方法可能带来截然不同的性能表现。 通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理...
这是我们经常在各博客见到的顶和踩的画面,对于这种场景,我们用非关系型数据库来操作是非常不方便地,不光是查询不方便(写sql语句),而且在高并发的时候,可能会使系统假死,所以redis就派上用场了,它属于非关系型...
现在的应用程序架构中,很多服务都是多副本运行,从而保证服务的稳定性。一个服务实例挂了,其他服务依旧可以接收请求。...在这种场景下如果相同的 N 个请求并发发到后端服务实例,就会出现重复插入数据的情况
使用场景及目标:本资源主要面向开发多线程应用和高并发应用的场景。无论你是要开发高性能的服务器端应用、分布式系统,还是要优化现有系统的并发性能,本资源都将为你提供实用的方法和技巧,帮助你解决常见的并发...
通过使用响应式流,可以更好地处理高并发和高吞吐量的场景。 WebFlux框架:引入了WebFlux框架,提供了一个响应式的Web开发模型。WebFlux可以处理更高的请求数量,并通过非阻塞I/O来提高性能。 函数式Web编程:引入...
通过论文的阅读,读者不仅可以了解到秒杀系统的基本架构和功能模块,还能深入理解Spring Boot框架在其中的应用以及高并发场景下的技术挑战和解决方案。 源代码部分则是该秒杀系统的具体实现,包含了前后端分离的...
在业务逻辑的异步处理,系统解耦,分布式通信以及控制高并发的场景下,消息队列有着广泛的应用。本项目基于Spring这一平台,整合流行的开源消息队列中间件ActiveMQ,实现一个向ActiveMQ添加和读取消息的功能。并比较...
在当今的互联网应用中,实时性和性能是许多系统设计的关键要素。Redis,作为一款开源的、内存中的数据结构...传统的关系型数据库在处理这类高并发、实时性要求高的场景时往往力不从心,而Redis则能很好地满足这些需求。
充分利用缓存:秒杀商品是一个典型的读多写少的应用场景,充分利用缓存将大大提高并发量 实现技术点 1. 两次MD5加密 将用户输入的密码和固定Salt通过MD5加密生成第一次加密后的密码,再讲该密码和随机生成
丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控:...
充分利用缓存:秒杀商品是一个典型的读多写少的应用场景,充分利用缓存将大大提高并发量 实现技术点 1. 两次MD5加密 将用户输入的密码和固定Salt通过MD5加密生成第一次加密后的密码,再讲该密码
point io是适合于不同应用场景的物联网数据采集与交互的通信框架。它是基于高性能和高可用性的Mina框架构建而来,支持批量数据传输;支持TCP、UDP协议;控制反转的设计模式(支持spring);采用优雅的松耦合架构。单...
应用服务器jetty, 内嵌在Spring-Boot里. 准备测试一下几种matrix 方式 HTTP线程池 工作线程池 工作线程等待时间 异步 16 16 1s 异步 16 16 0.1s 同步 16 16 1s 同步 16 16 0.1s 同步 100 16 1s 同步 200 16 1s 并发...
3.多语言Java+Go+Python协调开发,属于语言应用场景 4.支持项目快速迭代和开发 5.使用微服务技术栈+前后端分离构建项目 6.云上的开发体系,打造新一代研发平台 7.引入全新的设计理念 8.集成SpringCloud Alibaba实现...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
值得介绍的是,本课程在技术层面涵盖了中间件Redis的相关技术栈,比如数据结构String、List、Set、SortedSet以及Hash等等,除此之外,在设计并实战“抢红包系统”以及实战各种数据结构对应的应用场景期间,也使用了...