




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可伸缩网络服务器群研究学生姓名: 指导老师:摘要在实际应用中,很多业务系统具有很强动态性,仅以高峰时段业务要求配置服务器资源不利于资源复用和节能环保。目前,动态扩展服务器有较成熟方案,但既支持动态扩展又支持动态缩减的高效、方便的服务器群的管理方案还比较匮乏,因此,研发可保持业务系统稳定运行的可伸缩的服务器群的部署方案和管理方法具有重要意义。本文针对网络服务器群的可伸缩性问题进行了深入研究,在文中设计和实现了网络服务器群的可伸缩性系统,主要工作如下:1)根据业务系统的特点,提出了可处理多种业务需求的服务器群架构的部署方案。该架构为树形架构,包括若干个管理服务器和节点服务器。管理服务器位于树形架构的根节点或者中间节点位置,节点服务器位于叶子节点位置。2)本文根据服务器群的架构特点,具体的提出了该服务器群架构系统的管理方案。该方案中的关键算法包括节点编码设计、管理服务器的分裂处理、节点服务器的分裂处理、管理服务器的合并处理以及节点服务器的合并处理。3)设计并实现了可伸缩网络服务器群架构系统,该系统可以在服务需求增多时分裂出更多的服务器以增强性能,在服务需求量降低时可以合并到较少的服务器以达到节约时间的目的,从而提高服务器的利用率。关键词:可伸缩性;服务器架构;分裂;合并;AbstractIn practice, many business systems are highly dynamic, configuring server resources with only during peak business requirements is not conducive to resource reuse and energy saving. Currently, the dynamic expansion of the server has more mature solution, but the efficient and convenient server cluster management solutions that support both dynamic expansion and dynamic reduction are still relatively scarce, so the research of scalable server cluster deployment solutions and management methods which can maintain stable operation of business systems is important. This paper focuses on the scalability issues of the network server cluster in research, design and implementation. The main contribution of this paper is as follows:1) According to the characteristics of the business system, this paper puts forward a deployment solution of server cluster architecture which can handle a variety of business requirements. The architecture is a tree structure, including a number of the manage servers and node servers. Manage server is located in the root node or intermediate node of the tree structure, the node server is located in the leaf node.2) According to the characteristics of this server cluster architecture, this paper puts forward a management solution of the server cluster architecture system. The key algorithms of the solution includes design of node identifier, split and merge of manage server, split and merge of node server.3) Design and implement a scalable network server cluster architecture system, the system can split up more servers to enhance performance when the demand of services is increasing, and can be combined into fewer servers to conserve resources when the demand of services is reducing, thereby improving server utilization, protection of business requirements are effectively dealt with.Keywords: Scalability; Server Architecture; Split; Merge目录可伸缩网络服务器群研究1摘要2Abstract3目录41绪论- 1 -1.1课题研究的背景及意义- 1 -1.2国内外的研究现状- 2 -1.3本文研究的主要内容- 3 -2可伸缩服务器群系统的概要设计- 5 -2.1可伸缩技术概论- 5 -2.2概要- 8 -2.2.1系统目标- 8 -2.2.2系统边界- 8 -2.2.3系统定义- 9 -2.3可伸缩网络服务器群系统架构- 9 -2.4服务器功能模块结构- 10 -3算法设计- 14 -3.1节点编码设计- 14 -3.2MS 分裂与合并- 15 -3.33NS分裂与合并- 17 -4可伸缩服务器群系统的详细设计- 19 -4.1系统程序类图- 19 -4.2流程设计- 23 -5系统测试和结果- 25 -5.1测试方案- 25 -5.2结果分析- 25 -6结论- 28 -6.1结论- 28 -致谢- 29 -参考文献- 30 -1 绪论1.1 课题研究的背景及意义随着网络技术的不断进步和互联网的炙手可热的发展,互联网上的网络流量和用户数大幅度的提高。据第 31 次中国互联网络发展状况统计报告指出,截止 2012 年 12月底,中国网民数量达到 5.64 亿1。由于上网人数的增多给网络带宽和服务器带来巨大的挑战,一些地区出现了服务端不能及时有效提供客户访问、不能提供可靠的不间断服务等问题,主要表现在一下方面:1一方面,网络硬件设备的不断进步,网络带宽的瓶颈逐渐缓解;另一方面,越来越多的瓶颈问题出现在服务器端,服务器的性能问题日趋突显。2由于访问次数的激增,很多网络服务不能够及时处理用户的请求,迫使用户进行长时间的等待,服务质量明显降低。例如 Yahoo 新闻每天要发送 6.25 亿页面2,这就意味着在信息量爆炸的当今社会,需要更强大的网络服务。3越来越多的网站需要提供 7*24 小时服务,这在电子商务等网站中尤为明显,任何时候的服务中断或者关键性数据的丢失都会造成直接的商业损失3。这对网络服务的可靠性提出了越来越高的要求。4多数服务器集群都是针对业务量增加而扩展服务器,但实际应用中,多数业务具有很强的动态性,存在高峰时段和低峰时段。在业务量低的情况下,保持大量服务器工作则不利于资源环保。通过对上述研究背景进行分析可知,单台服务器由于中央处理器、输入/输出接口处理速度等方面的限制,已无法满足快速增长的数据量以及同时处理多种业务的请求,取而代之的是由多台服务器组成的服务器群系统。因此,建立高性能的可伸缩的服务器群系统具有如下意义:1提高性价比组成服务器群的 PC 服务器和标准网络设备可以大规模的生成,所以价格相比于其他大型服务器比较低廉。如果整体性能随着结点数的增长而接近线性增加,则该系统具有很高的性价比4。2提高可用性由于在服务器群系统中有多台服务器,一台服务器可以成为另外一台服务器的备份服务器。当服务器发生故障时,可以激活另一台服务器代替工作,从而实现高效率的可用性。3可易用性组成服务器群系统的单台服务器依旧是传统平台,因此软件不需要进行大规模的修改就可以运行,开发者也可以在自己平时就很熟悉的网络环境下进行工作,这种模式保障了服务器群系统具有很高的可易用性5。4可伸缩性当需要处理的业务量过多时,服务器群系统可以通过增加一台服务器从而提高整个服务器群系统的性能。它的优点是当业务量比较少时,服务器群系统可以通过服务器的合并从而减少资源浪费。1.2 国内外的研究现状目前,国外最常见的服务器群集产品是 Windows Server 2003 服务器集群、Oracle WebLogic Server服务器集群、LVS服务器集群。群集服务是指在各个节点上执行群集操作的组件所构成的集合,而资源是指在群集内由群集服务管理的硬件和软件组件。Windows Server 2003 系列通过由对称多处理技术(SMP)支持的向上扩展和由群集支持的向外扩展来提供可伸缩性6。该服务器集群中,各个服务器计算机都被称为节点。在 Windows Server 2003 服务器集群中,该服务包括节点管理器、故障转移管理器、数据库管理器、全局更新管理器、检查点管理器、日志管理器、事件日志复制管理器以及备份/恢复管理器。Oracle WebLogic Server 是一个 Java 应用服务器,WebLogic Server 内核以可执行、可扩展和可靠的方式提供统一的安全、事务和管理服务7。WebLogic 群集架构可以有数种不同的变化,图 2-3 是其中的一种类型,若干个 server 组成一个群集,每个 WebLogicServer 在功能上,依照 J2EE 架构,又可分为 Web 层和业务逻辑层(执行 EJB 等元件)。这两层可视需要拆开在不同的硬件/网段中执行。WebLogic Server 群集中,需要架设一个对 client requests 作分流/负载平衡的机制。WebLogic Server 除了本身具备 Web server 功能,能够用来做网页/档案的处理之用外,同时还可兼做群集前段的负载平衡器8。单一的 Web server 作为负载平衡器的架构可能出现单点故障,为了避免这样的问题,群集通过在 Web server proxy 这层采用多个 server并列的方式。WebLogic 群集事实上是在一个应用域下设定执行的。每个WebLogic应用域只需要一个管理服务器,便可同时监控、管理一个、甚至多个群集,以及其他单独执行的应用服务器9。WebLogic 域下负责执行生产系统的各个服务器,统称为受管理服务器。虽然只有一个管理服务器,但这样的设计并不会有单一故障的问题,因为当管理服务器宕机或被关掉时,并不会影响各个受管理服务器的正常运行。当管理服务器再度启动时,会自动和各管理服务器做状态的更新和同步。LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器,是由章文嵩博士发起的自由软件项目,LVS 自从 1998 年开始,发展到现在已经是一个成熟的技术项目10。可以利用 LVS 技术实现高可伸缩的、高可用的网络服务,有许多比较著名网站和组织都在使用 LVS 架设的集群系统,例如:Linux 的门户网站()、向 RealPlayer 提供音频视频服务而闻名的 Real 公司()、全球最大的开源网站()等。该集群主要由三部分组成:负载调度器(load balancer)、服务器池(server pool)和后端存储(backend storage)。调度器是服务器集群系统对外界的前端机,负责将客户的请求发送到一组服务器上执行,它可以是基于 IP 负载均衡技术的负载调度器,也可以是基于内容请求分发的负载调度器,还可以是两者的结合11。服务器池是一组真正执行客户服务请求的服务器,执行的服务有 FTP、DNS 和 WEB 等。后端存储为服务器池提供了一个共享的存储区,这样使服务器池可以拥有相同的内容并且能够提供相同的服务12。1.3 本文研究的主要内容本文针对单台服务器架构已无法满足大数据和高响应服务的问题,提出了建立高性能、高可用和可伸缩的服务器群架构系统,主要就网络服务器群的可伸缩性问题进行了研究、设计和实现,主要工作如下:1)根据业务系统的特点,提出了可处理多种业务需求的服务器群架构的部署方案。该架构为树形架构,包括若干个管理服务器和节点服务器。管理服务器位于树形架构的根节点或者中间节点位置,节点服务器位于树形架构的叶子节点位置。2)根据本文服务器群的架构特点,提出了该服务器群架构系统的管理方案。该方案中的关键算法包括节点编码设计、管理服务器的分裂处理、节点服务器的分裂处理、管理服务器的合并处理以及节点服务器的合并处理。3)设计并实现了可伸缩网络服务器群架构系统,该系统可以在服务需求增多时分裂出更多的服务器以增强性能,在服务需求减少时可以合并到更少的服务器以节约资源,从而提高服务器的利用率,保障业务需求得到有效地处理。- 37 -2 可伸缩服务器群系统的概要设计2.1 可伸缩技术概论可伸缩性是当今计算机领域中经常用的专业词汇,对于不同的人应用起来,可伸缩性的定义也不同,可伸缩性的特性主要包含横向可伸缩性和纵向可伸缩性。其中,横向可伸缩性是指系统向外扩展,即通过增加系统的处理节点来提高系统的整体处理能力13。横向可伸缩性的一个最显著的优点是服务器成本低,即只通过价格便宜的计算机服务器搭建出一个处理能力非常强大的计算机集群。这是不可思议的,还有一个优点是基本上不存在用户量或数据量增加就再次遇到系统性能增加的瓶颈,并且单个服务器节点出现故障对系统的整体影响比较小。但是,横向可伸缩也存在了一些缺点,由于服务器节点的增多,系统整体复杂度也会得到提高,那么集群的维护难度将会增大,维护成本会很高14。纵向可伸缩性是指向上扩展,即通过增加当前服务器节点的处理能力来提升系统的整体处理能力14。纵向可伸缩性具体体现为升级现有服务器的配置,如增加内存,增加 CPU,增加存储系统的硬件配置,或者更换更强的服务器和更高端的存储系统。纵向可伸缩性的优点有:处理的节点少,维护简单,维护成本低,最重要的是系统集中在一台服务器,架构设计简单,容易开发。但是,纵向可伸缩也存在了一些缺点:首先,整个系统集中在一台服务器上,这样满足不了应用系统的需求,导致对服务器的硬件配置要很高,而高端设备的服务器价格都很贵,成本就提升了,这样不利于设备的维修和日常运用15。其次,应用系统业务需求量可能无限增大,由于单台服务器的处理能力总是很有限的,所以容易遇到无法解决的性能瓶颈。最后,整个系统集中在一台服务器上,一旦发生故障,后果影响很大。1. 可伸缩设计模式可伸缩设计模式有多种,下面主要介绍其中的 4 种:1)负载均衡模式 此模式由调度器来决定由哪个服务器来处理下一个请求,基于不同的策略做不同的决定16。在该模式中,由调度器决定由哪个服务器处理请求,这种状态下应用最好是无状态的,因为这样使得任何一个服务器都能同等处理请求。当代几乎所有的中大型网站都应用了负载均衡器这个模式。2)分散和聚合模式 这种模式是通过调度器将请求广播到服务器群中的所有服务器。每个服务器将单独计算其中一部分,并将结果返回给调度器,由调度器来汇总所有的计算结果并返回给客户端17 该模式中,再由调度器将请求转发给池中的所有服务器,每个服务器处理请求的一部分并返回给调度器,调度器将服务器返回的结果加工组合为一个响应返回给客户端。该模式在搜索引擎中使用处理用户的关键字,如 Yahoo,Google 等。3)结果缓存模式 在这种模式中,首先检查这个请求之前调度器会识别是否有处理过,并试图找出之前的处理结果并自动返回,这样就节省了处理时间19。这种模式很简单,只是在调度器处理时加了一步查询结果缓存,如果之前已经处理过并且恰好可以使用之前的缓存,就返回之前的处理结果,从而达到节省处理时间的目的20。该模式通常使用在大型企业应用。4)共享空间模式 的含义是所有的服务器都关注在一起共享的区域内的信息,并且都向这块区域提交自己的部分信息。信息不断被完善,直到问题被解决为止21。这个模式也叫“黑板模式”。换而言之是在处理流程中,需要存在一个全局传递的对象,它可能包含了请求参数、中间状态、响应结果等各种丰富的信息,然后供流程中的各个组件对其进行操作22。该模式在 JavaSpace(JavaSpaces 技术是进行分布式计算的一种简单机制)和 GigaSpace(GigaSpace 是一个虚拟化的中间件层)中都有使用。2. 负载均衡负载均衡技术是现代网络技术中比较常用的技术,学术上对它有两种不同的定义,一种是将大量的和同时发送的数据流或并发访问在多个节点上进行处理,从而达到减少用户响应时间的目的。另一种是将单一负载的运算分担在多个节点上进行并行处理,并且在所有节点都完成处理后将结果汇总反馈给用户,这就是常说的集群技术23。下面是比较常用的负载均衡技术:1)软件负载均衡技术软件负载均衡技术是指在交互的网络系统中的多台服务器的操作系统上安装一个或多个相应的负载均衡软件从而实现负载均衡的一种技术。它有很多优点,比如:配置简单,成本低廉,可以满足一般的负载均衡需求。但是,一旦单台服务器上安装了额外的软件,这就会不定的消耗系统不定量的资源。越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键25。2)硬件负载均衡技术硬件负载均衡技术是指在多台服务器间安装相应的负载均衡设备,来平衡流量的消耗,即由负载均衡器来完成负载均衡技术。一般来讲,硬件负载均衡技术在功能、性能上优于软件方式,但考虑到成本比较高,所以一般都应用于流量高的大型网站系统26。3)本地负载均衡技术本地负载均衡技术是指对本地服务器群进行负载均衡处理。该技术能有效地解决数据流量过大、网络负荷过重的问题,其工作原理是首先通过对服务器进行性能优化,从而使流量能够平均分配在服务器群中的各个服务器上。如果是给现有服务器扩充升级,只要简单地增加一个新的服务器到服务群中,而不需改变现有网络结构,停止现有的服务,这样使得维护和修理都十分的方便12。4)全局负载均衡技术全局负载均衡技术是指对分布在全国的多个服务器上进行负载均衡处理,该技术是通过对访问用户的 IP 地理位置判定,从而自动转向地域最近点进行负载均衡处理数据27。全局负载均衡具有避免服务器、数据中心等的单点失效、避免由于 ISP 专线故障引起的单点失效等优点,该技术适用于拥有多个地域的服务器集群的大型网站系统。3数据备份数据备份是为数据提供安全保障的一种有效的方式,含义其是指为防止系统出现操作失误或系统故障导致数据丢失,而将从应用主机的全部或部分数据集合复制到其它的存储介质的过程。常用的数据备份模式有:定时磁带备份、定时双机备份、Active/Active 双服务器互备份和 Active/Standby 双服务器热备份。其中:1)定时磁带备份这种备份模式是通过磁带机或服务器硬盘定时备份,在出现故障时做停机处理,待外部管理员修复故障后,从磁带机或硬盘中恢复数据。这种模式是比较落后的,因为在使用定时磁带备份数据模式时,还要考虑到备份介质的储存空间和定时设置等情况28。2)定时双机备份定时双机备份需要使用两台服务器。一台为主服务器,采用高档机,机内配有 RIAD磁盘阵列。另一台为备用服务器,相比于前一台则采用低档机,不需要配有 RIAD 磁盘阵列,只需要能运行 HIS 系统服务器端软件。两机是通过局域网相连的,只有在每天业务量小的时候将数据导出,并换在低档的备用服务器上恢复。当两个主服务器出现故障时,由备用服务器接替工作30。3)Active/Active 双服务器互备份在这种方式中,没有主服务器和备份服务器之分,两台主机互为备份和主机。在正常运行状态下,两台主机各自可以运行不同应用,同时相互监测对方状况。在出现故障时,当某一方的系统或者资源出现问题,另一台主机立即接管它的应用,充当备份主机的作用,从而保证了应用的正常运转31。4)Active/Standby 双服务器热备份在Active/Standby 双服务器热备份方式中,当主服务器运行应用时,备份服务器是处于空闲状态的,但是备份服务器仍然实时监测主服务器的运行状态。在正常情况下,主服务器会兼顾监视备份服务器的状态,当备份服务器出现异常时,工作服务器会发出警告,提醒系统管理员解决故障,以确保主/备服务器切换的可靠性,机器处于正常状态;在出现故障时,为确保当正在运行着的一台服务器出现故障时,不能支持应用系统运行,那么这时另一台备份服务器被激活,接管主服务器的工作,这是备份服务器起主导作用,确保在短时间内应用完全恢复正常并能够使用33。2.2 概要2.2.1 系统目标本系统的目标是通过精心设计实现一种可伸缩的网络服务器群架构系统,因此在设计服务器集群方案时,主要基于下列目标考虑:1)可伸缩性:这是本系统最根本的目标,力图随着业务的发展能够方便快捷地增加集群中的计算机数量。通过调整硬、软件配置最终达到可适应不同的网络结构、不同的信息流量规模,使整个系统达到拓扑的目的。2)负载平衡:由于网络信息流量是在本地的多台服务器之间使用的,甚至可以在异地多台服务器之间都能得到比较好的并且均衡的分派,力求能够使请求流量能在多个机器间甚至多个服务进程之间,异地多台服务器之间得到比较好的并且均衡的分派。3)容错:支持数据的多备份容错。当整个系统的的某一部分的服务器出错时,这一系统可以自动将客户端的请求分派到其它正常工作的服务器。这一目标主要考虑到能够很好的支持数据的动态备份,甚至能够实现对异地的数据动态备份,用来维持整个系统的数据的一致。4)可维护性:由于整个系统比较庞大,一旦哪一环节系统的错误,有了这一特性可以对系统做到比较容易的管理和维护作用。5)高可用性:当整个运转系统的部分硬件或者软件发生故障,整个系统最应该保证用户的业务是连续的,并且具有持续可用的特性,即具有 7*24 的可用性。2.2.2 系统边界可伸缩网络服务器群架构系统是一个通用的系统架构,可以方便地查看服务运行状态,进而高效地进行管理,并且该架构具有较高的可伸缩性。可伸缩网络服务器群架构系统是为 PSMQ 消息服务组件服务的,它只起到提供服务器群架构的部署方案,不处理任何的业务逻辑,也不提供与业务逻辑紧密结合的功能。为模拟实现,该系统只为节点提供简单的登录接口,所以保证了该系统的独立性。2.2.3 系统定义SID:变长的服务器节点编码(最长不超过 128 位)。该编码的作用是可该编码可以唯一地标识一个服务器,同时隐含地给出该服务器的上层服务器的信息。NID:128 位的业务节点编码。该编码的作用是可以唯一地标识一个客户端,同时隐含地给出该客户端的上层服务器信息。MS:Manage Server,管理服务器的简称。NS:Node Server,节点服务器的简称。流初始化:指在 TCP 流建立之后,主动连接的一方向被动连接的一方发送自己的标识信息的过程。心跳:指业务节点或者服务器每隔一段时间向上层服务器发送一个数据包,这种行为为了表示证明连接仍然存在的行为。上层服务器:在树结构的每两层当中,位于较上一层的服务器。下层服务器:在树结构的每两层中,位于较下一层的服务器。根服务器:在树结构当中,没有父节点的服务器。分裂阈值:指的是服务器可以管理的下层服务器数量。合并阈值:比分裂阈值小,可以人为给定。连接:在未特别说明的情况下,指一个 TCP 连接。A 值:服务器节点编码长度。L 值:服务器逻辑上的最大节点编码长度。服务器最多能管理 m 台服务器,则 L值为 log2m 。R 值:拒绝标志位。由于管理服务器上全部都设有 R 值,所以值只能为 true 或者 false。2.3 可伸缩网络服务器群系统架构如图 2-1 所示,是本文所设计的网络服务器群架构,采用的是树形架构,由多台管理服务器(MS)和多台节点服务器(NS)组成。管理服务器位于树形架构的中间节点或者根节点的位置,管理服务器可以连接若干个管理服务器或者若干个节点服务器;节点服务器只能位于该架构中叶子节点的位置34。只有一台节点服务器和一台管理服务器的情况是该系统架构的初始状态。图 2-1 系统拓扑结构图2.4 服务器功能模块结构如图 2-2 所示,管理服务器(MS)功能包含六部分分别是:部署 MS信息传递,心跳管理,MS 分裂,MS 合并和监控下层服务器.图 2-2 MS 功能模块结构图1) 部署 MSMS 的部署包括 MS 的建立与连接。管理员通过 PC 机作为管理服务器的建立,由管理员完成,当 MS 向上级服务器请求连接时或 MS 达到分裂条件时,由 MS 的连接过程得到新的 MS 编码。2) 信息传递信息传递包括当下层有业务请求发送时,会有信息接受,处理,发送的过程。基本事件流程为:a. MS 接受下层服务器传递的业务请求。b. MS 根据其业务请求中所包含的 NID 进行判定,若该 NID 在其管理范围内,则向其对应的下级服务器发送信息;反之,向上级转发该业务请求。3) 心跳管理心跳管理主要包括两部分过程,即 MS 向上级服务器发送心跳过程以和 MS 接收下级服务器的心跳过程。如果超过一定时间未接收到心跳,则认为对方断开连接并提示管理员。4) MS 分裂当 MS 满足分裂条件,就会导致分裂,产生新的 MS,得到新的 MS 编码(包括原有 MS 和新产生的 MS)并完成数据迁移。基本事件流程如下:a. MS2 向上级 MS1 发出分裂请求。b. 上级 MS1 决定分裂方式。c. 管理员启动并配置新的 MS 连接进入。d. MS2及新加入的 MS 记录自己的新编码。e. MS1 根据管理服务器编码将 MS2 的部分子节点(或子服务器)交给新加入的 MS(即数据迁移)。5) MS 合并当 MS 满足合并条件,为了节省开销,就会与相应的其他的 MS 发生合并,得到新的 MS 编码和下层服务器编码,并产生数据迁移。其基本事件流为:a. MS1 监控到自身能与下级 MS2 合并,或者其下级的 2 个兄弟 MS 可以合并,则发送合并命令,并规定合并后的 MS 编码。b. 合并后的 MS 记录自己的新编码。c. 被合并的服务器将其管理的服务器交给合并后剩下的服务器管理(即数据迁移)。d. 被合并的 MS 断开连接。6) 监控下层服务器MS 能够记录其下层服务器的负载情况;当自身负载情况发生改变时向其上层服务器发送负载改变信息,上层服务器接受和记录这条信息。如图 2-3 所示,节点服务器(NS)功能主要由七部分构成,分别是:部署 NS,信息传递,业务处理,心跳管理,NS 分裂,NS 合并和监控节点。图 2-3 NS 功能模块结构图1) 部署 NSNS 的部署包括 NS 的建立与连接。管理员通过 PC 机作为节点服务器的建立,由管理员完成,当 NS 向上级服务器请求连接时或 NS 达到分裂条件时,由 NS 的连接过程得到新的 NS 编码。2) 信息传递信息传递包括当下层有业务请求发送时,会有信息接受,处理,发送的过程。基本事件流程为:a. NS 接受用户业务请求。b. NS 根据其 NID 判定,若在其管理范围内,则处理该业务,反之,向上级转发该业务请求。3) 心跳管理心跳管理包括两个过程,即NS 向上级服务器发送心跳过程和 NS 接收下级业务节点的心跳过程。如果NS 在规定的时间内未接收到心跳,则认为对方主动断开了连接,这时程序同时提示管理员。4) NS 分裂当 NS 达到其分裂阈值,就会导致 NS 的分裂,产生新的 NS,得到新的 NS 编码(包括原有 NS 和新产生的 NS)并完成数据迁移。基本事件流程如下:a. NS1 向上级 MS发出分裂请求。b. 上级 MS 决定分裂方式。c. 由管理员启动并配置新的 NS2 连接进入。d. NS1,NS2 记录自己的新编码。e. MS 根据节点服务器编码将 NS1 的部分子节点交给NS2 管理(即数据迁移)。5) NS 合并当 NS 达到其合并阈值,为了节省开销,会与相应的 NS 产生合并,得到新 NS 编码,并产生数据迁移。其基本事件流为:a. MS 监控到其下级 2 个兄弟 NS 可以合并,则发送合并命令,并规定合并后的 NS 编码。b. 合并后的 NS 记录自己的新编码。c. 被合并的服务器将其管理的业务节点交给合并后的相应服务器管理(即数据迁移)。d. 被合并的 NS 断开连接。6) 监控节点NS 监控节点的信息包括:下层用户节点的个数,用户信息,用户的离开和接入的状态等。NS 能够很清楚、快速、准确的记录其下层节点的负载情况;当自身负载情况发生改变时向其上层服务器发送负载改变信息,上层服务器接受和记录这条信息。3 算法设计3.1 节点编码设计由于节点编码具有唯一性,所以位于中间节点位置的管理服务器和节点服务器都必须设置有节点编码,服务器的节点编码是变长的,由 0-1 串组成,其节点编码长度等于其管理的服务器节点编码或业务节点编码的共同前缀部分的长度;管理服务器的节点编码是其下属管理服务器的节点编码或节点服务器的节点编码的共同前缀部分;节点服务器的节点编码是其管理的业务节点编码的共同前缀部分,当只含有一台节点服务器时节点服务器节点编码的长度为零35。系统还包括业务节点,业务节点表示用户负载,业务节点上设有业务节点编码,如图 3-1 所示,业务节点编码是定长的,总长 T 位,T 位业务节点编码包含 K 位节点服务器编码,K、T 均为非负整数。图 3-1 节点编码结构图管理服务器上均设有前缀位列表保存其管理的管理服务器或节点服务器的节点编码,每个前缀位串对应一台管理服务器或节点服务器;节点服务器保存一个前缀位串,管理所有以该前缀位串开头的业务节点编码36。管理服务器上还设有拒绝标志 r,r 的取值为真或假,当 r 为真时表示由该服务器管理的管理服务器或节点服务器达到稳定状态,不能分裂38。管理服务器上拒绝标志 r 置真的条件如下:(1)于第 i 层且 0in 的管理服务器的拒绝标志 r 置真的条件是:位于父亲节点的 r为真,前缀位列表中的前缀位串长均为,为第 s 层管理服务器逻辑上的最大节点编码长度,叙述该管理服务器下层非节点服务器40。(2)位于根位置的管理服务器的 r 置真的条件:是前缀位列表中的前缀位串长均为L1,所述该管理服务器下层非节点服务器(3)位于第 n 层管理服务器的 r 置真的条件是:父亲节点的 r 为真,前缀位列表中的前缀位串长均为 M(M 为节点服务器逻辑上的最大节点编码长度),即下层节点服务器满413.2 MS 分裂与合并MS 分裂有三种模式:即同级分裂、合并分裂和向上分裂。服务器的分裂方向是自底向上;如果分裂后,服务器的负载仍超过分裂阈值,则继续向上级服务器发送分裂请求,直至服务器的负载不超过分裂阈值.图 3-2 向上分裂后的系统结构图图 3-2 表示向上分裂后的树形架构,如节点编码前缀位为 1111 的节点服务器分裂成两台,负载少的使用新增服务器,上级管理服务器分配服务器节点编码分别记作 11110和 11111;由于节点服务器由四台扩展为五台,服务器节点编码为 11 的管理服务器的监控线程向上级管理服务器(本例中为根位置的管理服务器,其他情况类似)发送分裂请求17。根位置的拒绝标志 r 为真,无法接纳新的服务器,指示节点编码为 11 的管理服务器分裂为 110 和 111(一台新增,一台使用编码为原 11 的服务器,负载少的使用新增服务器),新增一台编码为 11 的服务器管理分裂后的 110 和 111;编码为 11 的管理服务器的节点编码前缀位列表为(110,111),r 为假17。节点服务器根据自身的节点编码前缀位串进行迁移,前缀位串为 1100、1101 的节点服务器迁移至节点编码为 110 的管理服务器下,管理服务器的节点编码前缀位列表包含(1100,1101),r 为假;编码为 111 的管理服务器的节点编码前缀位列表包含(1110,11110,11111),r 为假,如果分裂后,服务器的负载仍超过分裂阈值,此时继续向上发送分裂请求,其最大限度的服务器负载不能超过分裂阈值17。在本文中,针对 MS 的合并方式共设计了两种合并方式。分别是水平合并,垂直合并。在管理服务器的合并过程中,水平方向合并要优先于垂直方向合并;垂直合并的方向是自底向上;水平合并后的服务器由原负载多的服务器取代17。1. 水平合并水平合并是指当同层的管理服务器的节点编码相邻,并且负载之和低于合并阈值且孩子节点类型相同,则这两台管理服务器合并为一台服务器。水平合并的条件是:同层的两台管理服务器 Sij与 Sik(Sij表示第 i 层、第 j 台管理服务器)的节点编码相邻、负载之和低于合并阈值且孩子节点类型相同图 3-3 水平合并系统结构图如图 3-3 所示,图中左边部分表示合并前的服务器群架构图,图中右边部分表示合并后的服务器群架构图。上层服务器(本例中作为根节点,其他情况类似)的监控线程监听到具有相邻节点编码的两台服务器的运行状态 (如本例中节点编码为 10 和 11 的管理服务器,其他实例中下层也可以是节点服务器),两台服务器的负载之和不超过合并阈值,判定两台服务器可以合并;上级管理服务器向下级需要合并的两台服务器发送合并指令;下级服务器接收并处理合并指令,两台服务器合并为一台服务器,被释放的服务器上的业务迁移至合并后的服务器上(本例中由负载多的,即原节点编码为 11 的管理服务器被取代,合并后的管理服务器节点编码为 1;前缀位串为 10 的节点服务器迁移至节点编码为 1 的管理服务器下,合并后的管理服务器的节点编码前缀位列表包含(10,110,111),r 为假)17。2. 垂直合并垂直合并是指当服务器的负载与上层管理服务器的负载之和低于合并阈值并且这两台服务器的负载类型相同,则这两台服务器合并为一台服务器。垂直合并的条件是:管理服务器 Sij、Sij的子节点为服务器 S(i+1)k及 S(i+1)k的孩子节点均为管理服务器、Sij的负载与 S(i+1)k的负载之和低于合并阈值(或者 Sij的负载与 S(i+1)k的负载之和使得 Sij的拒绝标志位为真),将 S(i+1)k合并到 Sij17。(a) (b)图 3-4 第一垂直合并后的系统结构图图 3-4(a)表示垂直合并前的服务器群架构,图3-4(b) 表示垂直合并后的服务器群架构。如上层服务器(本例中为根节点,其他情况类似)的监控线程监听到节点编码为 1 的管理服务器的运行状态,上层服务器的负载与编码为 1 的管理服务器的负载之和不超过合并阈值且编码为 1 的管理服务器的子节点为管理服务器,满足垂直合并(1)的条件,可以进行垂直合并;上层管理服务器向下级需要合并的服务器发送合并指令;下级服务器接收并处理合并指令,编码为 1 的管理服务器合并到上层服务器(本例中为根节点,其他情况类似);被释放的服务器上的业务迁移至合并后的服务器上(前缀位串为 10、11 的管理服务器迁移至位于根位置的管理服务器下,合并后的管理服务器的节点编码前缀位列表包含(0,10,11),r 为假17。3.3 3NS分裂与合并NS 合并方式为节点服务器节点编码相邻的两台服务器的负载之和低于合并阈值时,则这两台节点服务器合并为一台服务器17NS 分裂的条件是节点服务器管理的业务节点个数超过了 NS 的分裂阈值。其中,NS 的分裂方式主要有两种,分别是只涉及节点服务器的分裂和引起上层管理服务器分裂的节点服务器分裂17。只涉及节点服务器的分裂是指一台 NS 一分为二,分裂后的服务器均作为原上层服务器的孩子,如图 3-5所示。只涉及到节点服务器的分裂条件是:当一台节点服务器的负载超过分裂阈值时,则要进行分裂,分裂后的服务器仍为原上层服务器的孩子。如图3-5,图中(a)(b)分别表示分裂前、后的系统架构图,假设该架构为三层,每层节点服务器最多可管理四个节点。如图中(a)所示,分裂前,节点服务器有三台,位于根位置的管理服务器的节点编码前缀位列表为(0,10,11),根位置的管理服务器的拒绝标志 r 为假,管理的服务器节点编码分别为 0、10 和 11;当节点服务器的负载超过分裂阈值时,节点服务器的监控线程向上级管理服务器发送分裂请求;上级管理服务器的分裂线程接收并处理下级服务器的分裂17。图 3-5 只涉及节点服务器分裂的系统结构图如图 3-5 中(b)所示,节点编码前缀位串为 11 的节点服务器分裂成两台,负载少的使用新增服务器,两台节点服务器节点编码分别记作 110 和 111,如果分裂后,节点服务器的负载仍超过分裂阈值,此时继续向上发送分裂请求,直至服务器负载不超过分裂阈值;上级管理服务器的节点编码前缀位列表记作(0,10,110,111),r 为假,服务器的节点编码不变(本例中根位置的管理服务器无节点编码)17。引起上层管理服务器分裂的节点服务器分裂是指某服务器分裂后使上层管理服务器超过管理上限,需要加入新的管理服务器作为其父节点或兄弟节点,并将其原来管理的部分服务器交由新的管理服务器管理。引起上层管理服务器分裂的节点服务器分裂条件与只涉及节点服务器的分裂条件一致,即节点服务器的负载超过分裂阈值时,则进分裂。如图 3-6所示,图中(a)表示分裂前的树形架构图,该树形架构为两层,有四台节点服务器,假设位于根位置的管理服务器的节点编码前缀位列表包含(0,10,110,111),拒绝标志 r 为假,节点服务器节点编码分别为 0、10、110 和 111;当节点服务器的负载超过分裂阈值时(如前缀位串为 111 的节点服务器),节点服务器的监控线程向上级管理服务器发送分裂请求;上级管理服务器接收并处理下级服务器的分裂17。3-6引起上层管理服务器分裂的节点服务器分裂的系统结构图图 3-6 中(b)表示分裂后的树形架构图,树形架构为三层,节点编码前缀位为 111的节点服务器分裂成两台,负载少的使用新增服务器,并分配服务器节点编码分别记作1110 和 1111;由于节点服务器由四台扩展为五台,则位于根位置的管理服务器的监控线程向管理者发送分裂请求;管理者收到分裂请求,指示位于根位置的管理服务器分裂为 0 和 1(一台新增,一台用来负责位于根位置的原服务器,负载少的位置使用新增服务器),新增一台服务器位于根节点,管理分裂后的服务器;位于根位置的管理服务器的节点编码前缀位列表包含(0,1),r 为假;节点服务器根据自身的节点编码前缀位串进行迁移,前缀位串为 0 的节点服务器迁移至节点编码为 0 的管理服务器下,管理服务器的节点编码前缀位列表包含(0),r 为假;编码为 1 的管理服务器的节点编码前缀位列表包含(10,110,1110,1111),r 为假。如果分裂后,服务器的负载仍超过分裂阈值,此时继续向上发送分裂请求,直至服务器负载不超过分裂阈值17。4 可伸缩服务器群系统的详细设计4.1 系统程序类图图4-1系统程序类图1如图 4-1 所示,线程基类(CThread)是整个系统的核心,该基类主要包括一个boost:mutex 的互斥锁和一个 loop()纯虚函数,互斥锁实现线程同步。所有的服务器线程都继承自该线程基类,都必须自己实现 loop 函数,完成相应的功能。纯虚函数 loop()保证了程序开发的多态性和便捷性。心跳线程类(ConnManagerThread)负责向上级服务器发送心跳 send2Parent()和处理下级服务器的心跳请求 checkQueue()。对服务器分裂、合并的处理要用到处理线程(DealingThread),通过 onMerging、onNsBreaking、onMsBreaking 函数实现对管理服务器的合并、节点服务器的分裂以及管理服务器的分裂的流程处理。系统通过监控线程(DetectionThread)实现对服务器分裂、合并流程的监控。通过isCanBeMerged 函数判断负载量是否发生变化(默认前提:发生合并,必定存在负载信息变化),HaveBrother 函数判断是否存在兄弟节点,onMergingDetecting()函数针对管理服 务 器 的 合 并 条 件 , 从 而 对 管 理 服 务 器 的 合 并 流 程 进 行 监 控 。 同 理 ,onMsBreakingDetecting()和 onNsBreakingDetecting()分别实现对管理服务器分裂、节点服务器分裂流程的监控。连接管理线程(ConnManagerThread)通过 connect()函数发起异步连接,onRead()函数实现异步读取。其中,异步读取的数据通过数据成员 m_MessageHandle 消息句柄把数据打包成 XML 数据。另外,onAccepted()函数用以实现接收连接,连接的类型包括已有 ID 的客户端、没有 ID 的客户端和服务器 ID;成员函数 initialID(sock_ptr sock)识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于审理涉及国有建设用地使用权转让合同纠纷案件适用法律问题的解释学习笔记
- 私人餐饮员工合同范本
- 房屋评估卖房合同范本
- 2025华帝供应商基础供货合同
- 摩托装备寄售合同范本
- 尼龙颗粒销售合同范本
- 商场楼顶维修合同范本
- 骆驼驯养合同范本
- 珠宝贷款的合同范本
- 餐饮 店铺转让合同范本
- 香菇多糖生产工艺创新-洞察分析
- 箱泵一体化泵站设计图集
- 三上10《公共场所文明言行》道德法治教学设计
- 《电器火灾的防范》课件
- 路灯CJJ检验批范表
- 农村厕所改造合同书完整版
- 建筑工程安全管理提升方案
- 对新员工保密基本培训
- GB/T 6553-2024严酷环境条件下使用的电气绝缘材料评定耐电痕化和蚀损的试验方法
- 2024年苏教版四年级数学上册全册教案
- 2024新科普版英语七年级上单词默写表
评论
0/150
提交评论