分布式session服务系统及方法

文档序号:7641326阅读:130来源:国知局
专利名称:分布式session服务系统及方法
技术领域
本申请涉及互联网技术领域,尤其涉及一种针对多应用下session解决方案的分布式服务系统及方法。
背景技术
“session”在计算机领域,尤其是在web(网络)应用中,通常称为“会话”。具体到web中的session是指用户在浏览某个网站时从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述含义可以看出,session实际上可以理解成一个特定的时间概念。就功能方面来看,session在web应用中主要是被用户用来保持会话期间的一些有用信息;例如登录session用来存放用户的登录状态,而登录失败次数则对应放在存储登录失败次数的session中等等。
目前针对session的解决方案一般包括客户端存储和服务器存储两种。对于前者,客户端一般是将session放在cookie中,然而由于cookie本身的特点这种方式也会存在相应的问题首先,目前cookie每条记录的大小有所限制(不能超过4k),并且一个域名下最多只能存放20条(IE6) cookie记录,因而存放的session对象也有数量和大小的限制;其次,如果session存储在cookie中,那么用户每次使用浏览器访问网站时,便要将所有的cookie记录提交至服务器,但这些cookie对于服务器来说并不是全部都有用,所以这种提交cookie记录的行为会对用户访问网页的速度造成不必要的影响;cookie记录中存放登录密码等敏感信息时需要加密(例如MD5加密),而session对象中又有大量这种类似的敏感信息,如此一来需要进行的客户端加密和服务器解密操作不仅会影响机器性能(主要针对要承受大量访问的服务器来说)也会影响访问效率。对于客户端存储,业内还出现了 Flash存储和HTML5本地存储的解决方案,但两者对于浏览器都有特殊的要求,因此都不能实现通用化的应用。至于session的服务器存储解决方案,目前对于少应用、小访问量的情况,一般采取的做法是将session直接放在服务器内存中进行存储,但是如果访问量聚增的话,内存可能就不够用。另一方面,对于多应用、大访问量的情况,可以采用由N个服务器节点同时对客户端提供session服务的分布式解决方案,此时必须要考虑的是各节点之间的session共享问题,目前通常是采用session的同步复制来实现共享,即每个节点都需要保持一份session并且要随时将本节点的session变化同步到其他所有节点上,如此一来随着节点的增加势必造成服务器性能的显著消耗,而且容易引起广播风暴。

发明内容
本申请的实施例旨在提供一种分布式session服务系统及方法,以解决现有技术中session服务方案存在的上述问题。为实现上述目的,本申请的实施例提供了一种分布式session服务系统,用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧;该系统包括session客户端及session服务器,其中,所述session客户端设置在各个所述web应用服务器中,用于在所述用户终端发起访问请求时受所述web应用服务器的调用,在所述session服务器和/或所述用户终端中进行session记录的读写操作;所述session服务器包括配置推送装置,用于在所述web应用服务器启动服务时,将预设的session读写策略发送给所述session客户端;数据层装置,用于存储由所述session客户端进行读写操作的session记录;以及权限控制装置,用于在所述web应用服务器调用所述session客户端根据所述 session读写策略对所述数据层装置存储的session记录进行读写操作时,控制与各个所述web应用服务器对应的session客户端对特定类型的session记录的读写权限。本申请的实施例还提供一种分布式session服务方法,应用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧,且对应于所述web应用服务器设置有session客户端,以及对应于所述session客户端设置有session服务器;该方法包括以下步骤在所述web应用服务器启动服务时,由所述session服务器将预设的session读写策略发送给所述session客户端;在所述用户终端发起访问请求时,由所述web应用服务器调用所述session客户端根据所述session读写策略,在所述session服务器中进行session记录的读写操作,并且由所述session服务器控制与各个所述web应用服务器对应的session客户端对特定类型的session记录的读写权限;以及由所述session服务器存储所述session客户端进行读写操作的session记录。由上述技术方案可知,本申请实施例提供的分布式session服务系统及方法,可以在实现将session记录集中存储到服务器侧的同时,通过读写权限控制实现session记录在不同类型web应用之间的共享;另外,可以实现session读写策略从服务器到客户端的推送,使得客户端的web应用无需再关心session记录的存储配置。


