大规模服务器集群应用部署方法和大规模服务器集群

摘要:

一种大规模服务器集群应用部署方法及相应的大规模服务器集群,其中所述方法包括:步骤1:所述大规模服务器集群中的中心部署服务器将一个应用的部署包切分成多个片段,并将切分后的多个片段部署于所述大规模服务器集群中的多个应用服务器上;以及步骤2:各个所述应用服务器在被部署完所述部署包的所有片段后,将所述所有片段拼合成一个完整的部署包。本发明减轻了部署服务器性能负载,加快了从部署服务器向应用服务器分发应用部署包的速度和效率,消除部署服务器的处理和网络资源瓶颈,做到应用部署的时间与集群内的应用服务器数量无关,也无需如传统的分层分发技术的C/S架构那样维护大量的分层部署节点,还降低了开发和维护的难度。

申请号: CN201110193347.9 专利名称: 大规模服务器集群应用部署方法和大规模服务器集群 申请(专利权)人: [阿里巴巴集团控股有限公司] 发明人: [刘志达, 魏玉璋] 其他信息:

1.一种大规模服务器集群应用部署方法,所述方法包括:

步骤1:所述大规模服务器集群中的中心部署服务器将一个应用的部署 包切分成多个片段,并将切分后的多个片段部署于所述大规模服务器集群中 的多个应用服务器上;以及

步骤2:各个所述应用服务器在被部署完所述部署包的所有片段后,将 所述所有片段拼合成一个完整的部署包;

其中,所述步骤1包括:

步骤111:所述大规模服务器集群中的中心部署服务器将所述一个 应用的部署包切分成所述多个片段之后,将所述切分后的多个片段分别发送 至相应应用服务器上;

步骤112:所述应用服务器从所述中心部署服务器上获取所需要的 其它片段的路径;以及

步骤113:所述应用服务器按照所获取的路径去拉取所需要的其它 片段,然后向所述中心部署服务器报告关于所述其它片段的片段信息。

2.一种大规模服务器集群应用部署方法,所述方法包括:

步骤121:在所述步骤1中,所述大规模服务器集群中的中心部署 服务器将所述一个应用的部署包切分成所述多个片段之后,向应用服务器发 送拉取指令;

步骤122:所述应用服务器接收到所述拉取指令后到所述中心部署 服务器拉取片段;

步骤123:所述应用服务器从所述中心部署服务器上获取所需要的 其它片段的路径;以及

步骤124:所述应用服务器按照所获取的路径去拉取所需要的其它 片段,然后向所述中心部署服务器报告关于所述其它片段的片段信息。

3.根据权利要求1所述的方法,其中,

在所述步骤113之后还包括以下判断步骤:

所述应用服务器判断是否已拉取完所述部署包的所有片段,如果判 断结果为尚未拉取完所有片段,就返回到所述步骤112,如果判断结果为已 经拉取完所有片段,则进入所述步骤2。

4.根据权利要求2所述的方法,其中,

在所述步骤124之后还包括以下判断步骤:

所述应用服务器判断是否已拉取完所述部署包的所有片段,如果判 断结果为尚未拉取完所有片段,就返回到所述步骤123,如果判断结果为已 经拉取完所有片段,则进入所述步骤2。

5.根据权利要求1所述的方法,其中,

在所述步骤111中,所述中心部署服务器将所切分的多个片段与所有所 述应用服务器一一对应,并将切分后的多个片段分别发送至所有所述应用服 务器中相应应用服务器上。

6.根据权利要求1所述的方法,其中,

在所述步骤111中,所述中心部署服务器将所切分的多个片段与部分所 述应用服务器一一对应,并将切分后的多个片段分别发送至所有所述应用服 务器中相应应用服务器上。

7.根据权利要求2所述的方法,其中,

在所述步骤121中,所述中心部署服务器使所切分的多个片段与所有所 述应用服务器具有一一对应的对应关系,并根据所述对应关系向所有所述应 用服务器发送拉取指令,并且

在所述步骤122中,所有所述应用服务器接收到所述拉取指令后,根据 所述对应关系到所述中心部署服务器分别拉取一个不同的片段。

8.根据权利要求2所述的方法,其中,

在所述步骤121中,所述中心部署服务器使所切分的多个片段与部分所 述应用服务器具有一一对应的对应关系,并根据所述对应关系向所述部分所 述应用服务器发送拉取指令,并且

在所述步骤122中,所述部分所述应用服务器接收到所述拉取指令后, 根据所述对应关系到所述中心部署服务器分别拉取一个不同的片段。

9.根据权利要求2所述的方法,其中,

在所述步骤122中,所述中心部署服务器在所述应用服务器拉取片段的 拉取过程中将所切分的多个片段与所有所述应用服务器一一对应。

10.根据权利要求2所述的方法,其中,

在所述步骤122中,所述中心部署服务器在所述应用服务器拉取片段的 拉取过程中将所切分的多个片段与部分所述应用服务器一一对应。

11.根据权利要求5或6所述的方法,其中,

在所述步骤111中,所述中心部署服务器根据所述应用服务器的连接状 态、负载、IP地址、时间以及机器名中的一个或任意组合计算出的随机数或 者哈希值,将所述相应应用服务器与所述多个片段一一对应。

12.根据权利要求7或8所述的方法,其中,

在所述步骤121中,所述中心部署服务器根据所述应用服务器的连接到 所述中心部署服务器的连接先后次序、负载、IP地址、机器名中的一个或任 意组合,将所述应用服务器与所述多个片段一一对应。

13.根据权利要求1所述的方法,其中,

在所述步骤112中,所述中心部署服务器根据所述所需要的其它片段当 前所在的应用服务器的连接状态、负载、IP地址、时间以及机器名中的一个 或任意组合计算出的随机数或者哈希值,提供所述所需要的其它片段的路径。

14.根据权利要求2所述的方法,其中,

在所述步骤123中,所述中心部署服务器根据所述所需要的其它片段当 前所在的应用服务器连接到所述中心部署服务器的连接先后次序或负载均衡 原则,提供所述所需要的其它片段的路径。

15.根据权利要求1或2所述的方法,其中,

所述片段的片段信息包括所述片段的地址以及该片段的代号。

16.根据权利要求1所述的方法,其中,

在所述步骤1或步骤2中,所述应用服务器获得所述一个应用的部署包 的MD5码,以及

在所述步骤2中,所述应用服务器使用所述MD5码对所拼合成的部署 包进行校验。

17.一种大规模服务器集群,所述大规模服务器集群包括:

一个中心部署服务器和多个应用服务器,其中,

该中心部署服务器和多个应用服务器之间的应用部署采用权利要求1或 2的应用部署方法。

大规模服务器集群应用部署方法和大规模服务器集群

技术领域

本申请涉及大规模服务器集群的应用部署,尤其涉及在大型网站的后端 服务器集群中(例如大于2000台服务器的规模)实现应用部署的方法、集群。

背景技术

在现在的互联网公司巨头,比如Google、Facebook、yahoo等网站,为 了支撑海量用户的访问,其后端往往存在着上万台服务器集群来提供服务。 原本在只有十几台服务器的集群运行和维护过程中使用的应用部署的成熟技 术在同时维护成千上万台服务器的时候,就暴露出了性能瓶颈。

例如,研发部门研发出了一个新的应用,这个新的应用能否快速稳定地 部署到后端成千上万台服务器并以最快的时间为用户提供服务关系着公司的 业务水平和赢利效果。

已知的服务器集群应用部署技术采用的是C/S架构,如图1所示,通过 一台部署服务器,先把应用打包部署到这一台部署服务器上,然后这一台部 署服务器对集群内的从服务器分发这个应用的包。或者,各从服务器轮流排 队,等待部署服务器对其进行部署。

在大规模服务器集群的情况下,已知一种应用部署技术是在C/S架构的 基础上,采用分层的分发技术,如图2所示,先把应用打包,部署到一台中 心部署服务器,再由这一台中心部署服务器将应用包部署到多台主部署服务 器上,然后再由这些主部署服务器同时向其从服务器分发应用包。然而这样 的分层部署方式造成管理上的复杂和不便,以及成本的增加,例如,需要专 门设置和管理大量的专用于部署的部署服务器。

从上述的已知技术的架构图中可以看出,在大规模服务器集群的情况下, 已知的应用部署技术暴露出了如下缺点或问题:

1、通过C/S模式部署应用时,当部署服务器需要部署的从服务器数量很 大,部署服务器的网络吞吐性能和硬件负载就会出现瓶颈。比如一台部署服 务器要同时向1000台从服务器分发应用包,远远超过了现在服务器网卡带宽 的性能指标。随着需要部署应用的从服务器的增多,对部署服务器带宽的要 求就越来越高,分发的速度也就越来越慢,并且非常容易引起部署服务器崩 溃。而若采用各从服务器轮流排队由同一台部署服务器对其进行部署的情况, 则部署周期过长。

2、如果为了避免上述缺点的发生而对服务器集群进行分层,则需要通 过多层的C/S架构以使得每台部署服务器向有限的从服务器分发应用部署 包。这样就意味着维护成本、管理成本和开发成本的上升。本来一个应用的 负载均衡设备后的所有后端服务器的软件环境往往是统一的,为了应用的部 署,人为地划分出部署层次来。每个层次的部署节点都要单独地进行管理、 操作、维护,每个部署节点还要为了向不同的应用服务器分发应用部署包而 开发不同的部署代码,这样就造成了严重的浪费,使得服务器集群的维护和 管理变得越来越复杂。

3、同时,已知的基于C/S架构的部署技术,无法满足在大规模服务器集 群中快速部署应用的需求,一个对千台服务器的集群部署动辄需要耗费1~2 个小时的时间,严重地影响了应用上线的时间进度。

发明内容

为了解决上述问题,本申请一个方面提出了一种大规模服务器集群应用 部署方法,所述方法包括:步骤1:所述大规模服务器集群中的中心部署服 务器将一个应用的部署包切分成多个片段,并将切分后的多个片段部署于所 述大规模服务器集群中的多个应用服务器上;以及步骤2:各个所述应用服 务器在被部署完所述部署包的所有片段后,将所述所有片段拼合成一个完整 的部署包。

本申请的另一个方面提出了一种大规模服务器集群,所述大规模服务器 集群包括:一个中心部署服务器和多个应用服务器,其中,所述中心部署服 务器用于将一个应用的部署包切分成多个片段,并将该切分后的多个片段部 署于所述多个应用服务器上;以及各个所述应用服务器在被部署完所述部署 包的所有片段后,将所述所有片段拼合成一个完整的部署包。

本申请的实现大规模服务器集群应用快速部署的方法及集群大大减轻了 部署服务器的性能负载,成许多倍地加快了从部署服务器向应用服务器分发 应用部署包的速度和效率,基本上消除部署服务器的处理瓶颈和网络资源瓶 颈,可以做到应用部署的时间即发布时间几乎与集群内的应用服务器数量无 关,也无需如传统的分层分发技术的C/S架构那样维护大量的分层部署节点, 还降低了开发和维护的难度。

通过以下参照附图对本申请实施例的说明,本申请的上述以及其它目的、 特征和优点将更加明显。

附图说明

下面将参照所附附图来描述本申请的实施例,其中:

图1是已知技术中采用C/S架构部署应用的示意图;

图2是已知技术中采用分层分发技术的C/S架构部署应用的示意图;

图3是采用本申请的实现大规模服务器集群应用快速部署的方法部署应 用的示意图;

图4是本申请的实现大规模服务器集群应用快速部署的方法的一个实施 例的示意流程图;

图5是图4所述的方法的一个实施例的示意流程图;以及

图6是图4所述的方法的另一个实施例的示意流程图。

具体实施方式

在下文中,将参照附图详细描述本申请的实施例。

图3是采用本申请的实现大规模服务器集群应用快速部署的方法部署应 用的示意图。如图3中所示,本申请的大规模服务器集群包括一个中心部署 服务器和多个应用服务器。为了便于说明,图3中仅示出了5个应用服务器, 即应用服务器1、应用服务器2、应用服务器3...应用服务器M...以及应用服 务器N,然而本申请所涉及的服务器集群中的应用服务器的实际数目可以为 成千上万个。

不同于已知技术中的C/S架构和分层的C/S架构,在本申请中,大规模 服务器集群的中心部署服务器把一个应用的部署包切分成多个应用部署片段 (下文简称片段),例如可按照固定大小切分成多个片段,并将这些片段的 每一个分别部署(例如随机部署)到不同的应用服务器上。

图3中的箭头示例性地表示了应用部署片段在网络中可能的一种流向。 由于每个应用部署片段很小,所以只需要很少的网络资源和很短的时间就能 将这些片段部署到应用服务器上。然后每个应用服务器通过中心部署服务器 提供的关于这些片段的分布路径信息向其它已部署了一些片段的应用服务器 拉取自己需要的片段。例如,应用服务器3可以不直接从中心部署服务器获 得应用部署包的片段,而是从应用服务器1和N获得应用部署包的不同片段, 并且还可以从其它应用服务器获得自己所需的片段。作为另一个实施例,这 时应用服务器仍然可以从中心部署服务器拉取片段,以便充分利用中心部署 服务器的资源。同时,其它应用服务器也可以从应用服务器3获得所需的片 段。

每一个应用服务器在获得了该应用的部署包的所有片段之后,将这些片 段拼合成一个完整的部署包。

在部署过程中,集群中的每一个应用服务器都可以把自己的关于当前已 经拉取的片段的片段信息反馈给中心部署服务器,由中心部署服务器统计汇 总,以指示其它应用服务器拉取片段的路径,集群中的每一个应用服务器都 可以向其它应用服务器提供自己已经拉取的片段,每一个应用服务器都可以 从最优(例如最近或速度最快的)路径来获得所需要的片段,因此消除了传 统C/S部署技术中存在的部署服务器处理瓶颈和网络资源瓶颈。

根据本发明的一个实施例,本申请的大规模服务器集群应用部署方法可 以分为两个基本步骤,即,在第一个步骤中,所述大规模服务器集群中的中 心部署服务器将一个应用的部署包切分成多个片段,并将该切分后的多个片 段部署于所述大规模服务器集群中的多个应用服务器上;在第二个步骤中, 所述应用服务器在被部署完所述部署包的所有片段后,将所述所有片段拼合 成一个完整的部署包。

图4是本申请的实现大规模服务器集群应用快速部署的方法的步骤的一 个实施例的示意流程图,图4结合图3一起示意性地示出了本申请的实现大 规模服务器集群应用快速部署的方法的一个更具体的实施例。

下面将结合如图4中所示的各个步骤来进一步描述本申请实现大规模服 务器集群应用快速部署的方法。

在步骤S0,开始启动应用部署。

在步骤S1,大规模服务器集群的中心部署服务器将一个应用的部署包切 分成多个片段。

被切分后的多个片段将被部署于多个应用服务器上。例如,由中心部署 服务器向相应应用服务器发送用于通知拉取片段的拉取指令,然后,在步骤 S2,由接收到拉取指令的相应应用服务器分别到中心部署服务器拉取片段。 作为另一个替代方案,也可以将步骤S1替换为中心部署服务器直接将切分 后的片段分别发送至相应的应用服务器上,这样就可以省略如图4中所示的 步骤S2。

在图4所示的步骤S2中,相应应用服务器接收到拉取指令后分别到中 心部署服务器拉取片段。

由于各应用服务器此时还缺少其它片段,所以各应用服务器在随后的过 程中将会继续从中心部署服务器或其它应用服务器拉取其它尚未拉取的片 段。应用服务器可以通过从中心服务器上获取所需要的片段的路径的方式去 拉取尚未拉取的片段。如在图4所示的步骤S3中,应用服务器主动到中心 部署服务器上获取所需要的其它片段的路径。可以理解,这里也可以有替换 的方案,即,中心部署服务器也可以将它所知道的片段的路径信息主动分发 给各个应用服务器,让应用服务器自己选择合适的路径来拉取所需要的片段。

接下来,在步骤S4,应用服务器按照获取所需要的其它片段的路径去拉 取所需要的其它片段,然后向中心部署服务器报告关于该其它片段的片段信 息。

最后,在步骤S5,当一个应用服务器在拉取完应用的部署包的所有片段 后,将所有片段拼合成一个完整的部署包。

根据一个实施例,在步骤S1中,中心部署服务器在切分部署包的同时, 将所切分的多个片段与将要部署的应用服务器对应。例如,中心部署服务器 可以根据将要部署的应用服务器的连接状态、负载、IP地址、时间以及机器 名中的一个或任意组合计算出的随机数或者哈希值,将将要部署的应用服务 器与多个片段一一对应,并将对应关系包含在拉取指令中发送给将要部署的 应用服务器。然后在步骤S2中,将要部署的应用服务器按照拉取指令中的 对应关系指定的片段到中心部署服务器上拉取片段。或者,作为另一种方案, 在步骤S1中,将所切分的多个片段与将要部署的应用服务器一一对应之后, 直接根据所述对应关系将相应片段发送至相应的应用服务器上,相应的应用 服务器直接接收中心部署服务器主动发送过来的片段,那么,则可以省略步 骤S2。

根据另一个实施例,在步骤S1中,中心部署服务器只将部署包切分成 多个片段,而在步骤S2中,在应用服务器到中心部署服务器拉取片段的过 程中,将所切分的多个片段一一对应到将要部署的应用服务器。例如,可以 按应用服务器连接到中心部署服务器的连接先后次序依次拉取所切分的片 段,或者按负载均衡原则负载较轻的应用服务器优先拉取所切分的片段,或 者按IP地址、机器名等的一个或任意组合指定应用服务器以便使部署时负载 分布均匀。

在步骤S4与步骤S5之间,应用服务器可以判断是否已拉取完部署包的 所有片段,如果判断结果为尚未拉取完所有片段,就返回到步骤S3,如果判 断结果为已经拉取完所有片段,则进入步骤S5。

