一种双数据中心应用部署方法与流程

文档序号:18027403发布日期:2019-06-28 22:17阅读:332来源:国知局
一种双数据中心应用部署方法与流程

本发明公开一种双数据中心应用部署方法,涉及云计算技术领域。



背景技术:

双活数据中心,一般是出于灾备(disasterrecovery)的目的,建设2个(或多个)数据中心。一个是主数据中心用于承担用户的业务,一个是备份数据中心用于备份主数据中心的数据、配置、业务等。

session共享方式:

基于nfs的session共享。nfs是netfilesystem的简称,最早由sun公司为解决unix网络主机间的目录共享而研发。这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的本地session目录即可,缺点是nfs依托于复杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件,会由于共享目录服务器的io-wait过高,最终拖累前端web应用程序的执行效率。

基于数据库的session共享。首选当然是大名鼎鼎的mysql数据库,并且建议使用内存表heap,提高session操作的读写效率。这个方案的实用性比较强,使用普遍,它的缺点在于session的并发读写能力取决于mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除session记录,当并发过高时容易出现表锁。

基于cookie的session共享。在大型网站中还是比较普遍被使用。原理是将全站用户的session信息加密、序列化后以cookie的方式,统一种植在根域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有cookie内容的特性,从而实现用户的cookie化session在多服务间的共享访问。这个方案的优点无需额外的服务器资源;缺点是由于受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时cookie化的session内容需要进行安全加解密(如:采用des、rsa等进行明文加解密;再由md5、sha-1等算法进行防伪认证),另外占用一定的带宽资源,因为浏览器会在请求当前域名下任何资源时将本地cookie附加在http头中传递到服务器。

本发明提供一种双数据中心应用部署方法,涉及的主要业务应用系统均在同城两个中心双活建设,两个中心实现双活,为同样的业务程序在两个中心相同部署,在用户的相同访问请求下获取同样的业务服务。两个数据中心拥有相同的、无差别的业务程序包,且在每个中心内可以由多个节点负载部署;应用服务器具有应用一致性以及会话信息同步,采用nas文件共享、应用集群/session集中方式实现。



技术实现要素:

本发明针对现有技术的问题,提供一种双数据中心应用部署方法,旨在为了用户的业务在两个数据中心部署相同的业务系统,并且在不同的数据中心同时支持业务访问,当一个数据中心由于某种原因宕机,不影响业务使用,还能继续提供业务访问。

本发明提出的具体方案是:

一种双数据中心应用部署方法,对两个数据中心部署相同的业务系统,两个业务系统利用memcached对session进行集中管理,且两个业务系统的应用服务器集群通过session共享,实现服务器节点之间会话的统一,

用户的业务请求在两个数据中心的业务系统获取同样的业务服务,并在应用服务器集群中由多个应用服务器节点负载部署进行处理,通过session共享及nas文件共享实现业务的处理。

所述的方法中应用服务器集群的应用服务器节点进行复制,应用服务器集群的各个应用服务器节点是应用服务器集群中完全相同的副本,将所述应用服务器集群部署到两个数据中心。

所述的方法中在数据中心通过存储虚拟化设备,创建分布式镜像卷作为应用程序文件分区,并通过nas网关提供的nas文件共享将文件共享给应用服务器节点。

所述的方法中memcached通过hash表存储session的数据,把不同业务服务的session数据进行集中管理。

所述的方法中应用服务器节点接收到用户的业务请求时,进行拦截过滤,同时将session重定位到memcached,并进行定时的更新操作。

所述的方法中应用服务器节点接收到用户的业务请求,拦截到http请求,判断http请求中是否存在指定名称的cookie对象,

若存在则获取cookie对象中sessionid值,将sessionid值以及http请求、http响应对象传入过滤方法进行过滤操作,

若不存在则cookie对象则新建带有sessionid键值的cookie对象操作,并将此cookie对象传入http响应,再传入过滤方法进行过滤操作。

所述的方法中应用服务器节点的应用程序调用session时,判断应用服务器节点中是否存在session对象,

如果不存在则前往memcached中查找,若memcached中存在session对象判断是否更新memcached中的session对象,若memcached中不存在session对象,新建session对象,并且将此session对象,保存进memcahced中,

如果存在则判断session对象是否更新。

所述的方法中应用程序每次获取session时,比较应用系统当前时间与session前次更新时间的时间差,如果大于配置的更新时间下限,就更新的session对象。

本发明的有益之处是:

本发明提供一种双数据中心应用部署方法,

同样的业务程序在两个中心相同部署,在用户的相同访问请求下获取同样的业务服务,并且两个数据中心拥有相同的、无差别的业务程序包,且在每个数据中心内可以由多个节点负载部署;应用服务器应用一致性以及会话信息同步采用nas文件共享、应用集群/session集中方式实现。使用户的业务在两个数据中心部署相同的业务系统,并且在不同的数据中心同时支持业务访问,当一个数据中心由于某种原因宕机是,不影响业务使用,还能继续提供业务访问。

