CN101706740A - 用于数据交互的缓存模式自适应***及方法 - Google Patents
用于数据交互的缓存模式自适应***及方法 Download PDFInfo
- Publication number
- CN101706740A CN101706740A CN200910211330A CN200910211330A CN101706740A CN 101706740 A CN101706740 A CN 101706740A CN 200910211330 A CN200910211330 A CN 200910211330A CN 200910211330 A CN200910211330 A CN 200910211330A CN 101706740 A CN101706740 A CN 101706740A
- Authority
- CN
- China
- Prior art keywords
- cache mode
- client
- cache
- server
- data interaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及通信计算机技术领域,提供了一种用于数据交互的缓存模式自适应***及方法。所述***包括位于服务器中的缓存模式库和缓存模式管理器;所述缓存模式库存储有至少一个缓存模式;所述缓存模式管理器包括缓存模式选择模块,所述缓存模式选择模块接收线程发送的客户端请求配置指令,并根据所述客户端发送的配置信息,在所述缓存模式库中选择适合所述客户端的缓存模式提供给所述客户端。本发明还提供了一种用于数据交互的缓存模式自适应方法。采用本发明,能动态的改变***的数据存储结构,自适应选择合适的数据存储结构,提高了***的效率。
Description
技术领域
本发明涉及通信计算机技术领域,尤其涉及一种用于数据交互的缓存模式自适应***及方法。
背景技术
目前,几乎所有流行的操作***都支持线程,传统技术是每当有一个客户端连接时,服务器就将为它创建一个线程,当客户端断开连接时销毁线程。当客户端并发量很大时,这种线程创建和销毁的工作使服务器的开销很大。
在客户端-服务器(Client-Sever,CS)***中,客户端与服务器通过线程池进行数据交互,线程池是指一组一定数量的线程的集合,其类似操作***中缓冲区(Buffer)的概念,分为管理线程和工作线程。管理线程负责所有工作线程的创建、销毁和选择等管理工作;工作线程是实际为客户端提供服务的线程。
使用线程池,可以预先创建一定数量的线程,当一个客户端连接时,从线程池中选择一个空闲的线程为之提供服务,当客户端离开时,线程池维护线程状态为空闲,从而可以为其它客户端提供服务,服务器无需进行频繁的线程创建和销毁工作,节省大量服务器开销,提高了效率。
客户端与服务器之间通过线程池进行数据交互时,会有缓冲区来存储接收和发送的数据,缓冲区的数据存储结构称为缓存模式(Buffer Mode)。传统技术中,缓冲区都是固定的数据结构,如单链表数据存储结构、十字交叉链表数据存储结构等,且存储数据的数据存储结构始终保持固定不变。例如,预先设定客户端采用单链表数据存储结构,则服务器采用相应的单链表数据存储结构。由于不同的数据结构具有自身的特点,例如有的***数据速度快,有的查询数据快,因此如果采用固定不变的数据存储结构,则只能用到此种数据结构的优点,数据存储结构单一,不能发挥各种数据存储结构的优点,不能动态改变数据存储结构。
发明内容
本发明要解决的技术问题是:针对现有技术中数据存储结构单一、不能动态改变数据存储结构的问题,提供一种用于数据交互的缓存模式自适应***和方法。
本发明的技术方案是:一种用于数据交互的缓存模式自适应***,包括位于服务器中的缓存模式库和缓存模式管理器;所述缓存模式库用于存储至少一个缓存模式;所述缓存模式管理器包括缓存模式选择模块,所述缓存模式选择模块接收线程发送的客户端请求配置指令,并根据所述客户端发送的配置信息,在所述缓存模式库中选择适合所述客户端的缓存模式提供给所述客户端。
本发明的用于数据交互的缓存模式自适应***的更详细的技术方案是:所述缓存模式管理器还包括缓存模式生成模块,所述缓存模式生成模块接收线程发送的客户端请求创建指令,并根据所述客户端发送的缓存模式,在所述缓存模式库中创建新的缓存模式。
所述缓存模式生成模块当接收所述客户端的请求创建指令时,查询所述缓存模式库中是否存在所述客户端发送的缓存模式,若不存在,则复制所述客户端发送的缓存模式,并存储在所述缓存模式库中。
所述***还包括线程池,所述线程池用于响应客户端发送的请求配置指令或请求创建指令,在创建缓存模式成功后通知所述客户端,或在所述缓存模式选择模块选择到适合所述客户端的缓存模式后,提供缓存模式给所述客户端。
本发明还提出了一种用于数据交互的缓存模式自适应方法,包括以下步骤:
步骤1:服务器通过空闲的线程响应客户端的请求配置指令,并接收所述客户端发送的配置信息;
步骤2:所述服务器根据所述客户端发送的配置信息,在所述服务器中的缓存模式库中选择适合所述客户端的缓存模式提供给所述客户端。
本发明的用于数据交互的缓存模式自适应方法的更详细的技术方案是:所述方法还包括步骤3:所述服务器通过空闲的线程响应所述客户端的请求创建指令,并接收所述客户端发送的缓存模式,根据客户端发送的缓存模式,所述服务器在其内部的缓存模式库中创建新的缓存模式。
所述方法还包括步骤4:所述服务器创建新的缓存模式后,通知所述客户端创建缓存模式成功。
所述方法还包括步骤5:所述客户端收到缓存模式后,与所述服务器通过相同的缓存模式进行数据交互。
本发明的优点是:
1.根据客户端发送的请求配置指令,可为客户端自适应选择合适的缓存模式,利用不同数据结构的不同优点;
2.根据客户端发送的请求创建指令,复制客户端发送的新的缓存模式,来更新服务器存储的缓存模式,丰富所存的缓存模式的种类,还可以将其存储的所有缓存模式提供给其它客户端,实现了客户端与服务器中的缓存模式自适应变化,因此能动态的改变数据存储结构,自适应选择合适的数据存储结构,能用到各种数据存储结构的优点,提高了***的效率。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1是本发明的实施例中用于数据交互的缓存模式自适应***的应用示意图;
图2是本发明的实施例中包含缓存模式选择模块的用于数据交互的缓存模式自适应***的应用示意图;
图3是本发明的实施例中用于数据交互的缓存模式自适应方法的缓存模式配置的流程图;
图4是本发明的实施例中包含缓存模式生成模块的用于数据交互的缓存模式自适应***的应用示意图;
图5是本发明的实施例中用于数据交互的缓存模式自适应方法的缓存模式创建的流程图。
其中:100服务器;101线程池;102缓存模式管理器;1021缓存模式选择模块;1022缓存模式生成模块;103缓存模式库;200、300客户端。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
实施例:如图1所示,服务器100与多个客户端200、300…N进行数据交互,其内部包括线程池101、缓存模式管理器(Buffer Mode Manager)102和缓存模式库(Buffer Mode Library)103,其中:
线程池101、缓存模式管理器102和缓存模式库103依次连接,线程池101是一组一定数量线程的集合,用于对线程进行管理(包括线程的创建、销毁和选择等)和提供客户端200、300…N服务,在实施例中,线程池101用于响应客户端200、300…N的请求配置指令和请求创建指令,并在服务器100创建缓存模式成功后通知客户端200、300…N,或在服务器100选择到适合客户端的缓存模式后,提供缓存模式给客户端200、300…N。
如图2和图4所示,缓存模式管理器102包括缓存模式选择模块1021和缓存模式生成模块1022。缓存模式选择模块1021用于接收线程发送的请求配置指令,当某个客户端与服务器100建立连接时,若客户端发送请求配置指令,客户端同时会将其自身的配置信息一并发送给服务器100,则缓存模式选择模块1021根据客户端发送的配置信息,在缓存模式库103中选择适合该客户端的缓存模式提供给该客户端。这里的配置信息,包括客户端提供的自身环境等,例如CPU频率,内存大小等,缓存模式选择模块1021根据客户端的这些自身环境,来匹配最适合客户端的缓存模式提供给客户端。
缓存模式生成模块1022用于接收线程发送的请求创建指令,当某个客户端与服务器100建立连接时,客户端自身配置有缓存模式,并需要创建客户端自身的缓存模式给服务器100时,客户端向服务器100发送请求创建指令,同时客户端还会向服务器100发送其自身的缓存模式,则缓存模式生成模块1022根据客户端发送的缓存模式,查询缓存模式库103中是否存在该客户端发送的缓存模式,若不存在,则复制该客户端的缓存模式,并存储在缓存模式库103中;若存在,则由缓存模式选择模块1021选择和客户端相同的缓存模式为客户端服务。
某个客户端发送请求配置指令还是请求创建指令是由不同的客户端标识决定。当客户端自身配置有缓存模式,其可以向服务器100发送请求配置指令,请求服务器100为该客户端配置一个新的缓存模式,也可以向服务器100发送请求创建指令,请求服务器100创建该客户端具有的缓存模式。当客户端自身未配置缓存模式时,则只能向服务器100发送请求配置指令,请求服务器100为该客户端配置一个缓存模式,这时服务器100会根据该客户端发送的客户端配置信息,来选择适合该客户端的缓存模式提供给该客户端。
缓存模式库103和缓存模式管理器连接,用于存储至少一个缓存模式.基于上述描述,缓存模式库103中存储的缓存模式包括服务器100自身配置的缓存模式和各客户端200、300…N请求创建后从客户端复制来的缓存模式.服务器100响应各客户端的请求创建指令时,可为缓存模式库103增加新的缓存模式,以更新缓存模式库103,更新后的缓存模式可提供给其它客户端更多的模式选择.
如图2和图3所示,在本发明的一个实施例中,包括位于服务器100中的线程池101、缓存模式管理器102和缓存模式库103,其中,线程池101中包括多个线程,如线程1、线程2、线程2…线程n;缓存模式管理器102包括缓存模式选择模块1021,用于接收线程发送的客户端请求配置指令和客户端200的配置信息,并根据客户端200的配置信息从缓存模式库103中选择适合客户端200的缓存模式提供给客户端200;缓存模式库103中存储了一些缓存模式,如缓存模式1、缓存模式2、缓存模式3等。
在步骤S301中,设客户端200与服务器100建立连接,客户端200向服务器100发送请求配置指令,同时将自身的配置信息发送给服务器100,服务器100在线程池101中选择空闲的工作线程2接收客户端请求配置指令和配置信息,并将请求指令和配置信息提供给缓存模式管理器102的缓存模式选择模块1021。
在步骤S302中,缓存模式选择模块1021根据客户端200的配置信息,在缓存模式库103中选择适合客户端200的缓存模式提供给客户端200,例如,选择单链表数据存储结构提供给客户端200。
在步骤S303中,客户端收到服务器发来的缓存模式信息后,服务器100和客户端200此时具有了相匹配的缓存模式,服务器100与客户端200利用相同的缓存模式进行数据交互。
需说明的是,客户端200发送请求配置指令时,与其自身是否配置有缓存模式无关,若客户端200已配置了缓存模式,其还可以向服务器100请求为其配置合适的缓存模式;若客户端200自身未配置缓存模式,则客户端200需要服务器100为其配置合适的缓存模式。因此,能动态改变客户端200的数据存储结构,并且数据存储结构可根据客户端200的机器配置做适应性的变化。
如图4和图5所示,在本发明的一个实施例中,包括位于服务器100中的线程池101、缓存模式管理器102和缓存模式库103,其中,线程池101中包括多个线程,如线程1、线程2、线程2…线程n;缓存模式管理器102包括缓存模式生成模块1022,用于接收线程发送的客户端请求创建指令和缓存模式,并根据客户端200发送的缓存模式,在缓存模式库103中创建新的缓存模式;缓存模式库103中存储了一些缓存模式,如缓存模式1、缓存模式2、缓存模式3等。
在步骤S501中,设客户端300与服务器100建立连接,客户端300向服务器100发送请求创建指令,这里的客户端300自身配置有缓存模式,例如,单链表数据存储结构,当客户端300与服务器100建立连接时,客户端300将自身具有的缓存模式发送给服务器100并请求创建缓存模式时。服务器100选择空闲的工作线程2响应客户端300发送的请求创建指令,并将客户端300发送的缓存模式提供给缓存模式管理器102。
在步骤S502中,缓存模式管理器102查询缓存模式库103中是否存在客户端300的缓存模式,具体为,缓存模式生成模块1022在缓存模式库103中查询,并判断是否存在客户端300发送的缓存模式。
在步骤S503中,若缓存模式库103中不存在客户端300的缓存模式,缓存模式生成模块1022则复制客户端300的缓存模式,并存储在缓存模式库103中,然后执行步骤S504。若存在,则不需创建,直接转步骤S505。
在步骤S504中,服务器100创建缓存模式成功后,缓存模式管理器102通知客户端300创建缓存模式成功,
在步骤S505中,客户端收到缓存模式后,服务器100通过空闲的工作线程与客户端300利用相同的缓存模式进行数据交互。
由于服务器100可根据客户端300的缓存模式对缓存模式库103进行更新,更新后的缓存模式库103包括服务器100自身配置有的缓存模式,还包括复制的客户端300的缓存模式,这样,使得缓存模式库103中的缓存模式变得丰富,同时更新的缓存模式还可提供给其它客户端,因此能够做到服务器100与客户端200、300…N的缓存模式自适应变化,从而提高了***的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种用于数据交互的缓存模式自适应***,其特征在于:包括位于服务器(100)中的缓存模式库(103)和缓存模式管理器(102);所述缓存模式库(103)用于存储至少一个缓存模式;所述缓存模式管理器(102)包括缓存模式选择模块(1021),所述缓存模式选择模块(1021)接收线程发送的客户端请求配置指令,并根据所述客户端发送的配置信息,在所述缓存模式库(103)中选择适合所述客户端的缓存模式提供给所述客户端。
2.根据权利要求1所述的用于数据交互的缓存模式自适应***,其特征在于:所述缓存模式管理器(102)还包括缓存模式生成模块(1022),所述缓存模式生成模块(1022)接收线程发送的客户端请求创建指令,并根据所述客户端发送的缓存模式,在所述缓存模式库中创建新的缓存模式。
3.根据权利要求2所述的用于数据交互的缓存模式自适应***,其特征在于:所述缓存模式生成模块(1022)当接收所述客户端的请求创建指令时,查询所述缓存模式库中是否存在所述客户端发送的缓存模式,若不存在,则复制所述客户端发送的缓存模式,并存储在所述缓存模式库(103)中。
4.根据权利要求1或2所述的用于数据交互的缓存模式自适应***,其特征在于:还包括线程池(101),所述线程池用于响应客户端发送的请求配置指令或请求创建指令,在创建缓存模式成功后通知所述客户端,或在所述缓存模式选择模块选择到适合所述客户端的缓存模式后,提供缓存模式给所述客户端。
5.一种用于数据交互的缓存模式自适应方法,其特征在于包括以下步骤:
步骤1:服务器(100)通过空闲的线程响应客户端的请求配置指令,并接收所述客户端发送的配置信息;
步骤2:所述服务器(100)根据所述客户端发送的配置信息,在所述服务器中的缓存模式库(103)中选择适合所述客户端的缓存模式提供给所述客户端。
6.根据权利要求5所述的用于数据交互的缓存模式自适应方法,其特征在于:所述方法还包括步骤3:所述服务器(100)通过空闲的线程响应所述客户端的请求创建指令,并接收所述客户端发送的缓存模式,根据客户端发送的缓存模式,所述服务器(100)在其内部的缓存模式库(103)中创建新的缓存模式。
7.根据权利要求6所述的用于数据交互的缓存模式自适应方法,其特征在于:所述方法还包括步骤4:所述服务器(100)创建新的缓存模式后,通知所述客户端创建缓存模式成功。
8.根据权利要求5至7中任意一项所述的用于数据交互的缓存模式自适应方法,其特征在于:所述方法还包括步骤5:所述客户端收到缓存模式后,与所述服务器通过相同的缓存模式进行数据交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910211330A CN101706740A (zh) | 2009-10-28 | 2009-10-28 | 用于数据交互的缓存模式自适应***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910211330A CN101706740A (zh) | 2009-10-28 | 2009-10-28 | 用于数据交互的缓存模式自适应***及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101706740A true CN101706740A (zh) | 2010-05-12 |
Family
ID=42376966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910211330A Pending CN101706740A (zh) | 2009-10-28 | 2009-10-28 | 用于数据交互的缓存模式自适应***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706740A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043675A (zh) * | 2010-12-06 | 2011-05-04 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN104426838A (zh) * | 2013-08-20 | 2015-03-18 | ***通信集团北京有限公司 | 一种互联网缓存调度方法及*** |
CN106649041A (zh) * | 2016-12-27 | 2017-05-10 | 郑州云海信息技术有限公司 | 自动测试存储缓存模式的装置及方法 |
-
2009
- 2009-10-28 CN CN200910211330A patent/CN101706740A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043675A (zh) * | 2010-12-06 | 2011-05-04 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN102043675B (zh) * | 2010-12-06 | 2012-11-14 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN104426838A (zh) * | 2013-08-20 | 2015-03-18 | ***通信集团北京有限公司 | 一种互联网缓存调度方法及*** |
CN104426838B (zh) * | 2013-08-20 | 2017-11-21 | ***通信集团北京有限公司 | 一种互联网缓存调度方法及*** |
CN106649041A (zh) * | 2016-12-27 | 2017-05-10 | 郑州云海信息技术有限公司 | 自动测试存储缓存模式的装置及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349940B2 (en) | Server side data cache system | |
CN100407152C (zh) | 多策略资源调度的方法和*** | |
US10292044B2 (en) | Apparatus for end-user transparent utilization of computational, storage, and network capacity of mobile devices, and associated methods | |
CN103309818B (zh) | 存储数据的方法及装置 | |
CN105095317B (zh) | 分布式数据库服务管理*** | |
CN104202423B (zh) | 一种通过软件架构扩展缓存的*** | |
CN100375093C (zh) | 多线程元数据的处理方法 | |
CN102591970A (zh) | 一种分布式键-值查询方法和查询引擎*** | |
CN102033912A (zh) | 一种分布式数据库访问方法及*** | |
CN102833352A (zh) | 分布式缓存管理***和实现分布式缓存管理的方法 | |
CN105335170A (zh) | 分布式***及数据增量更新方法 | |
CN103544285A (zh) | 一种数据加载方法及装置 | |
CN103312624A (zh) | 一种消息队列服务***和方法 | |
CN104202424B (zh) | 一种使用软件架构扩展缓存的方法 | |
CN103581332A (zh) | HDFS架构及HDFS架构中NameNode节点的压力分解方法 | |
CN101739296A (zh) | 数据处理***和方法 | |
CN101146127A (zh) | 一种分布式***中客户端缓存更新的方法和装置 | |
CN108664520A (zh) | 维护数据一致性的方法、装置、电子设备和可读存储介质 | |
US20070061509A1 (en) | Power management in a distributed file system | |
CN102722405A (zh) | 高并发、多线程应用中的计数方法及*** | |
CN103634411A (zh) | 一种具有状态一致性的市场数据实时广播***及方法 | |
CN110740155B (zh) | 分布式***中的请求处理方法及装置 | |
CN100485629C (zh) | 群聚式计算机***高速缓存数据备份处理方法及*** | |
CN101706740A (zh) | 用于数据交互的缓存模式自适应***及方法 | |
CN109871365A (zh) | 一种分布式文件*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100512 |