CN102891894A - 应用于服务器集群的缓存方法、缓存服务器及缓存系统 - Google Patents
应用于服务器集群的缓存方法、缓存服务器及缓存系统 Download PDFInfo
- Publication number
- CN102891894A CN102891894A CN2012103942937A CN201210394293A CN102891894A CN 102891894 A CN102891894 A CN 102891894A CN 2012103942937 A CN2012103942937 A CN 2012103942937A CN 201210394293 A CN201210394293 A CN 201210394293A CN 102891894 A CN102891894 A CN 102891894A
- Authority
- CN
- China
- Prior art keywords
- server
- connection request
- caching
- data
- application server
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种应用于服务器集群的缓存方法、缓存服务器及缓存系统,其中,该缓存方法包括:接收来自管理服务器的连接请求;根据连接请求判断是否能建立连接;如果判断结果为能,则建立与连接请求相应的应用服务器之间的连接;如果判断结果为否,发送连接饱和信息给管理服务器,以便管理服务器重新选择新的缓存地址;通过与连接请求相应的应用服务器之间的连接响应来自应用服务器的数据获取请求。通过本发明,可以提高服务器集群中各服务器的工作效率。
Description
技术领域
本发明涉及通信领域,具体地,涉及一种应用于服务器集群的缓存方法、缓存服务器及缓存系统。
背景技术
随着网络技术的不断发展,IT技术的变更日新月异,网络应用程序的功能也越来越强大,随之而来的问题是:单一服务器的CPU运算能力已无法满足日渐庞大的计算需求,由此,诞生了服务器集群的概念,以解决单机运算能力,I/O能力的限制和不足。在服务器集群中,所有应用程序被分别部署到每台服务器中。
同时,伴随着数据高速读取的要求,在服务器中出现了高速缓存的应用。在各个运行应用程序的服务器中,都有一个高速缓存空间(以下称为缓存区)。如图1所示,目前一般将运行应用程序的服务器的内存分成三部分,其中,服务器操作系统占用一部分内存101,应用程序本身占用一部分内存102,在服务器内存的剩余空间中,划出一部分区域103作为缓存区。
缓存区存储着应用程序运行时必须的参数或变量(以下参数或变量都简称参数)。这些参数或存储在应用程序提供的配置文件中,或通过应用程序提供的配置功能由人工配置。当应用程序运行时,这些参数被读入到缓存中,供应用程序调用。由于缓存的访问速度远比从配置文件等中直接读取要快,因此利用缓存可以有效提高程序的执行效率。在系统运行过程中,缓存会有刷新动作,例如,参数调整、应用程序升级后的安装部署、或者因为一些特殊的原因需要重启服务,重新装入缓存数据。
但是,对于拥有多台服务器的网络集群来说,缓存的装入会有以下的问题存在:
1.目前每个服务器都使用各自单独的缓存,耗费资源;
2.数据源更新后,每个服务器的缓存都需要更新,难以保证同步;
3.在一个服务器上更新了缓存并不会通知到集群内的其它服务器;
4.更新缓存的操作可能会占用大量时间,对于服务器数量比较庞大的集群来说,将全部服务器缓存进行更新所耗费的时间较多;
5.对于服务器来说,每台服务器可用的内存是有上限的,若应用服务器的内存容量无法满足应用程序的需求时,扩充内存会带来额外的开支。特别是对于分布式部署的应用,对每台服务器都要进行内存扩充的作业,额外花费的费用和时间非常可观。
虽然目前的数据库共享技术可以在一定程度上实现服务器之间的数据同步,但并不能解决以上全部问题。主要原因之一是数据库仅能存储数据资源,不能存储程序实体;另外,对于数据库来说,其响应时间比高速缓存要长,对访问速度影响较大。
综上所述,目前的服务器集群缺少有效的缓存机制、进而影响了服务器的工作效率。
发明内容
本发明实施例的主要目的在于提供一种应用于服务器集群的缓存方法、缓存服务器及缓存系统,以解决现有技术中的服务器集群缺少有效的缓存机制、进而影响服务器集工作效率的问题。
为了实现上述目的,本发明实施例提供一种应用于服务器集群的缓存方法,该方法包括:接收来自管理服务器的连接请求;根据所述的连接请求判断是否能建立连接;如果判断结果为能,则建立与所述连接请求相应的应用服务器之间的连接;如果判断结果为否,发送连接饱和信息给所述的管理服务器,以便所述的管理服务器重新选择新的缓存地址;通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求。
具体地,在所述接收来自管理服务器的连接请求之前,所述的方法还包括:所述管理服务器接收来自所述应用服务器的所述连接请求,其中,所述连接请求中包括所述应用服务器的地址;所述管理服务器根据所述的连接请求查询相应的缓存地址;所述管理服务器将所述的连接请求转发至所述相应的缓存地址。
所述管理服务器根据所述的连接请求查询相应的缓存地址包括:所述管理服务器根据本地保存的缓存服务器连接信息查询所述连接请求中的应用服务器是否存在相应的连接信息;如果查询结果为存在,则根据所述相应的连接信息发送所述的连接请求;如果查询结果为不存在,则所述管理服务器根据本地保存的缓存服务器信息选择一个缓存地址发送所述的连接请求,并更新所述的缓存服务器连接信息。
通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求包括:根据所述数据获取请求判断快速访问区是否存在相应的数据;如果判断结果是存在,则从所述快速访问区将所述相应的数据发送给所述应用服务器;如果判断结果是不存在,则从缓存区中将所述相应的数据发送给所述应用服务器。
本发明实施例还提供一种应用于服务器集群的缓存服务器,该缓存服务器包括:第一连接请求接收单元,用于接收来自管理服务器的连接请求;连接建立判断单元,用于根据所述的连接请求判断是否能建立连接;第一连接建立单元,用于在所述连接建立判断单元判断的结果为能建立连接时,建立与所述连接请求相应的应用服务器之间的连接;饱和信息发送单元,用于在所述连接建立判断单元判断的结果为否时,发送连接饱和信息给所述的管理服务器,以便所述的管理服务器重新选择新的缓存地址;数据获取请求响应单元,用于通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求。
具体地,所述的数据获取请求响应单元包括:快速访问判断模块,用于根据所述数据获取请求判断快速访问区是否存在相应的数据;数据快速发送模块,用于在所述快速访问判断单元的判断结果为存在所述相应的数据时,从所述快速访问区将所述相应的数据发送给所述应用服务器;数据发送单元,用于在所述快速访问判断单元的判断结果为不存在所述相应的数据时,从缓存区中将所述相应的数据发送给所述应用服务器。
本发明实施例还提供一种服务器集群的缓存系统,该缓存系统包括上述的缓存服务器、应用服务器以及管理服务器,其中,应用服务器包括:第一连接请求发送单元,用于向所述的管理服务器发送连接请求,其中,所述连接请求中包括所述应用服务器的地址;第二连接建立单元,用于建立与所述缓存服务器之间的连接;数据获取请求发送单元,用于向所述缓存服务器发送数据获取请求;数据获取单元,用于获取来自所述缓存服务器的数据;所述的管理服务器包括:第二连接请求接收单元,用于接收来自所述应用服务器的所述连接请求;缓存地址查询单元,用于根据所述的连接请求查询相应的缓存地址;第二连接请求发送单元,用于将所述的连接请求转发至所述相应的缓存地址;缓存地址重新选择单元,用于在接收到所述缓存服务器的连接饱和信息后,重新选择新的缓存地址,以便所述的连接请求发送单元重新发送所述的连接请求。
具体地,所述的缓存地址查询单元包括:连接信息查询模块,用于根据本地保存的缓存服务器连接信息查询所述连接请求中的应用服务器是否存在相应的连接信息;如果查询结果为存在,则根据所述相应的连接信息发送所述的连接请求;缓存地址选择模块,用于在所述查询结果为不存在时,根据本地保存的缓存服务器信息选择一个缓存地址发送所述的连接请求;连接信息更新模块,用于在所述缓存地址选择模块选择缓存地址后更新所述的缓存服务器连接信息。
借助于上述技术方案至少之一,通过根据管理服务器的连接请求建立与相应应用服务器之间的连接,实现应用服务器的缓存数据获取请求,通过本发明实施例提供的有效缓存机制,可以提高网络集群中各服务器的工作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中运行应用程序的服务器的内存使用结构图;
图2是根据本发明实施例的应用于服务器集群的缓存方法的流程图;
图3是根据本发明实施例的应用于服务器集群的缓存服务器的结构框图;
图4是根据本发明实施例的数据获取请求响应单元25的结构框图;
图5是根据本发明实施例的服务器集群的缓存系统的结构框图;
图6是根据本发明实施例的应用服务器1的结构框图;
图7是根据本发明实施例的缓存地址查询单元32的结构框图;
图8是根据本发明实施例的服务器缓存共享系统的结构示意图;
图9是根据本发明实施例的缓存服务器202的功能模块示意图;
图10是根据本发明实施例的管理服务器204的内部模块结构框图;
图11是根据本发明实施例的管理服务器204与缓存服务器202的模块连接示意图;
图12是根据本发明实施例的多缓存服务器的系统结构示意图;
图13是根据本发明实施例的服务器共享缓存系统中应用服务器访问缓存数据的流程图;
图14是根据本发明实施例的一优选实施例的系统结构图;
图15是根据本发明实施例的缓存服务器的电路连接示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由以上描述可知,现有技术中的网络集群,由于缺少有效的缓存机制,因此降低了服务器的工作效率。基于此,本发明实施例提供一种应用于服务器集群的缓存方法、缓存服务器及缓存系统,以解决上述问题。以下结合附图对本发明进行详细说明。
实施例一
本发明实施例提供一种应用于服务器集群的缓存方法,如图2所示,该方法包括:
步骤201,接收来自管理服务器的连接请求;
步骤202,根据连接请求判断是否能建立连接,如果判断结果为能建立连接,则进行步骤203,否则,进行步骤205;
步骤203,如果判断结果为能,则建立与连接请求相应的应用服务器之间的连接;
步骤204,通过与连接请求相应的应用服务器之间的连接响应来自应用服务器的数据获取请求;
步骤205,发送连接饱和信息给管理服务器,以便管理服务器重新选择新的缓存地址,并返回步骤201。
由以上描述可知,通过根据管理服务器的连接请求建立与相应应用服务器之间的连接,实现应用服务器的缓存数据获取请求,通过本发明实施例提供的有效缓存机制,可以提高网络集群中各服务器的工作效率。
在接收来自管理服务器的连接请求之前,管理服务器首先接收到来自应用服务器的连接请求,其中,连接请求中包括应用服务器的地址,之后,管理服务器根据连接请求查询相应的缓存地址,并将连接请求转发至相应的缓存地址,即,转发至相应的缓存服务器。
具体地,管理服务器通过如下方式查询相应的缓存地址:管理服务器根据本地保存的缓存服务器连接信息查询连接请求中的应用服务器是否存在相应的连接信息;如果查询结果为存在,则根据相应的连接信息发送连接请求;如果查询结果为不存在,则管理服务器根据本地保存的缓存服务器信息选择一个缓存地址发送连接请求,并更新缓存服务器连接信息。
这里的缓存服务器连接信息用于记录缓存服务器与应用服务器之间的连接信息,当管理服务器查询到有相应的连接信息时,则将应用服务器的连接请求发送至对应的缓存服务器;当管理服务器未查询到有相应的连接信息时,管理服务器选择一个缓存服务器,以发送应用服务器的连接请求,并将该连接信息更新至缓存服务器连接信息中,以便后续应用服务器再次发送连接请求时,管理服务器可以根据更新的信息查找到有连接关系的缓存服务器,并执行发送连接请求的操作。
步骤204响应数据获取请求具体操作为:根据数据获取请求判断快速访问区是否存在相应的数据;如果判断结果是存在,则从快速访问区将相应的数据发送给应用服务器;如果判断结果是不存在,则从缓存区中将相应的数据发送给应用服务器。
快速访问区用于存放访问频率较多的数据,快速访问区的数据可以由系统根据访问频率自动更新或者由用户来更新,通过快速访问区,可以更快更有效地访问获取数据。
实施例二
本发明实施例还提供一种应用于服务器集群的缓存服务器,优选地用于实现上述实施例一中的方法。图3是该缓存服务器的结构框图,如图3所示,该缓存服务器包括:
第一连接请求接收单元21,用于接收来自管理服务器的连接请求;
连接建立判断单元22,用于根据连接请求判断是否能建立连接;
第一连接建立单元23,用于在连接建立判断单元判断的结果为能建立连接时,建立与连接请求相应的应用服务器之间的连接;
饱和信息发送单元24,用于在连接建立判断单元判断的结果为否时,发送连接饱和信息给管理服务器,以便管理服务器重新选择新的缓存地址;
数据获取请求响应单元25,用于通过与连接请求相应的应用服务器之间的连接响应来自应用服务器的数据获取请求。
由以上描述可以看出,通过第一连接建立单元建立与连接请求相应的应用服务器之间的连接,数据获取请求响应单元可以实现应用服务器的缓存数据获取请求,通过本发明实施例提供的有效缓存机制,可以提高网络集群中各服务器的工作效率。
如图4所示,上述数据获取请求响应单元25包括:
快速访问判断模块251,用于根据所述数据获取请求判断快速访问区是否存在相应的数据;
数据快速发送模块252,用于在所述快速访问判断单元的判断结果为存在所述相应的数据时,从所述快速访问区将所述相应的数据发送给所述应用服务器;
数据发送模块253,用于在所述快速访问判断单元的判断结果为不存在所述相应的数据时,从缓存区中将所述相应的数据发送给所述应用服务器。
快速访问区用于存放访问频率较多的数据,快速访问区的数据可以由系统根据访问频率自动更新或者由用户来更新,通过快速访问区,可以更快更有效地访问获取数据。
本实施例中的缓存服务器可以是服务器集群中的共享缓存服务器,通过该共享缓存服务器可以节约各服务器自身的资源并节省数据在各服务器缓存装入所耗费的时间,提高各服务器的工作效率。
实施例三
本发明实施例提供一种服务器集群的缓存系统,如图5所示,该系统包括:应用服务器1、管理服务器3以及缓存服务器2,该缓存服务器优选的可以是上述实施例二中的缓存服务器。应用服务器1通过管理服务器3,与缓存服务器2建立连接,从缓存服务器2读取数据。
本发明实施例通过在服务器集群中,在部分服务器上划出一个共享的内存区域,即缓存服务器2,根据服务器的类型不同,共享可以是一个共享的缓存,也可以是一个共享的页面文件,可以简称为“共享内存”,在共享内存中可以存储应用程序运行需要的参数、公共变量,或者是公用程序实体。这些数据或程序在服务集群由一个数据源提供,应用程序启动后,只需要执行数据的装入操作,将这些数据读入到共享内存中,共享内存的数据就可以被集群中全部应用服务器访问到,相当于将数据或程序装入了全部应用服务器中,可以克服现有技术中的服务器集群缺少有效的缓存机制、进而影响了服务器的工作效率的问题。
为了更好的理解本发明实施例,以下结合图3所示的缓存服务器详细描述各服务器。
如图6所示,应用服务器1包括:
第一连接请求发送单元11,用于向管理服务器发送连接请求,其中,连接请求中包括应用服务器的地址;
第二连接建立单元12,用于建立与缓存服务器之间的连接;
数据获取请求发送单元13,用于向缓存服务器发送数据获取请求;
数据获取单元14,用于获取来自缓存服务器的数据;
管理服务器3包括:
第二连接请求接收单元31,用于接收来自应用服务器的连接请求;
缓存地址查询单元32,用于根据连接请求查询相应的缓存地址;
第二连接请求发送单元33,用于将连接请求转发至相应的缓存地址;
缓存地址重新选择单元34,用于在接收到缓存服务器的连接饱和信息后,重新选择新的缓存地址,以便连接请求发送单元重新发送连接请求。
通过管理服务器选择合适的缓存地址转发来自应用服务器的连接请求给缓存服务器,缓存服务器建立与应用服务器之间的连接,从而应用服务器可以到缓存服务器实现数据获取操作,通过缓存服务器可以节约各应用服务器自身的资源并节省数据在各应用服务器缓存装入所耗费的时间,提高工作效率。
具体地,如图7所示,缓存地址查询单元32包括:
连接信息查询模块321,用于根据本地保存的缓存服务器连接信息查询所述连接请求中的应用服务器是否存在相应的连接信息;如果查询结果为存在,则根据所述相应的连接信息发送所述的连接请求;
缓存地址选择模块322,用于在所述查询结果为不存在时,根据本地保存的缓存服务器信息选择一个缓存地址发送所述的连接请求;
连接信息更新模块323,用于在所述缓存地址选择模块选择缓存地址后更新所述的缓存服务器连接信息。
为了更好的理解本发明实施例,以下给出一集群系统实例。
图8是服务器缓存共享系统的结构示意图,如图8所示,服务器缓存共享系统由数据源201、缓存服务器202、缓存内部网络203、管理服务器204、应用服务器205、高速内部局域网206构成。其中,缓存服务器202通过缓存内部网络203分别与数据源201和管理服务器204连接,管理服务器204和应用服务器205通过高速内部局域网206连接。
以下分别详细各部分。
数据源201主要具有提供参数配置、应用程序部署的功能,即管理员通过数据源201维护要装入缓存的数据。
缓存服务器202向集群中应用服务器205提供共享的高速缓存,缓存服务器提供数据快速检索、读写的功能,能够即时响应各应用服务器的访问请求,可以等同于各服务器自己的缓存。
在实际操作中,缓存服务器可以是一台(或一组)单独的服务器设备,也可以在网络集群中的应用服务器中选取一台(或几台)应用服务器作为虚拟的缓存服务器使用。
在服务器集群需要扩充缓存的情况下,只需要对缓存服务器进行扩展,可以通过物理添加服务器内存的方式,也可以采用添加共享缓存服务器组成一个更大的共享缓存的方式。因为缓存服务器可以看作集群中各应用服务器自己的缓存,所以扩充了缓存服务器也就等同扩充了整个集群内应用服务器的缓存。
缓存内部网络203连接缓存服务器202、管理服务器204、数据源201,这个专用局域网可以仅允许缓存设备接入,其他应用服务器须通过管理服务器204才可以对缓存内部网络203所连接的设备进行访问。
管理服务器204用于负责管理缓存服务器202的更新,调度应用服务器205对缓存服务器202的访问。
应用服务器205为服务器集群中的各个应用程序部署的节点,对外提供应用服务。
高速内部局域网206连接应用服务器205与管理服务器204,进而实现应用服务器与缓存服务器之间的交互,此局域网的访问权限应当仅限于内部的服务器之间。
在服务器缓存共享系统中,局域网206和缓存内部网络203都可以采用高速局域网,例如10Gbit/s以太网或光纤网络,以保证提供快速访问的能力。由于应用程序运行时会不断访问共享缓存,因此高速局域网可以保证访问速度。
图9是缓存服务器202的功能模块示意图,如图9所示,该缓存服务器202包含:共享缓存模块301、控制模块302、和连接管理模块303。其中,共享缓存模块301分别与控制模块302、连接管理模块303连接,控制模块302与连接管理模块303连接。具体地,图15所示为缓存服务器的电路连接示意图,如图15所示,磁盘单元(包括磁盘和磁盘扩展槽)和内存(包括内存和内存扩展槽)构成共享缓存模块;中央处理器和服务器状态监控组件构成控制模块;其他各类数据总线、控制线路和服务器状态监控组件构成连接管理模块。
图10是管理服务器204的内部模块结构框图,如图10所示,管理服务器204包括:缓存服务器监视模块401、列表维护模块402、可用服务器列表和连接列表403、连接转发模块404。其中,缓存服务器监视模块401、列表维护模块402、可用服务器列表和连接列表403、连接转发模块404依次连接。
图11为管理服务器204与缓存服务器202的模块连接示意图,如图11所示,上述连接管理模块303与管理服务器204的缓存服务器监视模块401、连接转发模块404连接,控制模块302与管理服务器204的缓存服务器监视模块401连接,缓存服务器监视模块401与缓存服务器202的控制模块302、连接管理模块303连接,连接转发模块404与缓存服务器202的连接管理模块303连接。
为了进一步理解管理服务器204与缓存服务器202之间的工作流程,以下详细描述上述各模块。
(一)缓存服务器202
共享缓存模块301即高速缓存,高速缓存中的内容可以被网络中的应用服务器访问到。由于在实际操作中可能会同时有多个访问的请求,因此共享缓存模块具备并行处理能力。
共享缓存模块中的内容实施分区管理,即整个缓存可以为不同的应用程序提供服务,每个应用程序的数据存放在不同分区。具体地,每个应用程序有一个唯一的标识符,当应用程序的访问请求到达时,共享缓存模块首先根据标识符判断请求是哪个应用程序,然后在对应的分区里面查询数据并发送给对应的应用服务器。
为了快速查询数据,缩短数据检索带来的时间支出,共享缓存模块优选地对内部数据编制一个索引列表。另外,共享缓存模块维护一个快速访问表,作为缓存数据的高速缓冲存储器(cache),用来存储那些需要被频繁访问的数据,当有查询需求时候,共享缓存模块首先在快速访问表里查找数据,若找不到再到缓存区里去查找数据。快速访问表每隔一定时间会刷新,这个时间间隔可以由管理人员设置。
控制模块302负责管理缓存服务器的运行,具体包括:一、管理缓存数据的更新,当数据源201中数据更新时,即时启动共享缓存中的数据更新;同时也允许管理员通过控制模块来启动共享缓存中的数据更新;二、管理各缓存服务器之间的同步,当网络中的缓存服务器不止一台时,在缓存数据更新后,控制模块可以发送数据更新消息到管理服务器204的缓存服务器监视模块401,通知管理服务器204缓存数据有更新,以便启动各缓存服务器之间的数据同步。同步时,控制模块302驱动各个缓存服务器之间通过连接管理模块303创建专门连接。
连接管理模块303负责管理和建立连接。当管理服务器204的缓存服务器监视模块401问询当前缓存服务器连接情况,或者管理服务器204的连接转发模块404的转来应用服务器的连接请求时,连接管理模块303会反馈当前缓存服务器的忙闲情况。当缓存服务器可以处理新的应用服务器连接请求时,连接管理模块303向管理服务器204的缓存服务器监视模块401发送一个连接可用消息,通知管理服务器204该缓存服务器可以接纳新的连接,并在有连接请求时(即收到管理服务器204的连接转发模块404转发的连接请求),负责建立应用服务器205到当前缓存服务器的共享缓存的连接。若当前缓存服务器已无法处理新的应用服务器的连接时,连接管理模块303会向管理服务器204的缓存服务器监视模块401发送一个连接饱和消息,通知管理服务器204该缓存服务器已无法接纳新的连接。
(二)管理服务器204
缓存服务器监视模块401会定时扫描缓存服务器是否可用(即向缓存服务器202的连接管理模块303发送消息,问询缓存服务器的连接情况),将扫描结果反馈到列表维护模块402。同时,在共享缓存数据更新时,缓存服务器监视模块401接收缓存服务器202的控制模块302发送数据更新消息,通知其他缓存服务器启动数据同步。
列表维护模块402根据缓存服务器监视模块401等的反馈维护可用服务器列表和连接列表403,并可提供手工维护功能,由管理员操作。
可用服务器列表和连接列表403包含两个表:缓存服务器列表和连接列表,其中,缓存服务器列表用于记录当前可用的缓存服务器,连接列表用于记录当前应用服务器与缓存服务器的连接情况。
网络中的所有缓存服务器的地址记录在缓存服务器的列表中,对应两种状态:可用和不可用。这个表的内容在一定时间间隔后会刷新。缓存服务器监视模块401会定时扫描缓存服务器的连接管理模块303,确定对应缓存服务器是否可用,将扫描结果反馈到列表维护模块402,列表维护模块402将不可用的地址从缓存服务器列表中清除,将新增加的可用地址添加入缓存服务器列表。
连接列表记录应用服务器地址和缓存服务器地址的对应关系,在应用服务器第一次与缓存服务器建立连接后,在一定时间内应用服务器固定会到同一台缓存服务器获取数据,这样可以避免多次查询列表造成的性能和时间开支。连接列表中每个连接关系有一定的存在时限,可由管理员设置,超过这个时限的连接将被从表里删除,该动作可由列表维护模块402完成。
列表维护模块402除定时清理连接列表以外,还提供手工维护可用服务器列表与连接列表的功能,以便必要时刻对缓存服务器的连接策略进行人工干预。
连接转发模块404具有网关的作用,与缓存服务器的连接管理模块303协同工作,根据可用服务器列表和连接列表403提供的信息,负责建立起应用服务器205和可用缓存服务器202之间的连接。
在一个服务器集群中,缓存服务器可以部署多台。其原因是如果网络集群的规模很大,单台缓存服务器面临巨大的访问数量时,可能出现性能的下降,造成响应不及时。另外若是在缓存服务器只有一台的情况下,若缓存服务器发生了故障,应用服务器将无法获取缓存数据,若没有备份措施,极容易造成应用服务停止的严重事件。为了避免上述情况,可采取多缓存服务器的策略。
图12是多缓存服务器的系统结构示意图,如图12所示,将其中一台作为主缓存服务器,其他缓存服务器作为辅助,具体实现方式如下:
由管理服务器204的缓存服务器监视模块401监视各缓存服务器的运行情况,将结果反馈至列表维护模块402,列表维护模块维护可用服务器列表和连接列表403,对于压力较高的缓存服务器,设为不可用,限制新的连接,通过该方法来降低缓存服务器的压力。同时选取多台服务器做缓存可以防止出现缓存服务器宕机,造成应用中断的情况出现。当需要有访问的请求来到时,管理服务器会指派一台缓存服务器响应该请求。
为了实现缓存服务器的负载均衡,在缓存服务器不止一台的情况下,管理服务器的连接转发模块404通过连接列表可以获取到各个缓存服务器的连接数,连接转发模块会将后续发来的连接请求尽量分配到当前连接数较少的缓存服务器。同时,列表维护模块402在扫描连接列表的时候会分析当前是否有缓存服务存在过多数量的连接,如果存在,列表维护模块会强制将一部分连接从列表中删除或修改列表以降低缓存服务器的访问数,以便应用服务器的访问请求分散到其他缓存服务器,避免某一缓存服务器集中过多的连接。列表维护模块采取的措施可以由系统管理人员指定或人工进行干预。
管理服务器的缓存服务器监视模块401定时扫描各个缓存服务器是否可用,当缓存服务器不可用时,会及时修改缓存服务器列表,避免后续过来的连接请求连接到不可用的缓存服务器,造成二次查询缓存服务器导致额外的时间支出。
为了防止多个缓存服务器之间出现数据不同步的问题,在整个集群所有的缓存服务器中选取一台缓存服务器直接连接到数据源201,作为主缓存服务器,其它的缓存服务器都作为辅助缓存服务器502,辅助缓存服务器可以有多台,它们只是复制缓存服务器202的内容,自身可以不直接从数据源获取数据。辅助缓存服务器分别与主缓存服务器和管理服务器相连。
多个缓存服务器更新的流程是:
(1)在数据源201数据发生更新时,主缓存服务器202的控制模块302自动发出指令,或者管理员通过缓存服务器202的控制模块302发出指令让主缓存服务器的共享缓存模块301从数据源201获取最新数据,同时生成一个更新描述文件,文件内容记录本次更新的内容,便于其他辅助缓存服务器更新使用;
(2)主缓存服务器202的控制模块302发送数据更新消息到管理服务器的缓存服务器监视模块401,通知管理服务器204缓存数据有更新;
(3)管理服务器204的缓存服务器监视模401对所有其它辅助缓存服务器的控制模块发送数据更新消息,通知所有辅助缓存服务器502从缓存服务器202复制数据到自身的共享缓存模块301,同时管理服务器的缓存服务器监视模块将缓存服务器列表中所有辅助缓存服务器的状态置为“不可用”;
(4)辅助缓存服务器502的控制模块302响应数据更新消息,驱动当前缓存服务器的连接管理模块303,通过专用网络203与主缓存服务器202建立连接,首先获取更新描述文件,根据文件的内容下载更新文件到自己的共享缓存模块301;复制工作进行的时候正在进行复制工作的辅助缓存服务器是不可用的,当复制工作完成后,辅助缓存服务器502的控制模块给管理服务器的缓存服务器监视模块发送一个连接可用消息,管理服务器收到消息后会在缓存服务器列表里将更新完成的辅助缓存服务器502标记为“可用”。
在实际操作中,主缓存服务器202与辅助缓存502的角色可以相互转换,若是主缓存服务器因为故障无法使用,那么就在辅助缓存服务器里随机选取一台作为新的主缓存服务器使用,原来的故障缓存服务器在恢复正常后则作为辅助缓存使用。
主缓存服务器202、数据源201、辅助缓存服务器502、管理服务器204之间通过专用网络203连接,这个网络仅允许缓存设备连接,不允许外部应用服务器直接接入。
图13是服务器共享缓存系统中应用服务器访问缓存数据的流程图,如图13所示:
步骤1301:应用服务器205发送一个连接请求到管理服务器的连接转发模块404,该连接请求中包含应用服务器自身的地址及请求的内容。
步骤1302:管理服务器的连接转发模块查询可用服务器列表和连接列表403,查询连接列表中是否有该应用服务器的连接信息。
步骤1303:若查询到有连接信息,则按照连接信息内的对应关系将连接请求转发至对应缓存服务器的连接管理模块303。
步骤1304:若查询到没有连接信息,连接转发模块404则从缓存服务器列表中选取一个可用地址,将这个连接请求指派到选取的缓存服务器的地址上,同时在连接表中添加这一对应关系。
步骤1305:缓存服务器的连接管理模块303接到管理服务器转发过来的连接请求,判断当前缓存服务器是否有能力建立新的连接。如可建立新的连接,进入步骤1306;如无法建立新的连接,进入步骤1309。
步骤1306:被选取的缓存服务器的连接管理模块通过管理服务器建立起应用服务器到缓存服务器共享缓存模块的访问连接。
步骤1307:管理服务器在连接列表中记录该连接。
步骤1308:应用服务器通过管理服务器的转接,就可以从缓存服务器的共享缓存模块获取数据。
步骤1309:被选取的缓存服务器连接管理模块向管理服务器发送连接饱和消息,通知管理服务器,当前缓存服务器已到处理能力极限。
步骤1310:管理服务器的连接转发模块会在可用服务器列表和连接列表403中再次查询一个新的可用缓存服务器地址,将连接请求转发过去,同时在可用服务器列表和连接列表403将无法连接的缓存服务器标注为不可用,返回步骤1305。如所有缓存服务器都饱和,则管理服务器向应用服务器返回等待消息。
在具体实施过程中,考虑到网络访问速度可能存在的限制,因为再快的网络也无法和访问自身内存的速度相比,因此,在服务器缓存共享系统中,在部署缓存服务器202的同时,在每台应用服务器205上可以保留一定的缓存空间。
图14是一优选实施例的系统结构图,如图14所示,各台应用服务器205与数据源201通过高速网络连接。在数据源201中增加可供管理员维护的专用路由表,对于数据源201提供的数据进行分类处理,视数据的重要程度及应用运行时访问的频繁程度来确定装入缓存服务器202的共享缓存,还是直接装入应用服务器205的自身缓存。对于重要的系统参数或需要频繁访问到的数据,例如系统配置文件,可以直接装入应用服务器自身的缓存中。对于在程序运行中会用到,但不会频繁去访问的数据,并且数据量庞大会占用大量内存的数据,例如协议信息表;或者需要经常更新、重新装载的数据,例如每日需要根据批量文件更新一次的报价信息等等,可以装入缓存服务器202的共享缓存中,通过共享缓存提供给其他应用服务器访问。
通过在每台应用服务器205上可以保留一定的缓存空间,就可以避免网络由于频繁访问而较快耗尽共享缓存的资源的问题,从而避免了不必要的瓶颈。
在服务器集群中,本发明实施例通过共享服务器缓存以节约各服务器自身的资源并节省数据在各服务器缓存装入所耗费的时间,且本发明实施例具有较高的安全性,高效性和可扩展性,通过配置主辅缓存服务器,还可以进一步提高系统的可靠性。
本发明实施例针对服务器集群提出了一种服务器缓存共享方案,在集群中设置专门的缓存服务器,缓存服务器为服务器集群提供高速缓存的功能,并可以被其它服务器共享和访问,在更新了缓存数据之后,其他应用服务器无需再逐一进行相同的更新操作即可让应用程序获取到新的缓存数据,即在共享缓存上做一次更新操作等同于在所有应用服务器上进行一次更新操作,以节省集群内服务器由于分别更新缓存所耗费的时间。另外,通过高速网络(例如10Gbit/s以太网或光纤网络)的应用,保证了集群中共享内存的访问速度。在需要对共享内存进行扩充时,只需要扩充缓存服务器的内存,即可实现相当于对整个集群内进行缓存扩充的效果。
综上所述,本发明实施例有以下有益效果:
(1)简化缓存数据维护步骤
相对于每台应用服务器各自维护自己的缓存的方法,本发明实施例只需要在缓存服务器装入数据,在之后可被各应用服务器共享访问,较大地缩短了维护数据所需的时间。
(2)节约应用服务器资源
由于各应用服务器不需在内存空间中维护一个单独缓存区,节省了内存资源,有助于提高应用服务器处理性能。
(3)若应用服务器因某些原因需重启应用服务,则不需要再进行装入缓存数据的操作即可直接提供服务。
(4)可扩展性
只需对缓存服务器的内存进行升级,或者增加缓存服务器,即可实现服务器集群的缓存扩展,具备较高的可扩展性,并能够有效降低升级成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如ROM/RAM、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种应用于服务器集群的缓存方法,其特征在于,所述的方法包括:
接收来自管理服务器的连接请求;
根据所述的连接请求判断是否能建立连接;
如果判断结果为能,则建立与所述连接请求相应的应用服务器之间的连接;如果判断结果为否,发送连接饱和信息给所述的管理服务器,以便所述的管理服务器重新选择新的缓存地址;
通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求。
2.根据权利要求1所述的方法,其特征在于,在所述接收来自管理服务器的连接请求之前,所述的方法还包括:
所述管理服务器接收来自所述应用服务器的所述连接请求,其中,所述连接请求中包括所述应用服务器的地址;
所述管理服务器根据所述的连接请求查询相应的缓存地址;
所述管理服务器将所述的连接请求转发至所述相应的缓存地址。
3.根据权利要求2所述的方法,其特征在于,所述管理服务器根据所述的连接请求查询相应的缓存地址包括:
所述管理服务器根据本地保存的缓存服务器连接信息查询所述连接请求中的应用服务器是否存在相应的连接信息;
如果查询结果为存在,则根据所述相应的连接信息发送所述的连接请求;
如果查询结果为不存在,则所述管理服务器根据本地保存的缓存服务器信息选择一个缓存地址发送所述的连接请求,并更新所述的缓存服务器连接信息。
4.根据权利要求1所述的方法,其特征在于,通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求包括:
根据所述数据获取请求判断快速访问区是否存在相应的数据;
如果判断结果是存在,则从所述快速访问区将所述相应的数据发送给所述应用服务器;
如果判断结果是不存在,则从缓存区中将所述相应的数据发送给所述应用服务器。
5.一种应用于服务器集群的缓存服务器,其特征在于,所述的缓存服务器包括:
第一连接请求接收单元,用于接收来自管理服务器的连接请求;
连接建立判断单元,用于根据所述的连接请求判断是否能建立连接;
第一连接建立单元,用于在所述连接建立判断单元判断的结果为能建立连接时,建立与所述连接请求相应的应用服务器之间的连接;
饱和信息发送单元,用于在所述连接建立判断单元判断的结果为否时,发送连接饱和信息给所述的管理服务器,以便所述的管理服务器重新选择新的缓存地址;
数据获取请求响应单元,用于通过所述与连接请求相应的应用服务器之间的连接响应来自所述应用服务器的数据获取请求。
6.根据权利要求5所述的缓存服务器,其特征在于,所述的数据获取请求响应单元包括:
快速访问判断模块,用于根据所述数据获取请求判断快速访问区是否存在相应的数据;
数据快速发送模块,用于在所述快速访问判断单元的判断结果为存在所述相应的数据时,从所述快速访问区将所述相应的数据发送给所述应用服务器;
数据发送模块,用于在所述快速访问判断单元的判断结果为不存在所述相应的数据时,从缓存区中将所述相应的数据发送给所述应用服务器。
7.一种服务器集群的缓存系统,其特征在于,所述的系统包括如权利要求5或6所述的缓存服务器、应用服务器以及管理服务器,其中,
所述的应用服务器包括:
第一连接请求发送单元,用于向所述的管理服务器发送连接请求,其中,所述连接请求中包括所述应用服务器的地址;
第二连接建立单元,用于建立与所述缓存服务器之间的连接;
数据获取请求发送单元,用于向所述缓存服务器发送数据获取请求;
数据获取单元,用于获取来自所述缓存服务器的数据;
所述的管理服务器包括:
第二连接请求接收单元,用于接收来自所述应用服务器的所述连接请求;
缓存地址查询单元,用于根据所述的连接请求查询相应的缓存地址;
第二连接请求发送单元,用于将所述的连接请求转发至所述相应的缓存地址;
缓存地址重新选择单元,用于在接收到所述缓存服务器的连接饱和信息后,重新选择新的缓存地址,以便所述的连接请求发送单元重新发送所述的连接请求。
8.根据权利要求7所述的系统,其特征在于,所述的缓存地址查询单元包括:
连接信息查询模块,用于根据本地保存的缓存服务器连接信息查询所述连接请求中的应用服务器是否存在相应的连接信息;如果查询结果为存在,则根据所述相应的连接信息发送所述的连接请求;
缓存地址选择模块,用于在所述查询结果为不存在时,根据本地保存的缓存服务器信息选择一个缓存地址发送所述的连接请求;
连接信息更新模块,用于在所述缓存地址选择模块选择缓存地址后更新所述的缓存服务器连接信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210394293.7A CN102891894B (zh) | 2012-10-17 | 2012-10-17 | 应用于服务器集群的缓存方法、缓存服务器及缓存系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210394293.7A CN102891894B (zh) | 2012-10-17 | 2012-10-17 | 应用于服务器集群的缓存方法、缓存服务器及缓存系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102891894A true CN102891894A (zh) | 2013-01-23 |
CN102891894B CN102891894B (zh) | 2016-05-18 |
Family
ID=47535255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210394293.7A Active CN102891894B (zh) | 2012-10-17 | 2012-10-17 | 应用于服务器集群的缓存方法、缓存服务器及缓存系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102891894B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607424A (zh) * | 2013-10-24 | 2014-02-26 | 北京奇虎科技有限公司 | 一种服务器连接方法及服务器系统 |
CN105099753A (zh) * | 2015-05-28 | 2015-11-25 | 杭州华三通信技术有限公司 | 网络管理系统及其处理业务的方法 |
CN106156255A (zh) * | 2015-04-28 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种数据缓存层实现方法及系统 |
CN107707654A (zh) * | 2017-09-30 | 2018-02-16 | 中国联合网络通信集团有限公司 | 容器镜像数据的管理方法、装置及系统 |
CN110178124A (zh) * | 2017-01-13 | 2019-08-27 | Arm有限公司 | 划分tlb或缓存分配 |
CN109347925B (zh) * | 2014-12-31 | 2021-07-09 | 华为技术有限公司 | 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系统 |
CN113590665A (zh) * | 2021-08-12 | 2021-11-02 | 平安普惠企业管理有限公司 | 缓存监控管理方法、装置、系统、设备和存储介质 |
CN115098426A (zh) * | 2022-06-22 | 2022-09-23 | 深圳云豹智能有限公司 | Pcie设备管理方法、接口管理模块、pcie系统、设备和介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106230918A (zh) * | 2016-07-26 | 2016-12-14 | 努比亚技术有限公司 | 一种建立连接的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523234A (zh) * | 2011-12-29 | 2012-06-27 | 山东中创软件工程股份有限公司 | 一种应用服务器集群实现方法及系统 |
CN102638561A (zh) * | 2011-01-14 | 2012-08-15 | 微软公司 | 使用http资源的高速缓存间通信 |
-
2012
- 2012-10-17 CN CN201210394293.7A patent/CN102891894B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638561A (zh) * | 2011-01-14 | 2012-08-15 | 微软公司 | 使用http资源的高速缓存间通信 |
CN102523234A (zh) * | 2011-12-29 | 2012-06-27 | 山东中创软件工程股份有限公司 | 一种应用服务器集群实现方法及系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607424A (zh) * | 2013-10-24 | 2014-02-26 | 北京奇虎科技有限公司 | 一种服务器连接方法及服务器系统 |
CN103607424B (zh) * | 2013-10-24 | 2017-04-19 | 北京世界星辉科技有限公司 | 一种服务器连接方法及服务器系统 |
CN109347925B (zh) * | 2014-12-31 | 2021-07-09 | 华为技术有限公司 | 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系统 |
CN106156255A (zh) * | 2015-04-28 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种数据缓存层实现方法及系统 |
CN105099753A (zh) * | 2015-05-28 | 2015-11-25 | 杭州华三通信技术有限公司 | 网络管理系统及其处理业务的方法 |
CN110178124A (zh) * | 2017-01-13 | 2019-08-27 | Arm有限公司 | 划分tlb或缓存分配 |
CN110178124B (zh) * | 2017-01-13 | 2023-08-04 | Arm有限公司 | 用于划分tlb或缓存分配的方法和装置 |
CN107707654B (zh) * | 2017-09-30 | 2019-05-14 | 中国联合网络通信集团有限公司 | 容器镜像数据的管理方法、装置及系统 |
CN107707654A (zh) * | 2017-09-30 | 2018-02-16 | 中国联合网络通信集团有限公司 | 容器镜像数据的管理方法、装置及系统 |
CN113590665A (zh) * | 2021-08-12 | 2021-11-02 | 平安普惠企业管理有限公司 | 缓存监控管理方法、装置、系统、设备和存储介质 |
CN113590665B (zh) * | 2021-08-12 | 2023-11-17 | 新疆北斗同创信息科技有限公司 | 缓存监控管理方法、装置、系统、设备和存储介质 |
CN115098426A (zh) * | 2022-06-22 | 2022-09-23 | 深圳云豹智能有限公司 | Pcie设备管理方法、接口管理模块、pcie系统、设备和介质 |
CN115098426B (zh) * | 2022-06-22 | 2023-09-12 | 深圳云豹智能有限公司 | Pcie设备管理方法、接口管理模块、pcie系统、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102891894B (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102891894A (zh) | 应用于服务器集群的缓存方法、缓存服务器及缓存系统 | |
CN102523256B (zh) | 内容的管理方法的方法、装置和系统 | |
CN110213352B (zh) | 名字空间统一的分散自治存储资源聚合方法 | |
JP6044539B2 (ja) | 分散ストレージシステムおよび方法 | |
CN101535965B (zh) | 用于提高存储管理系统的可伸缩性和可移植性的技术 | |
CN101594309B (zh) | 集群系统中内存资源的管理方法、设备及网络系统 | |
US20140337484A1 (en) | Server side data cache system | |
CN101594387A (zh) | 虚拟集群部署方法和系统 | |
CN102521038A (zh) | 基于分布式文件系统的虚拟机迁移方法和装置 | |
CN106202416B (zh) | 列表数据写方法和装置、列表数据读取方法和装置 | |
CN101471845B (zh) | 数据块副本数量调整方法及元数据服务器节点 | |
CN104994156A (zh) | 一种集群的负载均衡方法及系统 | |
JPH1196102A (ja) | サーバ分散管理方法 | |
CN103207841A (zh) | 基于键值对缓存的数据读写方法及装置 | |
CN102662992A (zh) | 一种海量小文件的存储、访问方法及装置 | |
CN102263822B (zh) | 一种分布式缓存的控制方法、系统及装置 | |
CN109710586B (zh) | 一种集群节点配置文件同步方法及装置 | |
CN104202424B (zh) | 一种使用软件架构扩展缓存的方法 | |
CN111966482B (zh) | 边缘计算系统 | |
CN110109931B (zh) | 一种用于防止rac实例间数据访问发生冲突的方法及系统 | |
CN102195815A (zh) | 网络管理方法和装置 | |
TW201738781A (zh) | 資料表連接方法及裝置 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
CN105760398A (zh) | 一种日志记录系统及日志记录操作方法 | |
CN112559459B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |