CN104410531B - 冗余的系统架构方法 - Google Patents
冗余的系统架构方法 Download PDFInfo
- Publication number
- CN104410531B CN104410531B CN201410764728.1A CN201410764728A CN104410531B CN 104410531 B CN104410531 B CN 104410531B CN 201410764728 A CN201410764728 A CN 201410764728A CN 104410531 B CN104410531 B CN 104410531B
- Authority
- CN
- China
- Prior art keywords
- server
- user
- request
- load cluster
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种计算机系统架构方法,公开了一种冗余的系统架构方法,包括以下具体步骤:使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群;所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求。本发明的优点在于,采用无中心节点节点的对称结构,无单点故障缺陷,存储容量和性能可以线性扩展,且支持数据自动恢复,自动化程度高。
Description
技术领域
本发明涉及一种计算机系统架构方法,特别涉及一种冗余的系统架构方法。
背景技术
在互联网上面,网站为用户提供原始的内容访问,同时为用户提供交互操作。提供稳定可靠的服务,可以给用户带来良好的体验,保证用户的正常访问使用,在网站的可靠性方面,有很多的技术可以来提供,这类技术可以分为:
高可用:保证服务的可靠,稳定,实现故障的屏蔽,避免了单点故障。
高性能:多台服务器连接起来,处理一个复杂的计算问题。
负载均衡:将用户请求引导到后端多台服务器,实现服务器请求的负载。
具体而言,现有技术中已经存在基于单点的故障转移切换的负载均衡技术,从而提供高可用的网络接入。但现有技术中基于单点故障转移切换容易造成系统资源浪费,同时还存在的问题包括系统不稳定,处理数据量大,切换较慢。
发明内容
本发明针对现有技术基于单点故障转移切换容易造成系统资源浪费的缺点,提供了一种冗余的系统架构方法,能够有效地解决上述目的并实现提高系统利用率的问题。
为实现上述目的,本发明可采取下述技术方案:
一种冗余的系统架构方法,包括以下具体步骤:
使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群;所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求;为了能够确认负载集群中的服务器故障,所述负载集群中的任一服务器在等待一段时间后尚未收到负载集群中的其他服务器发来的转换通告且自己并不具有最高优先级的情况下,将自己设置为主要处理状态并向负载集群中的其他服务器发出转换通告;当所述负载集群中的服务器在接到用户请求时,依据设置为主要处理状态的服务器的数量平均地分配用户请求。
于本申请的实施例中,还包括以下具体步骤:为了能够实现用户请求在负载集群的服务器中的平均分配,将一定数量的节点与所述负载集群相连接,将待处理的数据分块后分发至所述节点分别进行存储和处理,所述节点依据其所对应的被设置为主要处理状态的服务器发送用户请求和数据。
一种冗余的系统架构方法,包括以下具体步骤:
使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群;所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求;为了能够确认负载集群中的服务器故障,所述负载集群中的任一服务器在等待一段时间后尚未收到负载集群中的其他服务器发来的转换通告且自己并不具有最高优先级的情况下,将自己设置为主要处理状态并向负载集群中的其他服务器发出转换通告;当所述负载集群中的服务器在接到用户请求时,依据设置为主要处理状态的服务器的数量在服务器之间分配用户请求;将一定数量的节点与所述负载集群相连接,将待处理的数据分块后分发至所述节点分别进行存储和处理,所述节点依据其所对应的被设置为主要处理状态的服务器发送用户请求和数据。
本发明具有以下的显著技术效果:
可以较好地提高系统资源的利用率,发生单点故障时切换速度快,反应迅速,具有高可用的特征。
具体实施方式
下面结合实施例对本发明作进一步的详细描述。
实施例1
一种冗余的系统架构方法,本实施例所记载方法一般情况下更为适用于路由器或者三层交换机的冗余设计,但经过稍许调整,也可以用于其他的场合,其特点是在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性,利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务,充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求,包括以下具体步骤:
使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。较为特殊的是,与通常的服务器不同,本实施例中所述的负载集群中的服务器对用户请求的处理仅限于对外部网络接口的带宽的分配和管理,一旦确定了用户请求所请求的外部网络地址,则将该请求的内容转发至相应的网络地址并代为接收反馈,作为内部网络与外部网络接口的桥梁。具体而言,该两台服务器均具有各自独立的网络地址/IP地址,但同时,每台服务器分别与另一个网络地址相对应,该网络地址是给定的,通常由预设的配置文件给出,且是对内部网络可见的并作为内部网络中的节点访问外部网络的地址,本实施例中称之为访问地址。为了能够提供足够的冗余量,访问地址的数量较多,至少不应当少于负载集群中的服务器的数量,负载集群中的每个服务器均保有上述访问地址的列表,作为一种可选的方式,需要将上述访问地址加入负载集群的服务器与内部网络节点之间进行通讯的数据表头,从而将访问地址在负载集群中散布分发。
所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求;为了能够确认负载集群中的服务器故障,所述负载集群中的任一服务器在等待一段时间后尚未收到负载集群中的其他服务器发来的转换通告且自己并不具有最高优先级的情况下,将自己设置为主要处理状态并向负载集群中的其他服务器发出转换通告;当所述负载集群中的服务器在接到用户请求时,依据设置为主要处理状态的服务器的数量平均地分配用户请求。
上述的具体步骤的一个可用的示例为,将内部网络中的节点,或者是PC机进行分组设置,通常将不同的组对应不同的服务器即网段中,换而言之令不同的组处于不同的网段中,作为另一种可选的方案,不同的组也可以位于同样的网段中。例如,办公网络的网络为192.168.222.0,设置的缺省网关为192.168.222.100,而多媒体教室的网络地址为192.168.223.0,设置的缺省网关为192.168.223.100。进一步地,在负载集群的服务器中,将服务器A对应节点组1的优先级设置为一个较高的数值,例如120,需要注意的是,初始优先级不能设置为最高的255,而应当设置在100-200之间,其他作为保留值。将服务器B对应节点组1的优先级设置为一个较低的数字,例如100;因此节点组1自动地按照优先级,选择较高的服务器A进行网络通讯。同样地,服务器B的对应节点组2的优先级设置为一个相同的数字,也是120,服务器A的对应节点组2的优先级设置为一个较低的数值,例如100,应当指出的是,尽管在这里服务器A与服务器B所对应的优先级是相同的,但作为一种可选的方案,可以使用一种具有一定梯度间隔的优先级设置方式,例如,在一定程度上错开服务器A以及服务器B的可能的优先级上下浮动范围,从而得到一个能够体现负载集群的服务器的相对优先的顺序。此外还包括一个额外的监测进程,该检测进程位于负载集群的服务器上,当检查到MASTER上服务不可用了,就会通知本机上的兄弟子进程,让他删除通告,并且去掉该MASTER上所对应的访问地址,将其转换为BACKUP状态,即非主要处理状态。
进一步地,为了能够搭建一个具有高可扩展性,高可用性的负债均衡方案,所述的冗余的系统架构方法还包括以下具体步骤,下述步骤是为了能够配合上文所记载的服务器设置方法,提高服务器的整体性能而制定的:为了能够实现用户请求在负载集群的服务器中的平均分配,将一定数量的节点与所述负载集群相连接,将待处理的数据分块后分发至所述节点分别进行存储和处理,所述节点依据其所对应的被设置为主要处理状态的服务器发送用户请求和数据。作为负载集群管理的一部分,在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议,实现HA心跳信息传输,最终完成负载集群成员的管理和成员间的通讯传递。上述用户请求在负载集群的服务器中的平均分配由数据分块实现。在负载集群的服务器和内部网络的节点之间增设一个新的中间层,将数据的存储形式由文件变更为块。作为一种可以选择的策略,可以采用分块打散策略以及触发式增量分块搬迁策略。具体而言,为了实现上述的分块打散策略,从逻辑层次上建立三个层,第一层为面向客户端的块驱动层,负责建立一个基于虚拟机的块虚拟设备。第二层是一个基于定长数据段,且用一个足够长度的对象标识进行标识的存储系统,该存储系统以对象的形式存储数据,其要点在于,所有的数据以对象而非文件的形式进行存储。第三层为集群管理层,负责检测节点故障,处理节点加入和退出,保证所有服务器看到一致的集群成员关系,此外,该层还负责全局协调和同步,在不同的节点之间进行状态同步,实现集群管理。上述的对象存储至少应当包括以下步骤:接收客户端请求,且根据一致性哈希计算定位目标节点,并路由请求到这些节点;以及,在对象的基础上实现对本地对象的存储管理,同时进行对象的读取操作,即对DataObject的读写操作。具体而言,上述的数据分块和对象划分要求将所有数据以定长,通常可以是4M长度划分为数据块,数据块至少包括一个足够长度的对象标识进行标识,包括4位对象类型,24位虚拟磁盘映像标识,用于表示数据段所在的虚拟磁盘,32位本地对象标识,用于标识数据段在虚拟磁盘中的位置。在此基础上,每个节点划分成多个虚拟节点,虚拟节点和ObjectID一样,采用64位整数唯一标识,每个虚拟节点负责一段包含节点ID在内的ObjectID区间。DataObject副本存在ObjectID对应的虚拟节点,及在后续的几个节点上。采用一致性哈希的好处是,无需维护映射表,节点加入或者失效时受影响的数据较小——只影响到哈希环上相邻的两个节点。为了增加数据迁移和恢复的速度,一致性哈希一般搭配虚拟节点使用,避免对某一个物理服务器造成很大压力。
进一步地,在数据存储方面,上述DataObject单独存储成一个文件,路径是/store_dir/obj/[epoch number]/[object ID]。DataObject直接读写在进行直接读写的基础上,更新时使用数据日志以保证一致性。
此外,还包括空间延迟分配的步骤:DataObject中维护一个整数数组data_id[MAX_DATA_OBJS],该数组第k项记录第k个DataObject所对应的虚拟磁盘映像标识,如果data_id[k]等于零,说明第k个DataObject尚未分配,写数据时要事先创建DataObject,并设置data_id[k]。
在上述的数据块存储和对象存储的基础上,基于p2p开发框架管理集群成员关系,以支持全局有序且可靠的消息投递,特别是在负载集群的服务器之间的通告分发,节点加入或者退出集群作为一种消息按序投递到所有节点,每个节点看到的集群成员关系最终能达到一致。在此过程中,需要维护集群成员关系历史,存储路径是/store_dir/epoch/[epoch number],epoch是一个全局递增的数值,用以描述集群成员关系的版本,每当节点加入和退出时,需要增加epoch。基于epoch可以快速判断两个节点是否拥有相同的集群成员关系视图。
进一步地,节点加入分为两个阶段,第一阶段新加入节点向master发送加入请求,所述的master可以被视为设置为主要处理状态的服务器,但在实际运行中,一台服务器可以同时被设置为master或者非master状态,第二阶段,master检查节点是否可以加入,如果可以加入,master广播节点加入消息到集群其它节点。master节点故障时,另外一个节点自动成为master。master的负载很低,迁移很快,不会带来性能瓶颈和可用性问题。
节点退出时,马上进行处理故障,如果节点假死,可能造成网络和磁盘资源浪费。
节点加入和退出都会导致数据迁移,大致流程是:首先从其他节点得到集群中的ObjectID集合,将属于本节点的ObjectID保存到/store_dir/obj/[the currentepoch]/list,根据上一个epoch的集群成员关系确定DataObject的源,发送读请求到源节点读取数据,写入到/store_dir/epoch/[the current epoch]。迁移与读写请求不能并发进行,如果DataObject未迁移完成,则读写请求被阻塞。为了降低阻塞时间,需要优先恢复即将被访问的存储对象。每个副本完全保证一致,读操作可以在任意副本完成,更新操作并行的发往所有副本,当所有副本都更新成功之后,网关才告诉客户端更新操作成功。I/O请求中带有网关的epoch信息,如果副本epoch版本不同于网关,则请求处理失败,网关重试请求直到epoch匹配为止(仅仅重试出错节点可能是有问题的,因为网关的epoch可能是错误的)。值的注意是的,网关故障可能导致部分副本更新成功,使用读时修复机制处理这种不一致性:网关初次读取DataObject的时候,读取整个DataObject,并覆盖所有其他副本。读时修复机制带来几个问题:1)第一次读取的响应时间非常长;2)网关需要记录读过的ObjectID。
由于一个虚拟磁盘映像在同一个时刻只能为一个客户端或者节点所挂载,因此还包括以下具体步骤:对虚拟磁盘映像进行加锁,可保证虚拟磁盘映像同时只能被一个客户端或者节点所访问。由于消息投递顺序是全局有序的,最后k个lock volume b请求在所有服务器上都会被拒绝。
总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。
Claims (3)
1.一种冗余的系统架构方法,其特征在于,包括以下具体步骤:
使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群;所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求;为了能够确认负载集群中的服务器故障,所述负载集群中的任一服务器在等待一段时间后尚未收到负载集群中的其他服务器发来的转换通告且自己并不具有最高优先级的情况下,将自己设置为主要处理状态并向负载集群中的其他服务器发出转换通告;当所述负载集群中的服务器在接到用户请求时,依据设置为主要处理状态的服务器的数量平均地分配用户请求。
2.根据权利要求1所述的系统架构方法,其特征在于,还包括以下具体步骤:
为了能够实现用户请求在负载集群的服务器中的平均分配,将一定数量的节点与所述负载集群相连接,将待处理的数据分块后分发至所述节点分别进行存储和处理,所述节点依据其所对应的被设置为主要处理状态的服务器发送用户请求和数据。
3.一种冗余的系统架构方法,其特征在于,包括以下具体步骤:
使用至少两台分别使用不同的网络地址且相互连接的服务器作为处理用户请求的负载集群;所述负载集群中的服务器分别独立地接收用户的请求,并在其中一台服务器发生故障时,将故障服务器接收的用户请求转移到另一台服务器并由该服务器处理转移得到的用户请求;为了能够确认负载集群中的服务器故障,所述负载集群中的任一服务器在等待一段时间后尚未收到负载集群中的其他服务器发来的转换通告且自己并不具有最高优先级的情况下,将自己设置为主要处理状态并向负载集群中的其他服务器发出转换通告;当所述负载集群中的服务器在接到用户请求时,依据设置为主要处理状态的服务器的数量在服务器之间分配用户请求;将一定数量的节点与所述负载集群相连接,将待处理的数据分块后分发至所述节点分别进行存储和处理,所述节点依据其所对应的被设置为主要处理状态的服务器发送用户请求和数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410764728.1A CN104410531B (zh) | 2014-12-11 | 2014-12-11 | 冗余的系统架构方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410764728.1A CN104410531B (zh) | 2014-12-11 | 2014-12-11 | 冗余的系统架构方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104410531A CN104410531A (zh) | 2015-03-11 |
CN104410531B true CN104410531B (zh) | 2018-07-20 |
Family
ID=52648129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410764728.1A Active CN104410531B (zh) | 2014-12-11 | 2014-12-11 | 冗余的系统架构方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104410531B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391224A (zh) * | 2017-06-09 | 2017-11-24 | 华为技术有限公司 | 一种虚拟卷的创建方法、挂载方法及装置 |
CN107888678B (zh) * | 2017-11-08 | 2020-11-13 | 北京奇艺世纪科技有限公司 | 一种文件下载的控制方法及装置 |
CN108848479A (zh) * | 2018-07-19 | 2018-11-20 | 北京车联天下信息技术有限公司 | 车联网服务负载均衡方法、装置及设备 |
CN109361777B (zh) * | 2018-12-18 | 2021-08-10 | 广东浪潮大数据研究有限公司 | 分布式集群节点状态的同步方法、同步系统及相关装置 |
CN110365771A (zh) * | 2019-07-16 | 2019-10-22 | 深圳市网心科技有限公司 | 一种数据获取方法、装置、系统和计算机可读存储介质 |
CN110572283B (zh) * | 2019-08-30 | 2022-05-17 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 机载平台服务交互接力控制系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1554055A (zh) * | 2001-07-23 | 2004-12-08 | �Ƚ�װ�ù�˾ | 高可用性集群虚拟服务器系统 |
CN101815079A (zh) * | 2009-02-24 | 2010-08-25 | 北京邮电大学 | 基于sip的服务器集群发布服务信息的方法及系统 |
CN102025630A (zh) * | 2010-12-14 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 负载均衡方法及负载均衡系统 |
CN102404390A (zh) * | 2011-11-07 | 2012-04-04 | 广东电网公司电力科学研究院 | 高速实时数据库的智能化动态负载均衡方法 |
CN102821044A (zh) * | 2012-07-27 | 2012-12-12 | 北京奇虎科技有限公司 | 一种配置服务器集群的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799918B2 (en) * | 2006-09-11 | 2014-08-05 | Microsoft Corporation | Dynamic network load balancing using roundtrip heuristic |
-
2014
- 2014-12-11 CN CN201410764728.1A patent/CN104410531B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1554055A (zh) * | 2001-07-23 | 2004-12-08 | �Ƚ�װ�ù�˾ | 高可用性集群虚拟服务器系统 |
CN101815079A (zh) * | 2009-02-24 | 2010-08-25 | 北京邮电大学 | 基于sip的服务器集群发布服务信息的方法及系统 |
CN102025630A (zh) * | 2010-12-14 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 负载均衡方法及负载均衡系统 |
CN102404390A (zh) * | 2011-11-07 | 2012-04-04 | 广东电网公司电力科学研究院 | 高速实时数据库的智能化动态负载均衡方法 |
CN102821044A (zh) * | 2012-07-27 | 2012-12-12 | 北京奇虎科技有限公司 | 一种配置服务器集群的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104410531A (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104410531B (zh) | 冗余的系统架构方法 | |
CN102053982B (zh) | 一种数据库信息管理方法和设备 | |
US11487468B2 (en) | Healing failed erasure-coded write attempts in a distributed data storage system configured with fewer storage nodes than data plus parity fragments | |
US7590672B2 (en) | Identification of fixed content objects in a distributed fixed content storage system | |
US10659225B2 (en) | Encrypting existing live unencrypted data using age-based garbage collection | |
CN107430603B (zh) | 大规模并行处理数据库的系统和方法 | |
CN109327539A (zh) | 一种分布式块存储系统及其数据路由方法 | |
CN102708165B (zh) | 分布式文件系统中的文件处理方法及装置 | |
CN108183961A (zh) | 一种基于Redis的分布式缓存方法 | |
CN103150304B (zh) | 云数据库系统 | |
US10230544B1 (en) | Efficient data forwarding in a networked device | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
CN107016087A (zh) | 基于哨兵模型的层级数据库高可用系统 | |
CN104050102B (zh) | 一种电信系统中的对象存储方法及装置 | |
EP2419845A2 (en) | Policy-based storage structure distribution | |
CN101984632A (zh) | 一种分布式缓存系统中负荷分配方法、装置及服务器 | |
US11068537B1 (en) | Partition segmenting in a distributed time-series database | |
CN104168323A (zh) | 一种云服务系统及方法 | |
CN105468296B (zh) | 基于虚拟化平台的无共享存储管理方法 | |
CN102546823A (zh) | 一种云存储系统的文件存储管理系统 | |
CN106446268A (zh) | 一种数据库横向扩展系统及方法 | |
CN106777164A (zh) | 一种数据迁移集群及数据迁移方法 | |
CN105760391A (zh) | 数据动态重分布的方法、数据节点、名字节点及系统 | |
CN108282516A (zh) | 一种基于iSCSI的分布式存储集群负载均衡方法和装置 | |
CN105323271A (zh) | 一种云计算系统以及云计算系统的处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |