分布式心跳服务器架构及其进程处理方法

文档序号:7929465阅读:324来源:国知局
专利名称:分布式心跳服务器架构及其进程处理方法
技术领域
本发明涉及互联网技术,具体涉及一种分布式心跳服务器架构及其进程处理方法。
背景技术
—类集中式的P2P文件共享系统,例如北京大学的Maze系统,主要包含服务器、后 台和客户端三个部分,其中服务器维护系统中所有用户的信息,客户端为系统和用户的人 机交互界面,后台则是负责客户端和服务器之间的交互。Maze系统的服务器包括用户服务 器、心跳服务器、索引服务器及种子服务器,心跳服务器主要负责用户登录、用户信息即时 更新及用户信息即时搜索等功能,现有的心跳服务进程只是简单的消息处理,其缺点是当 用户数量增多时,心跳服务器负载越来越重,对用户请求的响应不及时,导致用户体验差, 并且心跳服务器只能为教育网内的用户服务,严重制约用户群的扩展,无法满足Maze服务 对外推广的需求。

发明内容
本发明的主要目的就是解决现有技术中的问题,提供一种分布式心跳服务器架构 及其进程处理方法,它提高心跳服务器负载能力,减少服务响应时间,提升用户体验,满足 P2P文件共享系统(例如Maze系统)用户群扩展的需求。
为实现上述目的,本发明采用以下技术方案 —种分布式心跳服务器架构,其特征在于,包括复数个相互连接且分布在不同网
络区域的服务器单元,所述服务器单元包括服务器前端、消息协议层、消息对象管理器、消
息处理中心以及路由器,所述服务器前端接收用户消息,所述消息协议层将用户消息封装
成消息对象并送至所述消息对象管理器,所述消息处理中心对所述消息对象管理器中的消
息对象进行处理,并通过所述路由器与其它服务器单元进行通信,在需要多个服务器单元
协同处理时将本单元与其它相关服务器单元关于所述消息对象的处理结果结合处理,所得
结果通过所述消息协议层和服务器前端返回给用户。
优选地 所述消息处理中心包括映射分解模块和整合化简模块,所述映射分解模块将需要
多台服务器单元协同处理的消息对象进行分解,并将分解所得的不同类别的子消息分别交
由相应服务器单元进行与其类别相对应的处理,所述整合化简模块将各服务器单元对不同
类别的子消息的处理结果整合到一起,以得到关于所述消息对象的处理结果。 所述服务器单元采用数组存储用户信息,并为用户配置会话ID,所述会话ID含有
相应用户的用户信息在所述数组中的存储位置信息。 所述服务器单元采用哈希图存储索引信息,所述索引信息将用户ID映射为其所 对应的用户信息在所述数组中的存储位置信息。 —种用于分布式心跳服务器架构的心跳服务进程处理方法,所述分布式心跳服务器架构包括复数个相互连接且分布在不同网络区域的服务器单元,其特征在于,所述方法 包括以下步骤 Al.服务器单元接收用户消息并将所述用户消息封装成消息对象; Bl.服务器单元对所述消息对象进行处理,并与其它服务器单元进行通信,在需要
多个服务器单元协同处理时将本单元与其它相关服务器单元关于所述消息对象的处理结
果结合处理; CI.将所得的最终结果返回给用户。
优选地 所述步骤B1中,接收用户消息的服务器单元执行下子步骤 Bll.判断所述消息对象是否需要多个服务器单元协同处理,如果不需要则进入步
骤B12,如果需要则转步骤B13 ; B12.直接处理所述消息对象; B13.将所得的需要多台服务器单元协同处理的消息对象根据消息目的方所在服 务器进行分解,得到的不同类别的子消息分别送至相应的服务器单元以进行与其类别相应 的处理; B14.获取不同服务器单元关于子消息的处理结果并进行化简整合。 所述服务器单元采用数组存储用户信息,并为用户配置会话ID,所述会话ID含有
相应用户的用户信息在所述数组中的存储位置信息。 所述服务器单元采用哈希图存储索引信息,所述索引信息将用户ID映射为其所
对应的用户信息在所述数组中的存储位置信息。 本发明有益的技术效果是 本发明的分布式心跳服务器架构包括复数个相互连接且分布在不同网络区域的 服务器单元,其包括服务器前端、消息协议层、消息对象管理器、消息处理中心、路由器五个 部分,通过与之相应的心跳服务进程实现用户请求的统一接收、处理与回复,加快了消息响 应速度,提高了用户体验,通过将服务器单元部署在不同的网络内,实现心跳服务器架构的 分布式部署,各服务器单元对本网络内的用户提供服务,服务器单元之间相互通信以实现 不同网络内用户的交互,从而实现了跨网功能。采用本发明的服务器架构及进程,能提高心 跳服务器负载能力,减少服务响应时间,提升用户体验,满足用户越来越多的现实需求,从 而推广P2P文件共享系统的服务范围,能使更多的用户享受P2P文件共享系统带来的方便。


