`
charyle
  • 浏览: 166126 次
  • 性别: Icon_minigender_1
  • 来自: 天蝎座
社区版块
存档分类
最新评论

生产消费者模型的应用--大数据量处理

阅读更多

   生产消费者模型我们都挺熟悉的,用程序实现来说就是有个数据区,一个线程放数据、一个读数据。

   现在有个需求,读取数据库记录进行加工并显示,如果数据量比较大,如1000W,读取数据、加工到显示整个过程用时几秒,而项目要求页面等待时间小于2S,由于页面显示数据不会一次性显示那么多,因此如果加工好一页数据显示就ok了,可以将读取数据库加工记录放入缓冲区,页面显示时读取缓冲区。。。

   如j2ee web页面显示数据库记录(假如,虽然并不现实).

   action或servlet在获得resultSet后启动线程处理resultSet放入EhCache缓存,线程启动即返回页面,页面通过Ajax访问后台,后台读取EhCache并返回json供页面显示。

   此应用模型目前我在思考,没实现及应用,可行否正在确定。如果看此文的同学有神马建议可以说说。。

 

分享到:
评论
8 楼 taolei0628 2011-06-09  
web页面是给人看的,1000W条数据,你就算分页了,就算缓存了,就算你半秒钟就显示了,有谁去看这么多数据呢?
这是应用逻辑的问题,而不是技术问题。
7 楼 dennis_zane 2011-06-08  
1千万数据,从数据库查询出来都不只2秒了,只有预先计算,搞后台任务定时计算并缓存,查询的时候直接取缓存。实时性差了点,取决于计算的间隔和耗时,看你们的需求了。

还有个思路,就是一直维护一个计算结果,数据变更的时候同时变更计算结果,降低单次更新的性能。
6 楼 charyle 2011-06-08  
如果数据量太大,岂不容易导致内存溢出,所以选择能存储到硬盘的ehcache,限定内存数据量。
5 楼 shanga 2011-06-08  
<div class="quote_title">charyle 写道</div>
<div class="quote_div">
<p><span style="font-size: small;">   生产消费者模型我们都挺熟悉的,用程序实现来说就是有个数据区,一个线程放数据、一个读数据。</span></p>
<p><span style="font-size: small;">   现在有个需求,读取数据库记录进行加工并显示,如果数据量比较大,如1000W,读取数据、加工到显示整个过程用时几秒,而项目要求页面等待时间小于2S,由于页面显示数据不会一次性显示那么多,因此如果加工好一页数据显示就ok了,可以将读取数据库加工记录放入缓冲区,页面显示时读取缓冲区。。。</span></p>
<p><span style="font-size: small;">   如j2ee web页面显示数据库记录(假如,虽然并不现实).</span></p>
<p><span style="font-size: small;">   action或servlet在获得resultSet后启动线程处理resultSet放入EhCache缓存,线程启动即返回页面,页面通过Ajax访问后台,后台读取EhCache并返回json供页面显示。</span></p>
<p><span style="font-size: small;">   此应用模型目前我在思考,没实现及应用,可行否正在确定。如果看此文的同学有神马建议可以说说。。</span></p>
<p> </p>
</div>
<p>队列不好用么?</p>
4 楼 charyle 2011-06-07  
这种设计是为处理报表需求的,运算指的是小计,按照某列的值进行分组求和、平均值等。为了打印报表,小计行的部分也要算到结果集的行数中,所以结果集查询分页就无法实现跳转到某一页,因为有了小计就不好计算该页对应的resultSet的位置。而且分页查询的话某列的汇总可能涉及到前几页或后几页数据就不好处理了。并且这需求不好直接在数据库中计算。
3 楼 coffeesweet 2011-06-07  
1:如果是延迟查询的话,后台定时跑计算程序生成结果供前台直接查询。
2:如果是实时查询的话,对于企业应用类似报表类型的数据暂时还没想到很好的方法。
2 楼 pocketduck 2011-06-07  
海量数据的运算显示,最好是不要在如此多的数据中做运算,比如限制时间等。如果非要在这么大的数据量中做计算,最好是提前算好数据,查询时候直接在运算好的结果中进行查询。如果非得实施运算,最好在数据库端运算,而不是都加载到虚拟机中算好了再返回指定页数记录。
1 楼 liuyupy 2011-06-03  
直接分页查询不能满足2s的要求?缓存1000W条数据?数据量的大小(平均每条记录即使只有100Byte,1000W也有1G的数据量)?添加、删除数据?
感觉还是分页现实点。

相关推荐

    多线程实现生产者---消费者模型

    在生产者-消费者模型中,我们可以使用一个整型信号量来表示缓冲区中的空闲位置数量,另一个信号量表示缓冲区中已存储的产品数量。生产者在添加产品前会检查是否有空闲位置(即检查“库存”信号量),消费者则在取出...

    Qt入门练习项目——生产者消费者模型.zip

    通过实践这个项目,你不仅可以深入了解Qt5的多线程编程,还能学习如何在实际场景中应用生产者消费者模型,提高程序的并发处理能力。同时,这也将帮助你更好地理解信号与槽机制以及同步控制的概念,为后续更复杂的Qt...

    生产者消费者程序-Linux

    生产者消费者模型是一种经典的多线程同步问题,广泛应用于计算机科学和操作系统领域。在Linux环境中,这个模型通过信号量机制和缓冲区来实现线程间的通信和资源管理。以下是关于这个主题的详细解释: 1. **生产者...

    C++实现生产与消费者模型

    在计算机科学中,生产者-消费者...在实际应用中,生产者-消费者模型可以广泛应用于数据缓存、网络I/O、多进程通信等领域,是并发编程中不可或缺的模型。理解和熟练掌握这种模型,有助于编写出高效、安全的多线程程序。

    Java线程间的通信----生产者消费者模型

    生产者消费者模型是一种经典的线程同步问题,它模拟了实际生活中的生产过程和消费过程,使得生产者线程可以将数据生产出来,而消费者线程则负责消耗这些数据,两者之间通过共享数据结构进行协同工作。 生产者消费者...

    labview 生产者消费者例子

    8. **实际应用**:生产者-消费者模型在许多实际应用中都有所体现,如数据采集系统中,传感器作为生产者持续收集数据,而处理器作为消费者处理这些数据。理解并掌握这一模型对于优化和设计高效的数据处理系统至关重要...

    jchc.rar_tearshmj_生产者_生产者-消费者问题 c++ _生产者和消费者_生产者消费者

    首先,我们要理解生产者-消费者模型的基本概念。在这个模型中,生产者负责生产资源,而消费者则负责消耗这些资源。关键在于,生产者和消费者必须以一种协调的方式工作,以免出现资源过度消费或生产过剩的情况。这就...

    生产者消费者模型的演变

    在生产者消费者模型的实际应用中,比如在网络服务器、数据库连接池、消息中间件(如RabbitMQ、Kafka)等场景,这种模式都发挥着重要作用。它可以有效地控制系统的负载,防止过载,并且能够提高系统的响应速度和吞吐...

    多个消费者生产者模型

    首先,我们要理解"生产者-消费者模型"的基本原理。在计算机科学中,这通常通过使用队列(Queue)数据结构实现。队列是一种先进先出(FIFO)的数据结构,生产者在队列的一端放入产品,消费者则在另一端取出产品。当...

    多进程同步-生产者消费者模式-C实现

    在计算机科学中,多进程同步是一个关键的概念,用于管理和协调多个并发执行的进程,确保它们在访问共享资源时不会产生冲突。在这个场景下,我们...这个C语言实现的生产者消费者模型是学习和提升这一技能的绝佳实践。

    生产者消费者架构的串口高速数据采集.rar_greatervgw_labview_串口_串口 消费者_生产者消费者

    总之,"生产者消费者架构的串口高速数据采集.vi"是一个利用LabVIEW实现的高效数据处理方案,通过串口通信获取数据,并利用生产者消费者模型保证数据处理的流畅性和稳定性。了解并掌握这一模型对于提升LabVIEW程序的...

    生产者-消费者多线程处理

    在实际应用中,生产者-消费者模型可以被扩展到多个生产者和多个消费者,且缓冲区大小可以动态调整。此外,为了防止死锁和饥饿现象,还需要考虑适当的同步策略,如公平性和优先级反转的处理。 总之,"生产者-消费者...

    java多线程_消费者与生产者模型

    在Java多线程编程中,消费者-生产者模型是一种经典的线程间通信模式,用于解决多线程环境下的数据共享问题。该模型涉及到两个主要的角色:生产者(Producer)和消费者(Consumer)。生产者负责创建数据,而消费者则...

    生产者消费者代码(C++版)

    生产者-消费者问题的基本概念是这样的:生产者线程生成数据并放入一个有限大小的缓冲区,而消费者线程则从这个缓冲区取出并处理数据。关键在于如何避免生产者过度填充缓冲区(当缓冲区满时)或消费者过早地尝试从空...

    Qt中使用QSemaphore,单生产者—多消费者模型

    在多线程编程中,`QSemaphore`常被用来实现生产者-消费者模型,其中生产者线程生产数据,而消费者线程消费数据。这种模型对于并发处理和优化系统性能具有重要意义。 在“Qt中使用QSemaphore,单生产者—多消费者...

    生产者消费者模型

    在实际应用中,生产者消费者模型可以用于解决很多并发问题,比如任务调度、数据处理流水线等。通过合理设计缓冲区大小和生产消费速率,可以有效提高系统吞吐量和资源利用率。 总结来说,生产者消费者模型是多线程...

    LINUX下的生产者消费者模型算法

    ### Linux下的生产者消费者模型算法 #### 概述 在Linux环境下实现的生产者消费者模型是一种经典的多进程或线程间通信的例子。该模型通过进程模拟生产者与消费者的角色,并利用共享存储区来模拟缓冲区,进而实现了...

    多进程同步解决生产者消费者问题(c++源码)

    生产者负责产生数据项,并将其放置到一个共享的缓冲区中,而消费者则从这个缓冲区中取出数据项并处理它们。为了保证数据的一致性和避免冲突,需要通过合适的同步机制来管理这些进程之间的交互。 #### 二、问题描述 ...

    生产者消费者模型模拟进程调度_操作系统实验报告

    2. **理解生产者和消费者模型**:通过具体的编程实践,学生能够深入理解生产者-消费者模型的工作原理及其应用场景。 3. **了解Windows2000/XP中多线程的并发执行机制**:实验将帮助学生熟悉Windows操作系统中的线程...

    用多进程同步方法解决生产者-消费者问题

    1. **生产者-消费者模型**:生产者负责生成数据,而消费者则负责消费这些数据。在并发环境中,生产者和消费者可能同时运行,因此需要同步机制来确保生产者不会在缓冲区满时继续生产,消费者也不会在缓冲区空时尝试...

Global site tag (gtag.js) - Google Analytics