应当理解,中心部署服务器第一次向应用服务器部署片段时,中心服务 器知道哪个片段部署在哪个应用服务器上,因此,这时没有必要由应用服务 器向中心部署服务器报告片段信息,中心部署服务器只要记录该片段信息即 可。如果中心部署服务器不知道哪个片段部署在哪个应用服务器上,那么, 将由应用服务器向中心部署服务器报告片段信息。关于片段的片段信息可以 包括所述片段的地址以及该片段的代号,例如,所拉取片段的标识、所拉取 片段被存储在当前应用服务器上的目录路径、以及当前应用服务器的地址等 信息。

在步骤S3中,中心部署服务器可以根据所需要的片段当前所在的应用 服务器的连接状态、负载、IP地址、时间以及机器名中的一个或任意组合计 算出的随机数或者哈希值,提供应用服务器所需要的片段的路径。例如,可 以将所需要的片段当前所在的应用服务器中负载较轻的应用服务器作为优先 拉取路径,以便使部署时负载分布均匀。

另外,在步骤S5或S5之前的任一步骤或任意步骤的组合中,应用服务 器可以获得应用的部署包的MD5码,以便于应用服务器在步骤S5中使用 MD5码对所拼合成的部署包进行校验。

作为另一个实施例,中心部署服务器为应用服务器提供的所需要的片段 的路径可以包括所述中心部署服务器自身,即,在步骤S3中,中心部署服 务器首次部署完毕所切分的片段之后,仍然可以作为片段的提供者继续参与 到以后的部署过程中。

图4所示的各步骤所描述的仅仅是一种可能的实施方式,旨在说明本发 明的精神和实质,根据具体的情况,各步骤可以被适当修改、拆分或组合。

图5是图4所述的方法的一个实施例的示意流程图,其中假设所涉及的 大规模服务器集群包括一个中心部署服务器和N个应用服务器,例如N可以 是2000以上,甚至超过10000。

如图5中所示,在步骤S10,开始启动应用部署。

在步骤S 11,大规模服务器集群的中心部署服务器把一个应用的部署包 切分成N个应用部署片段。本领域技术人员可以根据实际情况(例如集群中 需要部署的应用服务器数量或安装包大小)按照各种标准将应用的部署包切 分成N个应用部署片段。例如,可以将一个应用的部署包按照固定大小切分 成N个部署片段,通过切分得到的部署片段也可称为“分片”。

中心部署服务器将将要部署的N个应用服务器一一对应到这N个片段。 例如,中心部署服务器可以根据将要部署的各应用服务器的连接状态、负载、 IP地址、时间以及机器名中的一个或任意组合计算出的随机数或者哈希值, 将各应用服务器一一对应到不同的具体片段。比如,应用服务器1对应于第 E个片段,应用服务器2对应于第F个片段,应用服务器3对应于第H个片 段。

然后,中心部署服务器向这N个应用服务器发送包含上述对应关系的拉 取指令,通知或邀请这N个应用服务器到中心部署服务器去拉取已经拆分好 的应用部署片段。

在步骤S12,各应用服务器在接收到拉取指令之后,自动启动用于拉取 其指定片段的相关进程。然后,各应用服务器分别到中心部署服务器拉取片 段,并可以获得该应用的部署包的MD5码。比如,应用服务器1拉取了第E 个片段,应用服务器2拉取了第F个片段,应用服务器3拉取了第H个片段。 每一个应用服务器一旦成功拉取完所部署的一个片段,就向中心部署服务器 报告关于该片段的片段信息,从而中心部署服务器可以实时统计各应用服务 器已获取的片段的片段信息。

应用服务器所报告的片段信息包括用于拉取该片段所需要的信息。本领 域技术人员可以根据实际情况或各种需要,按照各种标准来配置片段的片段 信息。

例如,片段的片段信息可以包括所述片段的地址以及该片段的代号,例 如,所拉取片段的标识、所拉取片段备存储在当前应用服务器上的目录路径、 以及当前应用服务器的地址等信息。

然后,在步骤S13,各应用服务器到中心部署服务器上获取各自所需要 的其它部署片段的路径。中心部署服务器可以根据应用服务器所需要的片段 当前所在的应用服务器的连接状态、负载、IP地址、时间以及机器名中的一 个或任意组合计算出的随机数或者哈希值,为应用服务器提供所需要的片段 的片段路径。例如,可以将负载较轻的应用服务器作为优先拉取路径,以便 使部署时负载分布均匀。

然后,在步骤S14,各应用服务器根据中心部署服务器提供的片段路径 到其他应用服务器拉取所需要的部署片段。

比如,应用服务器1拉取了第E个片段,应用服务器2拉取了第F个片 段,应用服务器3拉取了第H个片段。当应用服务器1从中心部署服务器获 得了片段F、H的片段信息后,就可以从应用服务器2、3上分别拉取片段F、 H。

然后,在步骤S15,每一个应用服务器一旦成功拉取完一个片段就向中 心部署服务器报告各自的关于该片段的片段信息。

也就是说,在整个部署期间,中心部署服务器一直实时统计汇总各应用 服务器反馈的各自的关于当前已经拉取的片段的片段信息,并整理,以便于 尚未部署完毕的应用服务器查询使用。应用服务器分别从中心部署服务器获 得尚未拉取的其它片段的片段信息,并根据该信息从其它应用服务器拉取自 己尚未拉取的其它片段。作为另一个实施例,中心部署服务器为应用服务器 提供的所需要的片段的路径可以包括所述中心部署服务器自身,即,在步骤 S13中,中心部署服务器首次部署完毕所切分的片段之后,仍然可以作为片 段的提供者继续参与到以后的部署过程中,在条件适当的情况下为合适的应 用服务器提供一定量的片段。其中,在步骤S16,应用服务器判断是否已经 拉取完将要部署的应用的部署包的所有片段。如果判断的结果为尚未拉取完 该应用的部署包的所有片段,就重复进行上述步骤S13至S16,以从其它应 用服务器拉取自己尚未拉取的片段。

