本公开涉及通信技术领域,尤其涉及一种客户端发送用户请求的方法和存储系统。
背景技术:
ha(highavailability):通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。对于存储系统来说,一般分为配置ha或业务ha,一种提升配置类的可用程度,一种提升io业务的可用程度。
可用性(也称有效性)是指可维修产品在规定的条件下使用时具有或维持其功能的能力。其量化参数为可用度,表示可维修产品在规定的条件下使用时,在某时刻具有或维持其功能的概率。可用度(也称有效度)通常记作a,可用平均无故障时间(mtbf)和平均修复时间(mttr)来计算:a=mtbf/(mtbf+mttr)。
自动切换(auto-switch)阶段某一主机如果确认对方故障,则正常主机除继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服务。
设计系统的可用性,最重要的是满足用户的需求。系统的失败只有当其导致服务的失效性足以影响到系统用户的需求时才会影响其可用性的指标。用户的敏感性决定于系统提供的应用。例如,在一个能在1秒钟之内被修复的失败在一些,联机事务处理系统中并不会被感知到,但如果是对于一个实时的科学计算应用系统,则是不可被接受的。
当用户对于系统的高可用性具有较高的要求时,所有的配置处理必须是连续、有序且成功的。换而言之,在主工作节点故障后,处理任务切换到备用节点的过程中,任务处理不能乱序、且不能向用户返回失败。
技术实现要素:
本说明书实施例提供了一种客户端发送用户请求的方法和存储系统,通过该方法,可以避免主节点和备节点切换过程中,出现主备任务处理乱序、且会向用户返回失败的问题。
本说明书实施例提供了一种客户端发送用户请求的方法,所述客户端连接服务器集群,所述服务器集群包括主服务器和备服务器,所述方法包括:
接收用户发送的多个用户请求;
根据所述多个用户请求的目标特征向服务器集群发送请求报文;
若未接收到服务器集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
其中,根据所述多个用户请求的目标特征向服务器集群发送请求报文,具体包括,将具有相同目标特征的用户请求按照时间顺序放入第一队列;
根据所述第一队列顺序向服务器集群发送请求报文。
可选的,所述方法还包括:
在根据所述第一队列顺序向服务器集群发送请求报文之后,判断是否存在第二队列,若存在则发送第二队列中的用户请求;
其中,所述第二队列包括:具有与第一队列的目标特征不同的用户请求。
可选的,所述目标特征包括用户请求中的对象名。
通过上述实施例可以看出,当客户端向服务器集群发送请求报文但未收到服务器集群的反馈信息时,可推断服务器集群中的主、备服务器进行切换,此时,客户端会在t时刻再次向服务器集群发送上次发送的请求报文,在此期间为了避免在t时刻内出现新的用户请求,可将具有相同目标特征的用户请求放入在同一队列中,避免出现请求信息顺序混乱的情况发生。
本说明书实施例还提供了一种分布式存储系统,该系统包括主服务器,所述主服务器与备服务器构成分布式存储集群,该分布式存储集群与客户端连接,
所述客户端接收用户发送的多个用户请求,所述每个用户请求携带目标特征;
根据多个用户请求的目标特征对用户请求分类,并按分类后的用户请求向分布式存储集群发送请求报文;
若未接收到分布式存储集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
具体的,根据多个用户请求的目标特征对用户请求分类,具体包括:
生成若干队列,并将具有相同目标特征的用户请求作为一类顺序放入某一队列。
具体的,所述按分类后的用户请求向分布式存储集群发送请求报文,具体包括:
根据队列顺序,将某一队列中的用户请求向分布式存储集群发送请求报文后,再发送其他队列中的用户请求。
通过上述实施例可以看出,在分布式存储系统中,客户端通过将用户请求进行分类,以及在发送请求报文且未得到分布式存储集群的反馈信息时,会在t时刻再次发送已发送的请求报文,不但可以防止因分布式存储集群中主、备服务器因切换,遗漏处理客户端发送的请求报文的情况发送,同时因对用户请求进行分类传输,还避免了主备任务处理乱序的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1为本公开实施例提供的一种网络结构示意图;
图2为本公开实施例提供的一种客户端发送用户请求的方法的流程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,客户端负责接收用户的用户请求,组装成对应的请求报文,通过https协议发送至服务器集群进行处理。服务器集群一直处于监听状态,接收到客户端的请求报文既开始解析请求报文并处理。服务器集群中的主服务器处理完客户端的请求之后,通过已创建好的消息通道返回处理结果。
在此过程中,如果主服务器中途出现故障(网络断开、进程崩溃),无法继续接收和处理客户端的请求报文,便会切换到备服务器,由备服务器继续处理请求。
然而,当主服务器已经接收到客户端的请求报文,正在处理请求报文的过程中,主服务器发生故障(电源被切断、网络断开),这种情况下该请求报文将无法被转到备服务器上,所以这个请求报文将被丢弃,无法向客户端返回处理结果(因为客户端和服务器之间的连接已经断开)。服务器集群切换到备服务器后只能处理新的请求。
为解决上述技术问题,本说明书实施例提供了一种客户端发送用户请求的方法,如图2所示,该客户端连接服务器集群,所述服务器集群包括主服务器和备服务器,该方法包括:
s101接收用户发送的多个用户请求;
s102根据所述多个用户请求的目标特征向服务器集群发送请求报文;
s103若未接收到服务器集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
在步骤s101中,客户端接收的多个用户请求,可以为用户在t时段内发送的累积的用户请求,该t时段可以是从客户端使能后开始,在确定服务器集群未反馈信息为止,也可以是从客户端使能后开始,直至该客户端下线为止。
当客户端向服务器集群发送请求报文后,但未收到服务器集群针对该请求报文发送的反馈信息时,客户端可在t时刻后,再次向服务器集群发送已发送的请求报文,以使服务器集群处理该请求报文。
由此可以看出,客户端在向服务器集群发送请求报文后,若服务器集群未向客户端发送反馈信息(有可能服务器集群中的主、备服务器进行主备切换导致请求报文丢失),会在t时刻后再次向服务器集群发送上一条请求报文,以使服务器集群中的服务器进行处理,从而避免了服务器集群丢失客户端发送的请求报文,无法反馈用户的情况发生。
在步骤s102中,该目标特征可以包括用户请求中的对象名,例如,多个用户请求分别为:创建存储卷a、创建存储卷b、创建存储卷c、删除存储卷a、删除存储卷b。其中,对象名a、b、c为目标特征。
在此步骤中,根据多个用户请求的目标特征向服务器集群发送请求报文,具体包括:
将具有相同目标特征的用户请求按照时间顺序放入第一队列,结合上述内容,可将创建存储卷a、删除存储卷a按照时间先后顺序放入第一个第一队列;将创建存储卷b、删除存储卷b按照时间先后顺序放入第二个第一队列;将创建存储卷c放入第三个第一队列。
需说明的是,上述三个队列可以认为是三个不同的第一队列,也可以分别认为是第一队列、第二队列、第三队列,这里的第一队列、第二队列、第三队列、或者不同的第一队列仅仅为了便于区分。
在将具有相同目标特征的用户请求按照时间顺序放入第一队列后,可根据第一队列顺序向服务器集群发送请求报文,例如:在将第一个第一队列中的用户请求发送给服务器集群时,会将第一个第一队列中的建存储卷a、删除存储卷a的用户请求全部发送给服务器集群,并分别接收到服务器集群的反馈信息后,会判断是否还存在第二个第一队列,若存在则执行第二个第一队列中的全部用户请求,之后再判断是否还存在第三个第一队列,若存在则执行第三个第一队列中的全部用户请求,以此类推。
在客户端使能期间,会持续接收用户发送的新的用户请求,当接收到新的用户请求后,会判断该新的用户请求中所携带的目标特征,是否与已存在的队列中的用户请求的目标特征匹配,若匹配则按时间顺序放入到对应的队列中。
例如,客户端接收的新的用户请求为创建存储卷a,客户端获取该新的用户请求的目标特征为a,并判断出与第一个第一队列中用户信息的目标特征也为a,则将该新的用户请求放入到第一个第一队列,既更新后的第一个第一队列为建存储卷a、删除存储卷a、建存储卷a。
通过上述实施例可以看出,通过根据用户请求中的目标特征将用户请求按照时间顺序进行分类并放入队列中,从而可避免因设备及网络原因导致用户请求混乱的情况发生。
例如,客户端在发送第一个第一队列中的第一个用户信息(创建存储卷a)时,发现未收到服务器集群的反馈信息,则客户端会在t时刻后再次发送第一个用户请求(创建存储卷a),而此时在未达到t时刻时,客户端又收到删除存储卷a,此时由于新的用户请求中的目标特征a与第一个第一队列中的目标特征匹配,则会将删除存储卷a作为第一个第一队列的第二个用户请求,并在到达t时刻客户端重新发送第一个用户请求(创建存储卷a)后,发送第二个用户请求(删除存储卷a),避免了先发送删除存储卷a,再发送创建存储卷a,造成用户请求混乱的情况发生。
本说明书实施例还提供了一种分布式存储系统,该系统包括主服务器,所述主服务器与备服务器构成分布式存储集群,所述分布式存储集群与客户端连接,
所述客户端接收用户发送的多个用户请求,所述每个用户请求携带目标特征;
根据多个用户请求的目标特征对用户请求分类,并按分类后的用户请求向分布式存储集群发送请求报文;
若未接收到分布式存储集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
所述根据多个用户请求的目标特征对用户请求分类,具体包括:
生成若干队列,并将具有相同目标特征的用户请求作为一类顺序放入某一队列。
在本实施例中,该若干队列为一个或一个以上队列,具体可根据分类需求生成。
所述按分类后的用户请求向分布式存储集群发送请求报文,具体包括:
根据队列顺序,将某一队列中的用户请求向分布式存储集群发送请求报文后,再发送其他队列中的用户请求。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
1.一种客户端发送用户请求的方法,其特征在于,所述客户端连接服务器集群,所述服务器集群包括主服务器和备服务器,所述方法包括:
接收用户发送的多个用户请求;
根据所述多个用户请求的目标特征向服务器集群发送请求报文;
若未接收到服务器集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个用户请求的目标特征向服务器集群发送请求报文,具体包括:
将具有相同目标特征的用户请求按照时间顺序放入第一队列;
根据所述第一队列顺序向服务器集群发送请求报文。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在根据所述第一队列顺序向服务器集群发送请求报文之后,判断是否存在第二队列,若存在则发送第二队列中的用户请求;
其中,所述第二队列包括:具有与第一队列的目标特征不同的用户请求。
4.根据权利要求1至3任一所述的方法,其特征在于,所述目标特征包括用户请求中的对象名。
5.一种分布式存储系统,其特征在于,所述系统包括主服务器,所述主服务器与备服务器构成分布式存储集群,所述分布式存储集群与客户端连接,
所述客户端接收用户发送的多个用户请求,所述每个用户请求携带目标特征;
根据多个用户请求的目标特征对用户请求分类,并按分类后的用户请求向分布式存储集群发送请求报文;
若未接收到分布式存储集群针对所述请求报文的反馈信息,则在t时刻后,再次向服务器集群发送所述请求报文。
6.根据权利要求5所述的系统,其特征在于,所述根据多个用户请求的目标特征对用户请求分类,具体包括:
生成若干队列,并将具有相同目标特征的用户请求作为一类顺序放入某一队列。
7.根据权利要求6所述的系统,其特征在于,所述按分类后的用户请求向分布式存储集群发送请求报文,具体包括:
根据队列顺序,将某一队列中的用户请求向分布式存储集群发送请求报文后,再发送其他队列中的用户请求。
技术总结