图1为本发明一种实施例心跳服务器的架构示意图;
图2为本发明一种实施例心跳服务进程处理方法流程图;
图3为本发明一种实施例中的消息对象处理流程图
本发明的特征及优点将通过实施例结合附图进行详细说明。
具体实施例方式
—种实施例的应用是在北京大学研发的Maze系统中采用分布式心跳服务器架 构,请参考图l,该心跳服务器架构包括多个服务器单元(仅示出其中一个),各服务器单元相互连接且分布于不同网络(例如中国国内的教育网、公网等)。服务器单元包括服务器前 端、消息协议层、消息对象管理器、消息处理中心以及路由器,其中,服务器前端提供服务器 单元与用户交互的接口 ,协议层负责将收到的消息按Maze通信协议封装成消息对象,消息 对象管理器用于消息对象的暂存与管理,消息处理中心负责对消息对象进行处理,并在需 要时通过路由器与其它服务器单元的消息处理中心进行通信,发出处理请求和接收应答, 或者接收处理请求并发送应答,实现对消息对象的多服务器协同处理。优选地,消息处理中 心包括映射分解模块和整合化简模块。对消息对象进行处理时,先按照规定的消息类型对 消息对象进行分类,对属于需要多台服务器单元协同处理的消息对象,由映射分解模块根 据消息目的方所在服务器进行分解,然后将分解所得的不同类别的子消息分别交由不同服 务器单元进行该类子消息相对应的处理,整合化简模块则根据各服务器单元的应答,将不 同类别的子消息的处理结果整合到一起,得到关于该消息对象的处理结果。
请参考图2和图3,分布式心跳服务业务流程包括以下具体的步骤
1)服务器前端接收来自用户的消息。 2)协议层将消息封装成消息对象并将消息对象交由消息对象管理器管理。 3)消息处理中心从消息对象管理器中取得消息对象进行处理。 当消息对象需要协同处理时,路由器接收来自消息处理中心的请求消息或应答消
息发送给其它服务器单元,并从其它的服务器单元接收处理结果或请求消息发送给消息处
理中心处理。路由器维护整个Maze服务器的拓扑结构,保证服务器单元之间的连通,同时
它动态的更新拓扑使得Maze服务器拥有较高的容错能力。 4)处理完毕后把消息处理结果即应答消息对象放入消息对象管理器准备发送给 用户。 5)服务器前端将消息对象管理器中发送给用户的消息反馈给用户。(或者先将消 息整合了再发送给用户)。 以上步骤3)中,对于部分需要多台服务器协同处理的消息对象,优选采用映射分 解_整合化简(即Map-Reduce)技术进行处理。请参考图3,消息处理中心先对消息对象 进行判断,对需要协同处理的消息按照规定的消息类型进行M即,分解后得到的不同类别 的子消息,然后将需要转发出去的子消息交给路由器,将需要在本机处理的子消息由消息 处理中心继续处理,并将结果存入消息对象管理器一个特殊的地方等待同一个消息的其 他机器处理结果,当收到所有处理结果时再把所有处理结果Reduce,即整合后再一并返回 给用户。对于特殊情况可将消息的部分处理结果直接返回给用户。从抽象意义上而言, M即-Reduce是一种分治手段,具体在心跳服务进程中,M即-Reduce是一种消息分类处理的 方式,Map是分的过程,其将一个问题分成多个子问题,对各个子问题按照不同类别的消息 分由多个服务器单元进行不同的处理,得到多个子解,而Reduce是Map的逆操作,是合的过 程,即对各子解进行整合,其将各服务器单元的返回消息整合到一起后得到原问题的解。采 用M即-Reduce,利用其分发、处理、整合的思想,使得心跳服务进程实现起来较为简单,理解 起来也较为直观。 以上步骤3)中,更具体地,路由器在接收到来自其它服务器单元的路由消息时, 将该路由消息翻译成普通系统消息交由消息处理中心处理,消息处理中心处理完成后又将 应答消息包装成路由消息通过路由器返回给其它服务器。如果路由器从外部收到的消息是
6一个应答消息,那么则将该消息翻译成普通消息,根据消息类型进行同步Reduce后,最终 将消息添加到消息对象管理器中的发送消息队列或者其消息对应的基消息所拥有的消息 队列。 优选采用面向对象编程语言中的多态来实现心跳服务进程中消息的统一处理。图 1中,MazeMsg表示Maze中所有消息的基类,其他的消息都是该类的派生。RoutingMsgBase 表示Maze中的路由基础消息,负责等待需要整合的路由消息,该消息中的序列号(sn)记录 需要整合的消息的序列号,以便子消息能找到等待的路由基础消息。MazeRoutingMsg表示 路由消息,用来包装在服务器之间转发的待处理及已处理完成的消息。 该心跳服务器架构即进程应用在Maze系统中,由于各服务器单元设计服务器前 端、消息协议层、消息对象管理器、消息处理中心以及路由器五个部分,从而实现用户请求 集中统一的接收、处理与回复,加快了消息响应速度,提高了用户体验;在此基础上构成分 布式部署,把服务器分布在不同的网络内,各服务器对本网络内的用户提供服务,服务器之 间相互通信以满足不同网络内用户的交互,从而实现了跨网功能,解决了因用户访问量过 多导致的服务器服务瓶颈,使Maze系统的心跳服务器能够及时地响应系统用户请求。
在一优选的实施例中,服务器单元采用数组存储用户信息,并为系统用户配置会 话ID(Session ID) , Session ID含有相应用户的用户信息在所述数组中的存储位置信息。 此优选的方案在Maze系统中实现了对用户独特的双账号管理模型,其中传统账号与用户 本身相关联,而Session ID则只是用户在Maze系统中的标识,引入Session ID后对原有
用户信息的存储方式进行了改进,提高了用户请求的响应效率。原有用户信息是用哈希图 (hash m即)存储的,由于hash m即可以根据关键字取值,在心跳中用该种方式存放用户 描述信息,便可根据用户的ID来获取用户的详细信息,但是,由于不允许多个线程同时从 hash map中取用户信息,这就导致一个线程工作多个线程等待的状态。在心跳服务进程中 改用数组存储用户信息,这样各线程便可根据用户信息在数组中的存储位置直接获取,而 不用等待别的线程对整个数组操作完成后进行,而引入Session ID后,由于Session ID中 含有用户在数组中的存储位置,这样便可快速获取用户信息,完成对用户消息的快速处理, 从而提高了对用户请求的响应效率。 在另一实施例中,服务器单元在采用数组存储用户信息的同时,还采用hash map 存储索引信息,该索引信息用于将用户ID映射为其所对应的用户信息在数组中的存储位 置信息。此实施例中,哈希图不存储用户信息,而是做索引用,将用户ID(即MazeID)映射 为其在数组中的位置信息,从而实现对未为系统用户配置会话ID的老版本的兼容。
在又一实施例中,服务器单元采用hash m即存储用户信息,而hash m即的同步访 问采用读写锁进行控制。除了以数组结构取代hash map并采用Session ID来加快同步访 问的方法外,对于服务响应的要求还可通过改进用户信息存储结构的加锁方式来实现。现 有的方案是使用互斥锁来控制对用户信息的同步访问,而互斥锁是一种保护访问唯一的方 式,取保护信息加互斥锁后,获取该锁的使用者在释放该锁之前,不允许其他使用者对保护 区访问。随着用户数量的增多,用来存放用户信息的hash map越来越大,每次访问的时间 也相应增加,而另一方面,用户数量越多,对hash map的访问也越频繁,这样就出现了响应 时间无法让用户满意的情况。通过改变加锁方式,不再使用互斥锁来控制同步访问,而是使 用一种新的锁,比如读写锁来实现。相比较而言,互斥锁需要各线程串行访问hash m即,使得消息的处理阻塞在别的消息的处理上,影响了处理效率,影响了服务器对用户请求的响 应,而读写锁是一种允许多个用户同时对保护区进行读写的方式,使用该锁后,多个线程便
可同时获取hash map中的用户信息,完成多个消息的同时处理,加快了对用户的响应。
同时,心跳服务进程的新设计、分布式服务的实现及更优选的SessionID的引入, 还将带来的用户信息数组的存放方式、新的协议标准的变化。分布式服务的实现是在服务 器进程的重新设计基础上完成的,而服务器的新设计除了这五部分架构上设计外,还包含 对消息协议的修改。新架构下,用户与心跳服务器间的通信不再采用xml格式的协议,而是 采用了一种二进制协议,即一种按字节流传送消息的方式,协议修改后,需要同时兼容原来 的消息格式,这样就需要消息解析,把旧版本的xml格式的消息与二进制协议下的消息转 换成同一种格式,心跳中采用的是消息对象,把消息中的信息转换成消息对象中的属性,以 完成同一,方便用户信息的获取。引入Session ID后,消息中需要包含用户的Session ID, 这样就要在原来的消息协议中增加消息发送者及接受者的Session ID。
本发明在服务器原有功能的基础上,扩展了对用户群的服务,服务器架构的重新 设计、M即-Reduce方案、用户信息存放方式的改进和Session ID的引入,极大地提高了服 务器的性能,满足了用户越来越多的现实需求。 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定 本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在 不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的 保护范围。
权利要求
一种分布式心跳服务器架构,其特征在于,包括复数个相互连接且分布在不同网络区域的服务器单元,所述服务器单元包括服务器前端、消息协议层、消息对象管理器、消息处理中心以及路由器,所述服务器前端接收用户消息,所述消息协议层将用户消息封装成消息对象并送至所述消息对象管理器,所述消息处理中心对所述消息对象管理器中的消息对象进行处理,并通过所述路由器与其它服务器单元进行通信,在需要多个服务器单元协同处理时将本单元与其它相关服务器单元关于所述消息对象的处理结果结合处理,所得结果通过所述消息协议层和服务器前端返回给用户。
2. 如权利要求1所述的分布式心跳服务器架构,其特征在于,所述消息处理中心包括映射分解模块和整合化简模块,所述映射分解模块将需要多台服务器单元协同处理的消息对象进行分解,并将分解所得的不同类别的子消息分别交由相应服务器单元进行与其类别相对应的处理,所述整合化简模块将各服务器单元对不同类别的子消息的处理结果整合到一起,以得到关于所述消息对象的处理结果。
3. 如权利要求1或2所述的分布式心跳服务器架构,其特征在于,所述服务器单元采用数组存储用户信息,并为用户配置会话ID,所述会话ID含有相应用户的用户信息在所述数组中的存储位置信息。
4. 如权利要求3所述的分布式心跳服务器架构,其特征在于,所述服务器单元采用哈希图存储索引信息,所述索引信息将用户ID映射为其所对应的用户信息在所述数组中的存储位置信息。
5. —种用于分布式心跳服务器架构的心跳服务进程处理方法,所述分布式心跳服务器架构包括复数个相互连接且分布在不同网络区域的服务器单元,其特征在于,所述方法包括以下步骤Al.服务器单元接收用户消息并将所述用户消息封装成消息对象;Bl.服务器单元对所述消息对象进行处理,并与其它服务器单元进行通信,在需要多个服务器单元协同处理时将本单元与其它相关服务器单元关于所述消息对象的处理结果结合处理;Cl.将所得的最终结果返回给用户。
6. 如权利要求5所述的分布式心跳服务进程处理方法,其特征在于,所述步骤B1中,接收用户消息的服务器单元执行下子步骤Bll.判断所述消息对象是否需要多个服务器单元协同处理,如果不需要则进入步骤B12,如果需要则转步骤B13 ;B12.直接处理所述消息对象;B13.将所得的需要多台服务器单元协同处理的消息对象根据消息目的方所在服务器进行分解,得到的不同类别的子消息分别送至相应的服务器单元以进行与其类别相对应的处理;B14.获取各服务器单元关于子消息的处理结果并进行化简整合。
7. 如权利要求5或6所述的分布式心跳服务进程处理方法,其特征在于,所述服务器单元采用数组存储用户信息,并为用户配置会话ID,所述会话ID含有相应用户的用户信息在所述数组中的存储位置信息。
8. 如权利要求7所述的分布式心跳服务进程处理方法,其特征在于,所述服务器单元采用哈希图存储索引信息,所述索引信息将用户ID映射为其所对应的用户信息在所述数组中的存储位置信息。
全文摘要
本发明提供了一种分布式心跳服务器架构,包括复数个相互连接且分布在不同网络区域的服务器单元,其包括服务器前端、消息协议层、消息对象管理器、消息处理中心和路由器,服务器前端接收用户消息,消息协议层将用户消息封装成消息对象并送至消息对象管理器,消息处理中心对消息对象进行处理,并通过路由器与其它服务器单元进行通信,在需要多个服务器单元协同处理时将本单元与其它相关服务器单元关于消息对象的处理结果结合处理,所得结果通过消息协议层和服务器前端返回给用户。还提供了一种心跳服务器进程处理方法。本发明能提高心跳服务器负载能力,减少服务响应时间,提升用户体验,满足了P2P文件共享系统用户群扩展的需求。
文档编号H04L29/06GK101764836SQ200810241599
公开日2010年6月30日 申请日期2008年12月23日 优先权日2008年12月23日
发明者李挥, 李晓明, 杨国东, 王艳敏, 雷凯 申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1