同时,本领域普通技术人员可以理解,图5中的步骤S11、S12(即,在 步骤S11中中心部署服务器切分部署包并指定对应的应用服务器,在步骤S12 中应用服务器按照对应关系拉取所切分的片段。)也可以按照图4中的步骤 S1、S2那样有另一种实施方式。简言之,在步骤S11只切分部署包,而在步 骤S12中,在应用服务器拉取片段的过程中让应用服务器与所切分的片段对 应。

如果应用服务器在步骤S16判断已拉取完该应用的部署包的所有片段, 那么该应用服务器就在步骤S17将该应用的部署包的所有片段拼合成一个完 整的部署包,并校验该应用的部署包的MD5值,从而完成了在该应用服务 器上的应用部署。最终,通过图5中步骤S10至步骤S17的过程,可以以极 快的速度平稳完成集群中所有应用服务器的应用部署。

图6是图4所述的方法的另一个实施例的示意流程图。

图6与图5的不同之处在于,在步骤S21,中心部署服务器将应用部署 包仅拆分成M个片段并向所有N个应用服务器发送拉取指令,其中M<N, 且M为大于1的自然数,例如,N可以超过10000,M可以是几十、几百或 几千,预先指定M个应用服务器可以实际拉取到这M个片段,例如,中心 部署服务器可以根据将要部署的应用服务器的连接状态、负载、IP地址、时 间以及机器名中的一个或任意组合计算出的随机数或者哈希值,指定M个将 要部署的应用服务器;以及在步骤S22,由M个应用服务器去拉取所切分的 片段,根据一个实施例,在所有N个应用服务器中,预先指定的M个应用 服务器接收到拉取指令后到中心部署服务器分别拉取一个不同的片段,这时, 这M个应用服务器之外的其它应用服务器暂不从中心服务器拉取片段,这M 个应用服务器在分别拉取完一个不同的片段之后向中心部署服务器报告关于 该片段的片段信息。

接下来的步骤与图5中一样,由于所有N个应用服务器都收到了拉取指 令,所以会不停向中心服务器请求并获取所需要的片段的路径。然后所有N 个应用服务器会执行与图5中S13至S17相同的步骤S23至S27,从而分别 拉取各自所需要的片段。最终,通过图6中步骤S20至步骤S27的过程,可 以以极快的速度平稳完成集群中所有应用服务器的应用部署。

同时,本领域普通技术人员可以理解,图6中的步骤S21、S22(在步骤 S21中中心部署服务器切分部署包并指定M个将要部署的应用服务器与所切 分的M个片段的对应关系,在步骤S22中应用服务器按照对应关系拉取所切 分的片段。)也可以按照图4中的S1、S2那样有不同的实施方式。简言之, 在步骤S21只切分部署包,而在步骤S22中在应用服务器拉取片段的过程中 让M个将要部署的应用服务器与所切分的M个片段对应,即,在步骤S21 中并不具体指定由哪M个应用服务器拉取片段,而是在步骤S22中,在应用 服务器到中心部署服务器拉取片段的过程中,指定M个应用服务器来拉取片 段。例如,可以按前M个应用服务器连接到中心部署服务器的连接先后次序 依次拉取所切分的片段,或者按照负载均衡原则,例如负载较轻的M个应用 服务器优先拉取所切分的片段,或者按IP地址、机器名等参数分片划分出M 个代表应用服务器以便使部署时负载分布均匀。

与图5的实施例相比,图6的实施例适合于处理更大规模的服务器集群, 这是因为,尽管集群中的应用服务器总数N很大,但是可以选择将应用的部 署包切分成合适大小的M块,M可以远小于N,这样,就可以使部署过程以 缓和的方式开始,从而能够进一步避免初始拉取时可能产生的网络拥挤。

通过上面结合图3至图6对本申请的实现大规模服务器集群应用快速部 署的方法的实施例的描述,可以看到,由于本申请所针对的大规模服务器集 群中的应用服务器的数目为成千上万,而每一个应用服务器都可以作为一个 部署服务器向其它应用服务器分发自己已经拉取的应用部署包的片段,从而 与传统的C/S架构的部署技术相比,大大减轻了部署服务器的性能负载。并 且由于各应用服务器可以同时向多个同级的应用服务器并行地拉取不同的片 段,成许多倍地加快了从部署服务器向应用服务器分发应用部署包的速度和 效率。而且,集群中的应用服务器越多,部署得也越快。这样一来,就可以 从基本上消除部署服务器的处理瓶颈和网络资源瓶颈。

采用本申请的实现大规模服务器集群应用快速部署的方法、集群及装置, 在网络稳定的情况下,可以做到应用部署的时间即发布时间几乎与集群内的 应用服务器数量无关,部署成千上万个应用服务器的时间与目前部署一至两 个应用服务器所需要的时间几乎相等。

而且,本申请的大规模服务器集群应用快速部署的方法也无需如传统的 分层分发技术的C/S架构那样维护大量的分层部署节点。另外,由于每个应 用服务器上的用于拉取部署包的代码(即进程)是一致的,因此还降低了开 发和维护的难度。

虽然已参照典型实施例描述了本申请,但应当理解,所用的术语是说明 和示例性、而非限制性的术语。由于本申请能够以多种形式具体实施而不脱 离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节, 而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求 或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。

在下文中,将参照附图详细描述本申请的实施例。

图3是采用本申请的实现大规模服务器集群应用快速部署的方法部署应 用的示意图。如图3中所示,本申请的大规模服务器集群包括一个中心部署 服务器和多个应用服务器。为了便于说明,图3中仅示出了5个应用服务器, 即应用服务器1、应用服务器2、应用服务器3...应用服务器M...以及应用服 务器N,然而本申请所涉及的服务器集群中的应用服务器的实际数目可以为 成千上万个。

不同于已知技术中的C/S架构和分层的C/S架构,在本申请中,大规模 服务器集群的中心部署服务器把一个应用的部署包切分成多个应用部署片段 (下文简称片段),例如可按照固定大小切分成多个片段,并将这些片段的 每一个分别部署(例如随机部署)到不同的应用服务器上。