图I为本申请分布式session服务系统的实施例结构框图;图2为本申请分布式session服务方法的实施例流程图。
具体实施例方式下面将详细描述本申请的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本申请。图I为本申请分布式session服务系统的实施例结构框图,如图所示,本实施例的分布式session服务系统包括session服务器11及session客户端12,且该系统布置在基于用户终端的访问而提供网络页面服务的若干个web应用服务器101 104(其上分别启用了三种web应用A C) 一侧。结合图I所示可知,在一个实施例中,web应用服务器可以是针对某个类型的web应用而分布式设置的服务器(例如,针对大业务量的web应用A提供的服务器101和102),也可以是分别针对某个类型的web应用而设置的服务器(例如,分别针对中小业务量的web应用B、C提供的服务器103、104),用户可以通过访问web应用服务器101 104来浏览网页。进一步如图I所示,session客户端12--对应地设置在各个web应用服务器
101 104中,用于在用户终端发起访问web应用服务器的请求时受对应web应用服务器的调用,在session服务器11和/或用户终端中进行session记录的读写操作,此处提及的读写操作在本说明书中如无特别说明均是指读取和/或写入操作。在一个实施例中,对于session客户端12在用户终端中进行session记录的读写操作,可以是在用户终端浏览器的cookie中进行,此时与背景技术部分所提及利用cookie存储session的解决方案类似,本技术方案的重点不在于此,因此不再赘述。结合后文的描述可知,在一个实施例中,session客户端12的工作具体包括但不限于以下几项第一,按一定频率从session服务 器11处接收session读写策略的前期推送及后续更新;第二,在根据session读写策略确定将session记录写入session服务器11时,将所在web应用服务器根据用户终端的访问而生成的session信息经过序列化、压缩等处理后,发送到session服务器11进行存储,同时也根据其所在web应用服务器的调用对session服务器11所存储的session记录进行读取;以及第三,在根据session读写策略确定将session记录作为cookie写入用户终端时,按常规方法进行处理,例如,还包括根据session读写策略进行cookie中session记录的加密。接续,在一个实施例中,上述分布式session服务系统的session服务器11进一步包括配置推送装置111、数据层装置112、权限控制装置113、数据转换装置114、对象控制装置115及服务器监控装置116,下面将对以上各装置分别进行说明。在一个实施例中,配置推送装置111用于在web应用服务器101 104启动各自的web应用A C时,将针对各web应用A C所预设的session读写策略发送给对应的session客户端12。具体来说,在一个实施例中,web应用服务器101 104在启动各自的web应用A C时,session客户端12可以被配置为自动来读取配置推送装置111所要发送的session读写策略,并且配置推送装置111与session客户端12之间还可以约定是由前者按需向后者发送session读写策略的更新,或者是由后者按一定时间间隔去读取前者所存储的session读写策略。在一个实施例中,上述的session读写策略主要用于配置哪些类型的session记录应该写到session服务器、哪些类型的session记录应该写到用户终端的cookie中、以及session记录写到cookie时要使用的加密算法等等。进一步,数据层装置112用于存储由session客户端进行读写操作的session记录。在一个实施例中,数据层装置112具体是存储session客户端12写入的根据用户终端对web应用服务器的访问而生成的session记录,以供web应用服务器101 104在用户终端的后续访问中调用session客户端12进行读取和/或写入(改写)操作。在一个实施例中,数据层装置112具体包括存储单元1121及数据读写单元1122,其中,存储单元1121单纯用于具体session记录数据的存储,在一个实施例中,其可以采用双机复制备份的方式并以一定的数据库格式对session客户端12写入的session记录进行存储;而数据读写单元1122则在存储单元1121的上层,其提供与存储单元1121的数据库格式对应的各种数据适配器,并配合session客户端12对存储单元1121存储的session记录进行读写操作。如此一来,本实施例的session服务系统在session服务器11中便实现了数据底层(即存储单元1121)与session应用的隔离,使得数据底层更易维护并且可以任意替换,数据底层可以有多种实现方式,例如数据库、BerkeleyDB、KV(Key-Value)存储等等。在一个实施例中,从性能角度考虑可以选择KV存储来提高存储单元1121的性能,因为KV存储的模式非常简单,只有key和value两个值,于是便能够通过一些较优的数据结构(例如B+Tree)来提高检索速度,并且由于KV存储所占用的空间非常小,从而可以通过一定的策略先将其放在内存中,所有这些都使得KV存储可以帮助存储单元1121获得很高的存储效率。对应于不同类型的数据底层实现方式,在一个实施例中,数据读写单元1122相应地也可以设置多种适配器来适应不同类型的数据层。接续,在上述session服务器11中,权限控制装置113是在web应用服务器101 104调用session客户端12根据session读写策略来访问数据层装置112存储的session记录时,用于控制与各个web应用服务器101 104对应的session客户端12对特定类型session记录的读写权限。在将session记录集中存储于session服务器11时,针对基于同一个用户终端对集群设置的多个web应用服务器101 104的访问而产生的session记录,势必要产生在web应用服务器101 104之间进行共享的需求。本实施例的分布式 session服务系统中,session共享的解决方案即由权限控制装置113控制不同web应用服务器101 104 (也即不同类型的web应用A C)对特定类型session记录的读写权限这一过程来实现,从而使得不同类型的web应用可以很好地维护session记录。例如,权限控制装置113可以控制登录应用(以图I中所示的web应用A为例)对记录登录状态信息的session记录具有读写权限,同时控制其他类型的应用对该session记录只能进行读取操作,这样,其他应用可以通过读取该session记录判断出用户的登录状态,但却不能改写该session记录而改变用户的登录状态。在一个实施例中,上述由权限控制装置113控制的不同web应用服务器对特定类型session记录的读写权限配置,也可以以配置文件的形式与前述session读写策略一起由配置推送装置111发送给web应用服务器101 104对应的session客户端12,由此与各web应用服务器对应的session客户端12在后续便可以根据该读写权限配置文件对特定类型的sessi0n记录进行读取/写入操作,从而与此处所述的权限控制装置113 —起配合完成后者所要实现的session共享方案。数据转换装置114用于对session客户端12经过格式转换处理后发送的session记录进行对应的格式反转处理,以便于进行session记录的存储。在一个实施例中,为了减少session客户端12与session服务器11之间的通信传输成本,session客户端12在写A session记录之前可以进行序列化、压缩等格式转换处理,相应地,session服务器11在收到session客户端12发来的数据后,便可以通过数据转换装置114对收到的数据进行反序列化、解压缩等格式反转处理,以便将session记录存储在数据层装置112中。在一个实施例中,对于session客户端12从session服务器11读取session记录的过程,可以不必像写入时那样反向地依次进行格式转换和反转换的处理,但如果session记录的数据非常大,也可以进行双向的序列化、压缩处理。另外,上述分布式session服务系统实施中的以下装置也分别在承担着各自的功能。其中,对象控制装置115用于控制数据层装置112中所存储session对象的大小及读写频率,以最大限度保证session服务器11中session记录的存储安全;举例来说,如果web应用服务器101 104通过session客户端12写入了太大的session记录,则对象控制装置115可以有权删除该对象;又例如,如果针对某个用户的session记录写入操作非常频繁,则对象控制装置115可以怀疑是机器操作,从而作出拒绝写入的处理。再者,服务器监控装置116用于监测session服务器11中各装置的运行是否正常,并在捕获到异常时向系统维护人员发出警告,从而为上层应用的稳定性提供了保证,加强了 session服务的健壮性。本申请的技术方案还提出一种分布式session服务方法,应用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧,且一一对应于web应用服务器设置有session客户端,以及对应于所有session客户端设置有session服务器,图2为该方法的实施例流程图,如图所示,本实施例的分布式session服务方法,包括以下步骤S201 S205 S201、在web应用服务器启动服务时,由session服务器将预设的session读写策略发送给session客户端;
S202、在用户终端发起访问请求时,由web应用服务器调用session客户端进行session记录的读写操作;并且,session客户端根据session服务器推送的session读写策略来确定是在用户终端还是在session服务器中进行session记录的读写操作,相应地跳转步骤S203和/或S204。S203、在用户终端中进行session记录的读写操作;如以上分布式session服务系统实施例中所述的,session客户端在用户终端中读写session记录的操作具体可以是在cookie中进行,其方案在背景技术部分已有提及,此处不再赘述。S204、在session服务器中进行session记录的读写操作;在一个实施例中,session服务器可以控制与各个web应用服务器对应的session客户端对特定类型的session记录的读写权限,以此来实现在多个web应用A C之间共享session记录的目的。具体而言,上述的读写权限是用于限定web应用服务器对特定类型的session能够进行读取和写入操作,或只能进行读取操作。另外,上述步骤S202中提及可以跳转到步骤S203和/或S204,也即session客户端可以在用户终端和session服务器中选择其一来写入session记录,也可以同时在用户终端和session服务器中写入session记录。在一个实施例中,对于例如网络支付密码等非常重要的信息,可以考虑加密且仅存储在用户终端的cookie中。在另一个实施例中,对于web应用服务在服务器之间进行迁移的过程,可以设置一个兼容状态,在此期间session记录可以既写到用户终端又写到session服务器中;而在迁移完毕后,就可以去掉写入到用户终端的选择而仅写入到session服务器中。可以理解的是,以上所有这些操作,都可以通过由session服务器向session客户端下发、更新session读写策略来灵活便利地实现。S205、由session服务器存储session客户端进行读写操作的session记录;在一个实施例中,在步骤S204中session客户端于session服务器中进行session记录的写入操作之前,可以包括由session客户端对session记录进行序列化、压缩等格式转换处理的步骤;对应的,此处在步骤S205中session服务器存储session客户端所写入session记录的步骤之前,便可以对session客户端发来的数据进行反序列化、解压缩等格式反转处理的步骤,以便进行session记录的存储。在一个实施例中,该步骤S205中还包括由session服务器控制所存储session记录的大小及读写频率的步骤,以及监测session服务器中各装置是否运行正常并在捕获到异常时向维护人员发出警告的步骤。以下将结合前述分布式session服务系统的实施例对本申请分布式session服务方法加以进一步描述。在一个实施例中,基于分布式session服务系统的session服务方法流程如下(I).首先,web应用服务器101 104启动各自的web应用服务A C时,通过session客户端12读取session服务器11中配置的session读写策略,具体可以由配置推送装置111将预设的session读写策略反馈给web应用服务器101 104对应的session客户端12 ;如之前系统实施例所述,在一个实施例中,配置推送装置111同时还可以将预设的不同web应用服务器(也即各不同类型的web应用A C)对特定类型session的读写权限配置随session读写策略一起发送至session客户端12。结合参考图I所示,此处可以设置web应用A (对应web应用服务器101 102)对当前session记录有读取和写入的权限,而web应用B、C (分别对应web应用服务器103、104)对当前session记录仅有读取权限。(2).接续,在用户终端通过访问web应用服务器101(即web应用服务A)来浏览网页的过程中产生某个类型的session记录时,先由session客户端12根据接收到的session读写策略来确定该session记录是写入用户终端的cookie中还是写入session服务器11中;i).如果是写入用户终端的cookie, session客户端12便可以继续根据session读写策略中的加密方式将session记录加密后写入用户终端浏览器的cookie中,其方式已 在背景技术部分有所提及,此处不再赘述;ii).如果是写入session服务器11中,则session客户端12开始向session服务器11发起写入session记录的操作请求。(3).之后,session服务器11在收到session客户端12的session写入请求时,先由权限控制装置113判断该web应用服务A是否有对该session记录进行写入操作的权限,再由对象控制装置115判断要写入的session记录大小是否符合预设的限制(同时也可以判断写入的频率是否符合预设的限制),如果前述两个判断都能顺利通过,则可以在数据转换装置114对session客户端12传送过来的所需要写入的数据进行数据转换之后,由数据读写单元1122写入到存储单元1121中。(4).最后,可以理解,在session服务器11的数据层装置112中写入session记录后,web应用服务器101可以类似按照前述流程对相应session记录进行后续改写,而所有web应用服务器101 104都可以依照类似流程按需对该session记录进行读取。综上所述,本申请的分布式session服务系统及方法实施例具有以下特点(I) session读写策略的自动推送由session客户端和session服务器的配置推送装置协作完成session读写策略的自动推送,web应用服务器不需要对session方案进行具体配置,而是由session服务器统一进行session记录的配置管理;对于web应用服务器101 104所启用的web应用A C来说,不需要关心session记录具体存放的位置,相应地,各web应用A C的业务代码编写者也不需要得知session记录的存放位置,只需要按照固定格式的语句对session记录进行读写操作,例如,session记录的写入语句可以是session. setAttribute ( “key”,”value”),session 记录的读取语句可以是 session.getAttribute ( “key”);并且,session读写策略在session服务器中配置好后,可以由配置推送装置统一推送到session客户端所在的所有web应用服务器中去,不需要针对每一个web应用服务器进行session配置的替换操作,从而节省了人力,降低了系统风险。(2). session的集中存储session可以统一存放到session服务器,使得session更加安全;并且由于设置了专用的数据层装置,因此可以存储更大、内容更多的session ;另外,由于session不是全部存放在用户终端的cookie中,如此一来,用户通过客户端访问服务器时,不必带上所有cookie提交到服务器,因此能够减小网络流量消耗,提升用户访问页面的速度。(3). session的多应用共享通过权限控制装置控制不同类型的web应用对特定 类型session的读写权限,使得多个web应用之间可以很好地共享session。(4).数据底层读写与应用隔离数据层装置由单纯存储数据的存储单元及负责数据读写操作的数据读写单元分开配合实现,使得数据底层更易维护,实现方式也可以更加灵活。(5). session服务层的健壮性保护通过对象控制装置及服务器监控装置的设置,能够对存在风险的session读写操作进行预防,同时也能随时捕捉系统的任何异常,从而也为上层web应用的稳定性提供了保证。虽然已参照几个典型实施例描述了本申请,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本申请能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
权利要求
1.一种分布式session服务系统,用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧;该系统包括session客户端及session服务器,其中, 所述session客户端设置在各个所述web应用服务器中,用于在所述用户终端发起访问请求时受所述web应用服务器的调用,在所述session服务器和/或所述用户终端中进行session记录的读写操作; 所述session服务器包括 配置推送装置,用于在所述web应用服务器启动服务时,将预设的session读写策略发送给所述session客户端; 数据层装置,用于存储由所述session客户端进行读写操作的session记录;以及 权限控制装置,用于在所述web应用服务器调用所述session客户端对所述数据层装置存储的session记录进行读写操作时,控制与各个所述web应用服务器对应的session客户端对特定类型的session记录的读写权限。
2.如权利要求I所述的分布式session服务系统,其中所述session服务器还包括数据转换装置,用于对所述session客户端经过格式转换处理后发送的session记录进行对应的格式反转处理,以便于进行所述session记录的存储。
3.如权利要求I所述的分布式session服务系统,其中所述session服务器还包括对象控制装置,用于控制所述数据层装置中所存储session记录的大小及读写频率。
4.如权利要求I所述的分布式session服务系统,其中所述session服务器还包括服务器监控装置,用于监测所述session服务器中各装置的运行是否正常,并在捕获到异常时发出警告。
5.如权利要求I所述的分布式session服务系统,其中所述数据层装置包括存储单元及数据读写单元; 所述存储单元采用双机复制备份的方式以一种或多种数据库格式对所述session记录进行存储; 所述数据读写单元提供与所述存储单元的数据库格式对应的数据适配器,并配合所述session客户端对所述存储单元存储的session记录进行读写操作。
6.如权利要求1-5任一项所述的分布式session服务系统,其中, 所述session读写策略用于向所述session客户端通知以下信息要存储在所述session服务器的session类型,以及要存储在所述用户终端的session类型及其加密算法; 所述读写权限用于限定所述web应用服务器对特定类型的session记录能够进行读取和写入操作,或只能进行读取操作。
7.一种分布式session服务方法,应用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧,且对应于所述web应用服务器设置有session客户端,以及对应于所述session客户端设置有session服务器;该方法包括以下步骤 在所述web应用服务器启动服务时,由所述session服务器将预设的session读写策略发送给所述session客户端; 在所述用户终端发起访问请求时,由所述web应用服务器调用所述session客户端根据所述session读写策略,在所述session服务器中进行session记录的读写操作,并且由所述session服务器控制与各个所述web应用服务器对应的session客户端对特定类型的session记录的读写权限;以及 由所述session服务器存储所述session客户端进行读写操作的session记录。
8.如权利要求7所述的分布式session服务方法,在所述session客户端于所述session服务器中进行session记录的写入操作的步骤之前,还包括由所述session客户端对所述session记录进行格式转换处理的步骤;对应的,在所述session服务器存储所述session客户端写入的session记录的步骤之前,还包括由所述session服务器对经过所述session客户端格式转换处理后发送的session记录进行格式反转处理的步骤。
9.如权利要求7所述的分布式session服务方法,在所述session服务器存储所述session客户端写入的session记录的步骤中,还包括由所述session服务器控制所存储session记录的大小及读写频率的步骤。
10.如权利要求7-9任一项所述的分布式session服务方法,其中, 所述session读写策略用于向所述session客户端通知以下信息要存储在所述session服务器的session类型,以及要存储在所述用户终端的session类型及其加密算法; 所述读写权限用于限定所述web应用服务器对特定类型的session记录能够进行读取和写入操作,或只能进行读取操作。
全文摘要
本申请公开了一种分布式session服务方法,应用在基于用户终端的访问而提供网络页面服务的若干个web应用服务器一侧,且对应于web应用服务器设有session客户端,以及对应于session客户端设有session服务器;该方法包括以下步骤在web应用服务器启动服务时,由session服务器将预设的session读写策略发送给session客户端;在用户终端发起访问请求时,由web应用服务器调用session客户端根据session读写策略确定在用户终端和/或session服务器中进行session记录的读写操作;以及由session服务器存储session客户端进行读写操作的session记录。本申请相应还公开了一种分布式session服务系统。本申请实施例提供的分布式session服务系统及方法,可以在实现将session集中存储到服务器的同时,通过session的读写权限控制实现在不同类型web应用之间的session共享。
文档编号H04L29/08GK102752323SQ20111009624
公开日2012年10月24日 申请日期2011年4月18日 优先权日2011年4月18日
发明者钱超 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1