附图说明

图1是利用本发明方法部署的数据中心布局示意图;

图2是应用服务器集群结构示意图;

图3是memcache与session的布局示意图;

图4应用服务器端拦截http请求流程示意图;

图5应用服务器存取session的流程示意图。

具体实施方式

本发明提供一种双数据中心应用部署方法,对两个数据中心部署相同的业务系统,两个业务系统利用memcached对session进行集中管理,且两个业务系统的应用服务器集群通过session共享,实现服务器节点之间会话的统一,

用户的业务请求在两个数据中心的业务系统获取同样的业务服务,并在应用服务器集群中由多个应用服务器节点负载部署进行处理,通过session共享及nas文件共享实现业务的处理。

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

利用本发明方法在同城建立两个数据中心,一为总局生产中心,一为同城生产中心,参考图1

对两个数据中心部署相同的业务系统,业务系统中的应用服务器集群由应用服务器组成,每个服务器上部署了同样的应用程序,通过集群可以实现可扩展性,应用服务器集群提供水平集群和垂直集群两种形式,垂直集群是指同一机器上部署多个服务器,充分利用硬件资源,而水平集群利用多台机器资源,每台机器部署相同的应用,可根据情况选择两种方式进行部署,

应用服务器集群将整个应用服务器,包括ejb容器、ejb、web容器、web模块和servlet作为一个集群进行复制,各个集群成员是该集群中完全相同的副本,集群可以位于相同或不同的数据中心。数据中心所有的集群成员都部署在虚拟机中,可以利用虚拟机集群系统提供的drs、ha、dcm等功能提供绿色、可靠的应用部署环境,

应用服务器集群的应用服务器通话应用程序进行业务处理,应用程序提供了允许用户上传在服务器端更改或创建的文件的用户界面,当应用程序运行于应用服务器集群时,需要在集群成员之间同步配置文件、二进制文件和资源文件。本发明使用共享的文件系统及通过nas网关提供网络文件服务,。在数据中心,通过存储虚拟化设备,创建分布式镜像卷作为应用程序文件分区,并通过nas网关提供的网络文件共享功能,如nfs、cis等),将文件系统共享给应用服务器,所有经过更改或更新的文件都位于同一个共享文件系统;

同时两个业务系统利用memcached对session进行集中管理,且两个业务系统的应用服务器集群通过session共享,实现服务器节点之间会话的统一,本发明采用memcached把session全部存储在后端的缓存服务器中,参考图3,

memcached通过在内存里维护一个统一的巨大的hash表,memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,利用memcached把多个业务服务的session集中管理,修改应用服务器的session存储机制,使之能够把session序列化集中存放到memcached中,实现session的分布式共享,

通过继承servlet提供的httpservletrequestwrapper装饰类,实现对httpservletrequest的装饰,从而能够重写原http请求的getsession()方法,使此方法返回的session对象为自实现的session,而非web容器所提供的session对象,可以对session的存取做相应的控制,可以将session对象序列化存入后台的memcached服务器,以及定期的更新,清除操作;并且每一台应用服务器都设定对http请求的拦截过滤,应用服务器管理session的同时将session重定位到后端的memcached高速缓存服务器,并且进行定时的更新操作;memcached服务器同样使用集群的模式,减小memcached服务器压力的同时,保证在单个服务器出现故障的情况下大部分数据的安全性;

其中应用服务器节点接收到用户的业务请求,拦截到http请求,判断http请求中是否存在指定名称的cookie对象,cookie对象的名称可自行规定,

若存在则获取cookie对象中sessionid值,将sessionid值以及http请求、http响应对象传入过滤方法进行过滤操作,

若不存在则cookie对象则用指定名称与值,值一般为uuid,作为sessionid,新建带有sessionid键值的cookie对象操作,并将此cookie对象传入http响应,再传入过滤方法进行过滤操作,参考图4;

而应用服务器节点的应用程序调用session时,判断应用服务器节点中是否存在session对象,

如果不存在则前往memcached中查找,若memcached中存在session对象判断是否更新memcached中的session对象,若memcached中不存在session对象,新建session对象,并且将此session对象,保存进memcahced中,

如果存在则判断session对象是否更新,

当应用程序每次获取session时,比较应用系统当前时间与session前次更新时间的时间差,如果大于配置的更新时间下限,更新的session对象。

本发明中更新memcached中的session对象,或者将session对象存入memcached都可以设置一个session对象的自动过期时间(,与应用系统的session过期时间一致,memcached服务器就可以管理到所获得的session对象的生命周期,过期之后,客户端将无法调用memcached中的session对象。

本发明中memcache由于是一款基于libevent多路异步i/o技术的内存共享系统,简单的key+value数据存储模式使得代码逻辑小巧高效,因此在并发处理能力上占据了绝对优势,memcache的内存hash表所特有的expires数据过期淘汰机制,正好和session的过期机制不谋而合,降低了过期session数据删除的代码复杂度。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1