图3中的箭头示例性地表示了应用部署片段在网络中可能的一种流向。 由于每个应用部署片段很小,所以只需要很少的网络资源和很短的时间就能 将这些片段部署到应用服务器上。然后每个应用服务器通过中心部署服务器 提供的关于这些片段的分布路径信息向其它已部署了一些片段的应用服务器 拉取自己需要的片段。例如,应用服务器3可以不直接从中心部署服务器获 得应用部署包的片段,而是从应用服务器1和N获得应用部署包的不同片段, 并且还可以从其它应用服务器获得自己所需的片段。作为另一个实施例,这 时应用服务器仍然可以从中心部署服务器拉取片段,以便充分利用中心部署 服务器的资源。同时,其它应用服务器也可以从应用服务器3获得所需的片 段。

每一个应用服务器在获得了该应用的部署包的所有片段之后,将这些片 段拼合成一个完整的部署包。

在部署过程中,集群中的每一个应用服务器都可以把自己的关于当前已 经拉取的片段的片段信息反馈给中心部署服务器,由中心部署服务器统计汇 总,以指示其它应用服务器拉取片段的路径,集群中的每一个应用服务器都 可以向其它应用服务器提供自己已经拉取的片段,每一个应用服务器都可以 从最优(例如最近或速度最快的)路径来获得所需要的片段,因此消除了传 统C/S部署技术中存在的部署服务器处理瓶颈和网络资源瓶颈。

根据本发明的一个实施例,本申请的大规模服务器集群应用部署方法可 以分为两个基本步骤,即,在第一个步骤中,所述大规模服务器集群中的中 心部署服务器将一个应用的部署包切分成多个片段,并将该切分后的多个片 段部署于所述大规模服务器集群中的多个应用服务器上;在第二个步骤中, 所述应用服务器在被部署完所述部署包的所有片段后,将所述所有片段拼合 成一个完整的部署包。

图4是本申请的实现大规模服务器集群应用快速部署的方法的步骤的一 个实施例的示意流程图,图4结合图3一起示意性地示出了本申请的实现大 规模服务器集群应用快速部署的方法的一个更具体的实施例。

下面将结合如图4中所示的各个步骤来进一步描述本申请实现大规模服 务器集群应用快速部署的方法。

在步骤S0,开始启动应用部署。

在步骤S1,大规模服务器集群的中心部署服务器将一个应用的部署包切 分成多个片段。

被切分后的多个片段将被部署于多个应用服务器上。例如,由中心部署 服务器向相应应用服务器发送用于通知拉取片段的拉取指令,然后,在步骤 S2,由接收到拉取指令的相应应用服务器分别到中心部署服务器拉取片段。 作为另一个替代方案,也可以将步骤S1替换为中心部署服务器直接将切分 后的片段分别发送至相应的应用服务器上,这样就可以省略如图4中所示的 步骤S2。

在图4所示的步骤S2中,相应应用服务器接收到拉取指令后分别到中 心部署服务器拉取片段。

由于各应用服务器此时还缺少其它片段,所以各应用服务器在随后的过 程中将会继续从中心部署服务器或其它应用服务器拉取其它尚未拉取的片 段。应用服务器可以通过从中心服务器上获取所需要的片段的路径的方式去 拉取尚未拉取的片段。如在图4所示的步骤S3中,应用服务器主动到中心 部署服务器上获取所需要的其它片段的路径。可以理解,这里也可以有替换 的方案,即,中心部署服务器也可以将它所知道的片段的路径信息主动分发 给各个应用服务器,让应用服务器自己选择合适的路径来拉取所需要的片段。

接下来,在步骤S4,应用服务器按照获取所需要的其它片段的路径去拉 取所需要的其它片段,然后向中心部署服务器报告关于该其它片段的片段信 息。

最后,在步骤S5,当一个应用服务器在拉取完应用的部署包的所有片段 后,将所有片段拼合成一个完整的部署包。

根据一个实施例,在步骤S1中,中心部署服务器在切分部署包的同时, 将所切分的多个片段与将要部署的应用服务器对应。例如,中心部署服务器 可以根据将要部署的应用服务器的连接状态、负载、IP地址、时间以及机器 名中的一个或任意组合计算出的随机数或者哈希值,将将要部署的应用服务 器与多个片段一一对应,并将对应关系包含在拉取指令中发送给将要部署的 应用服务器。然后在步骤S2中,将要部署的应用服务器按照拉取指令中的 对应关系指定的片段到中心部署服务器上拉取片段。或者,作为另一种方案, 在步骤S1中,将所切分的多个片段与将要部署的应用服务器一一对应之后, 直接根据所述对应关系将相应片段发送至相应的应用服务器上,相应的应用 服务器直接接收中心部署服务器主动发送过来的片段,那么,则可以省略步 骤S2。

根据另一个实施例,在步骤S1中,中心部署服务器只将部署包切分成 多个片段,而在步骤S2中,在应用服务器到中心部署服务器拉取片段的过 程中,将所切分的多个片段一一对应到将要部署的应用服务器。例如,可以 按应用服务器连接到中心部署服务器的连接先后次序依次拉取所切分的片 段,或者按负载均衡原则负载较轻的应用服务器优先拉取所切分的片段,或 者按IP地址、机器名等的一个或任意组合指定应用服务器以便使部署时负载 分布均匀。

在步骤S4与步骤S5之间,应用服务器可以判断是否已拉取完部署包的 所有片段,如果判断结果为尚未拉取完所有片段,就返回到步骤S3,如果判 断结果为已经拉取完所有片段,则进入步骤S5。

应当理解,中心部署服务器第一次向应用服务器部署片段时,中心服务 器知道哪个片段部署在哪个应用服务器上,因此,这时没有必要由应用服务 器向中心部署服务器报告片段信息,中心部署服务器只要记录该片段信息即 可。如果中心部署服务器不知道哪个片段部署在哪个应用服务器上,那么, 将由应用服务器向中心部署服务器报告片段信息。关于片段的片段信息可以 包括所述片段的地址以及该片段的代号,例如,所拉取片段的标识、所拉取 片段被存储在当前应用服务器上的目录路径、以及当前应用服务器的地址等 信息。

在步骤S3中,中心部署服务器可以根据所需要的片段当前所在的应用 服务器的连接状态、负载、IP地址、时间以及机器名中的一个或任意组合计 算出的随机数或者哈希值,提供应用服务器所需要的片段的路径。例如,可 以将所需要的片段当前所在的应用服务器中负载较轻的应用服务器作为优先 拉取路径,以便使部署时负载分布均匀。

另外,在步骤S5或S5之前的任一步骤或任意步骤的组合中,应用服务 器可以获得应用的部署包的MD5码,以便于应用服务器在步骤S5中使用 MD5码对所拼合成的部署包进行校验。

作为另一个实施例,中心部署服务器为应用服务器提供的所需要的片段 的路径可以包括所述中心部署服务器自身,即,在步骤S3中,中心部署服 务器首次部署完毕所切分的片段之后,仍然可以作为片段的提供者继续参与 到以后的部署过程中。

图4所示的各步骤所描述的仅仅是一种可能的实施方式,旨在说明本发 明的精神和实质,根据具体的情况,各步骤可以被适当修改、拆分或组合。

图5是图4所述的方法的一个实施例的示意流程图,其中假设所涉及的 大规模服务器集群包括一个中心部署服务器和N个应用服务器,例如N可以 是2000以上,甚至超过10000。

如图5中所示,在步骤S10,开始启动应用部署。

在步骤S 11,大规模服务器集群的中心部署服务器把一个应用的部署包 切分成N个应用部署片段。本领域技术人员可以根据实际情况(例如集群中 需要部署的应用服务器数量或安装包大小)按照各种标准将应用的部署包切 分成N个应用部署片段。例如,可以将一个应用的部署包按照固定大小切分 成N个部署片段,通过切分得到的部署片段也可称为“分片”。

中心部署服务器将将要部署的N个应用服务器一一对应到这N个片段。 例如,中心部署服务器可以根据将要部署的各应用服务器的连接状态、负载、 IP地址、时间以及机器名中的一个或任意组合计算出的随机数或者哈希值, 将各应用服务器一一对应到不同的具体片段。比如,应用服务器1对应于第 E个片段,应用服务器2对应于第F个片段,应用服务器3对应于第H个片 段。

然后,中心部署服务器向这N个应用服务器发送包含上述对应关系的拉 取指令,通知或邀请这N个应用服务器到中心部署服务器去拉取已经拆分好 的应用部署片段。

在步骤S12,各应用服务器在接收到拉取指令之后,自动启动用于拉取 其指定片段的相关进程。然后,各应用服务器分别到中心部署服务器拉取片 段,并可以获得该应用的部署包的MD5码。比如,应用服务器1拉取了第E 个片段,应用服务器2拉取了第F个片段,应用服务器3拉取了第H个片段。 每一个应用服务器一旦成功拉取完所部署的一个片段,就向中心部署服务器 报告关于该片段的片段信息,从而中心部署服务器可以实时统计各应用服务 器已获取的片段的片段信息。

应用服务器所报告的片段信息包括用于拉取该片段所需要的信息。本领 域技术人员可以根据实际情况或各种需要,按照各种标准来配置片段的片段 信息。

例如,片段的片段信息可以包括所述片段的地址以及该片段的代号,例 如,所拉取片段的标识、所拉取片段备存储在当前应用服务器上的目录路径、 以及当前应用服务器的地址等信息。

然后,在步骤S13,各应用服务器到中心部署服务器上获取各自所需要 的其它部署片段的路径。中心部署服务器可以根据应用服务器所需要的片段 当前所在的应用服务器的连接状态、负载、IP地址、时间以及机器名中的一 个或任意组合计算出的随机数或者哈希值,为应用服务器提供所需要的片段 的片段路径。例如,可以将负载较轻的应用服务器作为优先拉取路径,以便 使部署时负载分布均匀。

然后,在步骤S14,各应用服务器根据中心部署服务器提供的片段路径 到其他应用服务器拉取所需要的部署片段。

比如,应用服务器1拉取了第E个片段,应用服务器2拉取了第F个片 段,应用服务器3拉取了第H个片段。当应用服务器1从中心部署服务器获 得了片段F、H的片段信息后,就可以从应用服务器2、3上分别拉取片段F、 H。

然后,在步骤S15,每一个应用服务器一旦成功拉取完一个片段就向中 心部署服务器报告各自的关于该片段的片段信息。

也就是说,在整个部署期间,中心部署服务器一直实时统计汇总各应用 服务器反馈的各自的关于当前已经拉取的片段的片段信息,并整理,以便于 尚未部署完毕的应用服务器查询使用。应用服务器分别从中心部署服务器获 得尚未拉取的其它片段的片段信息,并根据该信息从其它应用服务器拉取自 己尚未拉取的其它片段。作为另一个实施例,中心部署服务器为应用服务器 提供的所需要的片段的路径可以包括所述中心部署服务器自身,即,在步骤 S13中,中心部署服务器首次部署完毕所切分的片段之后,仍然可以作为片 段的提供者继续参与到以后的部署过程中,在条件适当的情况下为合适的应 用服务器提供一定量的片段。其中,在步骤S16,应用服务器判断是否已经 拉取完将要部署的应用的部署包的所有片段。如果判断的结果为尚未拉取完 该应用的部署包的所有片段,就重复进行上述步骤S13至S16,以从其它应 用服务器拉取自己尚未拉取的片段。

同时,本领域普通技术人员可以理解,图5中的步骤S11、S12(即,在 步骤S11中中心部署服务器切分部署包并指定对应的应用服务器,在步骤S12 中应用服务器按照对应关系拉取所切分的片段。)也可以按照图4中的步骤 S1、S2那样有另一种实施方式。简言之,在步骤S11只切分部署包,而在步 骤S12中,在应用服务器拉取片段的过程中让应用服务器与所切分的片段对 应。

如果应用服务器在步骤S16判断已拉取完该应用的部署包的所有片段, 那么该应用服务器就在步骤S17将该应用的部署包的所有片段拼合成一个完 整的部署包,并校验该应用的部署包的MD5值,从而完成了在该应用服务 器上的应用部署。最终,通过图5中步骤S10至步骤S17的过程,可以以极 快的速度平稳完成集群中所有应用服务器的应用部署。

图6是图4所述的方法的另一个实施例的示意流程图。

图6与图5的不同之处在于,在步骤S21,中心部署服务器将应用部署 包仅拆分成M个片段并向所有N个应用服务器发送拉取指令,其中M<N, 且M为大于1的自然数,例如,N可以超过10000,M可以是几十、几百或 几千,预先指定M个应用服务器可以实际拉取到这M个片段,例如,中心 部署服务器可以根据将要部署的应用服务器的连接状态、负载、IP地址、时 间以及机器名中的一个或任意组合计算出的随机数或者哈希值,指定M个将 要部署的应用服务器;以及在步骤S22,由M个应用服务器去拉取所切分的 片段,根据一个实施例,在所有N个应用服务器中,预先指定的M个应用 服务器接收到拉取指令后到中心部署服务器分别拉取一个不同的片段,这时, 这M个应用服务器之外的其它应用服务器暂不从中心服务器拉取片段,这M 个应用服务器在分别拉取完一个不同的片段之后向中心部署服务器报告关于 该片段的片段信息。

接下来的步骤与图5中一样,由于所有N个应用服务器都收到了拉取指 令,所以会不停向中心服务器请求并获取所需要的片段的路径。然后所有N 个应用服务器会执行与图5中S13至S17相同的步骤S23至S27,从而分别 拉取各自所需要的片段。最终,通过图6中步骤S20至步骤S27的过程,可 以以极快的速度平稳完成集群中所有应用服务器的应用部署。

同时,本领域普通技术人员可以理解,图6中的步骤S21、S22(在步骤 S21中中心部署服务器切分部署包并指定M个将要部署的应用服务器与所切 分的M个片段的对应关系,在步骤S22中应用服务器按照对应关系拉取所切 分的片段。)也可以按照图4中的S1、S2那样有不同的实施方式。简言之, 在步骤S21只切分部署包,而在步骤S22中在应用服务器拉取片段的过程中 让M个将要部署的应用服务器与所切分的M个片段对应,即,在步骤S21 中并不具体指定由哪M个应用服务器拉取片段,而是在步骤S22中,在应用 服务器到中心部署服务器拉取片段的过程中,指定M个应用服务器来拉取片 段。例如,可以按前M个应用服务器连接到中心部署服务器的连接先后次序 依次拉取所切分的片段,或者按照负载均衡原则,例如负载较轻的M个应用 服务器优先拉取所切分的片段,或者按IP地址、机器名等参数分片划分出M 个代表应用服务器以便使部署时负载分布均匀。

与图5的实施例相比,图6的实施例适合于处理更大规模的服务器集群, 这是因为,尽管集群中的应用服务器总数N很大,但是可以选择将应用的部 署包切分成合适大小的M块,M可以远小于N,这样,就可以使部署过程以 缓和的方式开始,从而能够进一步避免初始拉取时可能产生的网络拥挤。

通过上面结合图3至图6对本申请的实现大规模服务器集群应用快速部 署的方法的实施例的描述,可以看到,由于本申请所针对的大规模服务器集 群中的应用服务器的数目为成千上万,而每一个应用服务器都可以作为一个 部署服务器向其它应用服务器分发自己已经拉取的应用部署包的片段,从而 与传统的C/S架构的部署技术相比,大大减轻了部署服务器的性能负载。并 且由于各应用服务器可以同时向多个同级的应用服务器并行地拉取不同的片 段,成许多倍地加快了从部署服务器向应用服务器分发应用部署包的速度和 效率。而且,集群中的应用服务器越多,部署得也越快。这样一来,就可以 从基本上消除部署服务器的处理瓶颈和网络资源瓶颈。

采用本申请的实现大规模服务器集群应用快速部署的方法、集群及装置, 在网络稳定的情况下,可以做到应用部署的时间即发布时间几乎与集群内的 应用服务器数量无关,部署成千上万个应用服务器的时间与目前部署一至两 个应用服务器所需要的时间几乎相等。

而且,本申请的大规模服务器集群应用快速部署的方法也无需如传统的 分层分发技术的C/S架构那样维护大量的分层部署节点。另外,由于每个应 用服务器上的用于拉取部署包的代码(即进程)是一致的,因此还降低了开 发和维护的难度。

虽然已参照典型实施例描述了本申请,但应当理解,所用的术语是说明 和示例性、而非限制性的术语。由于本申请能够以多种形式具体实施而不脱 离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节, 而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求 或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。

著录项导出服务
支持用户对专利代理事项、申请人或者专利权人事项等数十种著录项字段信息以excel的格式进行批量导出,还送7天云端存储,无需重复下载。
专利全文翻译服务
提供对专利标题、摘要、全文等内容即时响应的英文转换成中文的在线翻译,100万字符约为80-100篇专利。
专利批量下载服务
提供著录项、摘要、权利要求、说明书全文信息的PDF或word格式的导出和下载
专利年费导出服务
提供专利年费获取,并生成Excel格式批量导出和下载
专利年费监控服务
提供中国有效专利的年费监控服务,增加缴费提醒功能,实时监控年费数据
专利价值度报告导出
专利探索者自创专利价值度分析报告导出服务,从技术价值、经济价值、法律价值三方面评估专利的价值
荷包充值
会员充值大放送,最高可送5000元!
个性化你的检索平台
使用键盘键 进行切换

© Copyright  2017  江苏佰腾科技有限公司  版权所有  |

苏ICP备09077504号-16  

 苏公网安备 32041202001279号

系统日志

数据更新

 建议使用Chrome、360浏览器

联系我们
联系我们
群号:580132322
专利探索者服务号
意见反馈