数据更新方法、装置及系统与流程

文档序号:14410081阅读:179来源:国知局
数据更新方法、装置及系统与流程

本发明涉及网络技术领域,特别涉及一种数据更新方法、装置及系统。



背景技术:

随着网络技术的飞速发展和网络规模的逐渐扩大,网络业务的类型越来越多,业务服务器在处理多种业务的过程中,通常需要处理大量的业务数据。为了避免业务数据占用存储空间,业务服务器会将业务数据存储于存储服务器中,在业务服务器的运行过程中,可以对存储服务器中的业务数据进行更新。

以存储服务器中的目标数据为例,当业务服务器需要对该目标数据进行更新时,会向存储服务器发送对该目标数据的读取请求,该存储服务器接收到该读取请求,并读取该目标数据,返回给该业务服务器。当该业务服务器接收到该目标数据时,对该目标数据进行更新,并对该目标数据中的版本号进行更新,再向该存储服务器发送更新后的目标数据,该更新后的目标数据中包括更新后的版本号。该存储服务器接收该更新后的目标数据时,为了避免有多个业务服务器对该目标数据同时进行更新而导致冲突,可以获取该更新后的目标数据中的版本号,比较该版本号与该存储服务器中目标数据的版本号,如果该版本号比该目标数据的版本号新,则存储该更新后的目标数据,如果该目标数据的版本号比该版本号新,表示有其他的业务服务器已经对该目标数据进行了更新,则放弃存储该业务服务器更新后的目标数据,该业务服务器更新失败,只能重新执行上述更新过程。

在实现本发明的过程中,发明人发现相关技术至少存在以下问题:

上述数据更新过程包括该业务服务器与该存储服务器之间的多次传输,该多次传输会耗费传输资源,导致数据更新的速度慢,效率低。



技术实现要素:

为了解决相关技术的问题,本发明实施例提供了一种数据更新方法、装置及系统。所述技术方案如下:

第一方面,提供了一种数据更新方法,应用于存储服务器中,所述方法包括:

接收业务服务器发送的数据更新请求,所述数据更新请求包括数据更新信息和排序信息;

依据所述排序信息,将所述数据更新请求中的数据更新信息添加至信息队列中;

当所述数据更新信息位于所述信息队列中的指定位置时,从所述信息队列中提取所述数据更新信息,基于提取的所述数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至所述业务服务器。

第二方面,提供了一种数据更新方法,应用于业务服务器中,所述方法包括:

获取数据更新信息和排序信息;

向存储服务器发送数据更新请求,所述数据更新请求包括所述数据更新信息和所述排序信息,所述存储服务器用于依据所述排序信息,将所述数据更新请求中的数据更新信息添加至信息队列中;当所述数据更新信息位于所述信息队列中的指定位置时,从所述信息队列中提取所述数据更新信息,基于提取的所述数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至所述业务服务器;

接收所述存储服务器反馈的所述更新后的目标数据。

第三方面,提供了一种数据更新方法,所述方法包括:

业务服务器向存储服务器发送数据更新请求,所述数据更新请求包括数据更新信息和排序信息;

所述存储服务器接收到所述数据更新请求时,依据所述排序信息,将所述数据更新请求中的数据更新信息添加至信息队列中;当所述数据更新信息位于所述信息队列中的指定位置时,从所述信息队列中提取所述数据更新信息;基于提取的所述数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至所述业务服务器;

所述业务服务器接收所述更新后的目标数据。

第四方面,提供了一种数据更新装置,应用于存储服务器中,所述装置包括:

接收模块,用于接收业务服务器发送的数据更新请求,所述数据更新请求包括数据更新信息和排序信息;

添加模块,用于依据所述排序信息将所述数据更新请求中的数据更新信息添加至信息队列中;

提取模块,用于当所述数据更新信息位于所述信息队列中的指定位置时,从所述信息队列中提取所述数据更新信息;

更新模块,用于基于提取的所述数据更新信息对相对应的目标数据进行更新;

反馈模块,用于将更新后的目标数据反馈至所述业务服务器。

第五方面,提供了一种数据更新装置,应用于业务服务器中,所述装置包括:

获取模块,用于获取数据更新信息和排序信息;

发送模块,用于向存储服务器发送数据更新请求,所述数据更新请求包括所述数据更新信息和所述排序信息,所述存储服务器用于依据所述排序信息将所述数据更新请求中的数据更新信息添加至信息队列中,所述信息队列中的数据被配置为按照先入先出的处理机制进行数据处理;从所述信息队列中提取所述数据更新信息,基于提取的所述数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至所述业务服务器;

接收模块,用于接收所述存储服务器反馈的更新后的目标数据。

第六方面,提供了一种数据更新系统,所述系统包括:

业务服务器,用于向存储服务器发送数据更新请求,所述数据更新请求包括数据更新信息和排序信息;

所述存储服务器,用于接收到所述数据更新请求时,依据所述排序信息,将所述数据更新请求中的数据更新信息添加至信息队列中;当所述数据更新信息位于所述信息队列中的指定位置时,从所述信息队列中提取所述数据更新信息;基于提取的所述数据更新信息对相对应的目标数据进行更新;将更新后的目标数据反馈至所述业务服务器;

所述业务服务器,还用于接收所述更新后的目标数据。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例提供的方法、装置及系统,通过业务服务器向存储服务器发送数据更新请求后,存储服务器接收该数据更新请求,并将该数据更新请求中的数据更新信息添加至信息队列中,当该数据更新信息位于该信息队列中的指定位置时,从该信息队列中提取该数据更新请求,并基于提取的该数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至业务服务器。本发明实施例提供了一种排队机制,可以由存储服务器在信息队列中,按照排序信息对多个数据更新请求的数据更新信息进行排序,不仅避免了多个数据更新请求对同一目标数据同时进行更新而导致的冲突,而且,该业务服务器只需向该存储服务器发送一次数据更新请求即可,减少了该业务服务器与该存储服务器之间的传输次数,节省了传输资源,提高了数据更新的速度和效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的数据更新系统的结构示意图;

图2a是本发明实施例提供的数据更新方法流程图;

图2b是本发明实施例提供的先入先出队列示意图;

图3是本发明实施例提供的数据更新装置结构示意图;

图4是本发明实施例提供的数据更新装置结构示意图;

图5是本发明实施例提供的数据更新装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种数据更新系统的结构示意图。参见图1,该数据更新系统包括业务服务器101和存储服务器102,该业务服务器101与该存储服务器102连接。

业务服务器101,用于获取数据更新信息和排序信息,向存储服务器102发送数据更新请求,该数据更新请求包括该更新信息和该排序信息。

存储服务器102,用于依据该排序信息,将该数据更新请求中的数据更新信息添加至信息队列中;当该数据更新信息位于该信息队列中的指定位置时,从该信息队列中提取该数据更新信息,基于提取的该数据更新信息对相对应的目标数据进行更新,将更新后的目标数据反馈至该业务服务器。

业务服务器101,还用于接收该目标数据。

其中,该业务服务器101为用于处理网络中的各种业务的设备,该业务服务器101可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。该存储服务器102用于存储该业务服务器的业务数据,该存储服务器102可以为缓存存储服务器、主存储服务器、外存储服务器等。

本发明实施例可以应用于需要进行数据更新的多种场景下,该场景可以包括社交应用、游戏应用、支付应用等,本发明实施例对此不做限定。

在一种可能的实现方式中,可以对公共社交网络标识的数据进行更新,该公共社交网络标识可以为社交应用中注册的公众号等。具体地,该业务服务器要更新该公共社交网络标识的数据时,向存储服务器发送包括数据更新信息和排序信息的数据更新请求,存储服务器接收该数据更新请求,将该数据更新信息在信息队列中进行排队,直至该数据更新信息位于该信息队列的指定位置时,可以从该信息队列中提取该数据更新信息,并基于该数据更新信息对该公共社交网络标识的数据进行更新,保证了多个业务服务器分别对该公共社交网络标识的数据进行更新,而不会造成冲突。

进一步地,该公共社交网络标识的数据可以包括多个字段,如头像字段、关注数量字段、功能介绍字段等,头像字段用于存储该公共社交网络标识的头像,关注数量字段用于存储该公共社交网络标识的关注数量,功能介绍字段用于存储该公共社交网络标识的功能介绍文本数据。

当有新用户订阅公共社交网络标识的消息时,该公共社交网络标识的关注数量字段需要更新,则业务服务器向存储服务器发送包括数据更新信息和排序信息数据更新请求,该数据更新信息包括公共社交网络标识和字段标识,存储服务器接收该数据更新请求,在该公共社交网络标识对应的信息队列中进行排队后,对该公共社交网络标识的数据中的关注数量字段进行更新。

在另一种可能实现方式中,可以对某一用户标识的数据进行更新,更新方式与上述公共社交网络标识的数据的更新方式类似,在此不再赘述。其中,该用户标识用于确定唯一对应的用户,可以为用户账号、电话号码等。

图2a是本发明实施例提供的一种数据更新方法的流程图。该发明实施例应用于图1所示的系统中,交互主体包括业务服务器和存储服务器,参见图2a,该方法包括:

201、业务服务器获取数据更新信息和排序信息,向存储服务器发送数据更新请求。

在日常生活中,业务服务器时刻需要处理大量的业务,对处理资源的需求较高,如果业务服务器自身存储业务数据,将导致业务服务器的业务处理速度缓慢、效率较低。因此,该业务服务器通常会将业务数据存储于存储服务器中,后续可以从该存储服务器中提取业务数据。

在业务服务器的运行过程中,可能需要对该存储服务器中的某些业务数据进行更新。例如,该业务服务器接收到任一设备发送的业务处理请求,而需要根据该业务处理请求对相应的业务数据进行更新,或者,该业务服务器根据自身当前的运行状态而需要对相应的业务数据进行更新等。

因此,当该业务服务器要对目标数据进行更新时,获取该目标数据对应的数据更新信息和排序信息,向该存储服务器发送数据更新请求,该数据更新请求包括该数据更新信息和该排序信息。该存储服务器可以基于该数据更新请求中的数据更新信息,从存储服务器中存储的至少一条数据中确定待更新的目标数据,对该目标数据进行更新。

其中,该数据更新信息包括该数据标识、该字段标识和该更新信息。实际上,该存储服务器可以存储有至少一条数据,而每条数据包括至少一个字段,该数据标识用于从存储服务器中存储的至少一条数据中确定待更新的目标数据,可以为该目标数据的名称、编号等,该字段标识用于确定该目标数据中待更新的目标字段,可以为字段的名称、编号等,该更新信息用于确定对该目标字段的更新方式,根据该更新信息,可以对该目标字段进行更新。

该排序信息可以为该数据更新请求的时间戳或者优先级。该时间戳可以为该业务服务器在发送该数据更新请求之前添加的时间戳,可以用于表示该数据更新请求的发送时间的早晚,相应的也可以认为,该时间戳能够用于表示该存储服务器接收该数据更新请求的时间的早晚。该优先级用于表示该数据更新请求的即时性需求,该数据更新请求的优先级越高,表示该数据更新请求应当优先被处理。该排序信息可以表示该数据更新信息的时间戳或者优先级,后续该存储服务器可以根据该数据更新请求中的排序信息,将该数据更新请求中的数据更新信息与其他数据更新信息进行排序。

进一步地,该存储服务器可以为该业务服务器提供rpc(remoteprocedurecallprotocol,远程过程调用协议)接口,该业务服务器可以通过调用rpc接口,向存储服务器发送数据更新请求,该存储服务器可以通过该rpc接口,接收该数据更新请求。

202、存储服务器接收业务服务器发送的数据更新请求,依据该排序信息,将该数据更新请求中的数据更新信息添加至信息队列中。

在实际应用中,存储服务器可能接收到大量针对该目标数据的数据更新请求,这些数据更新请求均是请求对该目标数据进行更新。因此,为了避免处理多个数据更新请求时彼此之间产生冲突,存储服务器可以生成信息队列,根据排序信息,将该数据更新请求中的数据更新信息添加至信息队列中。

进一步地,该数据更新信息包括数据标识时,该信息队列可以与该目标数据的数据标识对应,那么,每当该存储服务器接收到数据更新请求时,将数据更新请求中的数据更新信息添加至该数据标识对应的信息队列中。

该信息队列用于按照排序信息对数据更新信息进行排序,也即是,存储服务器可以根据该至少一个数据更新请求中的排序信息,对相对应的至少一条数据更新信息进行排序,那么,每次按照排列顺序处理该信息队列中的排在指定位置的数据更新信息,即可避免数据更新请求之间产生冲突。

其中,该信息队列的类型可以为先入先出队列、优先级队列,或者为其他类型的队列。

在一种可能的实现方式中,该信息队列的类型可以为先入先出队列,该排序信息包括时间戳,该时间戳用于表示该数据更新信息的接收时间,该信息队列中的信息被配置为按照先入先出的处理机制进行处理。那么,每当该存储服务器接收到数据更新请求时,可以直接将该数据更新请求中的数据更新信息添加到该信息队列中的队尾,也即是该信息队列中的所有数据更新信息之后。

在另一种可能的实现方式中,该信息队列的类型可以为优先级队列,该排序信息包括优先级,则该信息队列中的信息被配置为按照优先级从高到低的顺序进行处理。那么,每当该存储服务器接收到数据更新请求时,可以根据该数据更新信息的优先级以及该信息队列中已存储的其他数据更新信息的优先级,确定该数据更新信息的位置,将该数据更新信息添加到该信息队列的该位置上,以使比该数据更新信息的优先级高的其他数据更新信息位于该数据更新信息之前,而比该数据更新信息的优先级低的其他数据更新信息位于该数据更新信息之后。

203、当该数据更新信息位于该信息队列中的指定位置时,存储服务器从该信息队列中,提取该数据更新信息。

在一种可能的实现方式中,该信息队列的类型为先入先出队列时,该信息队列中的信息被配置为按照先入先出的处理机制进行处理,则该指定位置即为该信息队列中的第一位,存储服务器每次从该信息队列中提取位于第一位的数据更新信息。因此,当该数据更新信息为该信息队列中时间戳最早的数据更新信息时,该数据更新信息位于该信息队列中的第一位,存储服务器从该信息队列中提取该数据更新信息。

具体地,参见图2b,在该先入先出队列中,时间戳最早的数据更新信息排在队头,时间戳最晚的数据更新信息排在队尾,该先入先出队列每次读取数据更新信息时,实际为读取位于队头的数据更新信息,每当接收到一个新的数据更新请求,可以将该新的数据更新请求中的数据更新信息排在队尾,从而实现将数据更新信息按照时间戳从早到晚的顺序排列的目的。

在另一种可能的实现方式中,该信息队列的类型为优先级队列时,该信息队列中的信息被配置为按照优先级从高到低的顺序进行处理,则该指定位置可以为该信息队列的第一位,存储服务器每次从该信息队列中提取优先级最高的数据更新信息。因此,当该数据更新信息为该信息队列中优先级最高的数据更新信息时,该数据更新信息位于该信息队列中的第一位,存储服务器从该信息队列中提取该数据更新信息。

其中,该数据更新信息的优先级可以由该业务服务器确定,或者由该存储服务器根据该数据更新信息的更新类型确定,当然也可以根据其他参数确定。

另外,该信息队列中的数据更新信息还可以被配置为按照其他顺序进行处理,例如该存储服务器可以设置预设排序规则,则存储服务器将数据更新信息按照预设排序规则在信息队列中排序,每次从信息队列中提取排在指定位置的数据更新信息,本发明实施例对该预设排序规则不做限定。

进一步地,该存储服务器可以为该信息队列设置互斥锁,该互斥锁为一种排他性的锁接口,仅能被一方调用。那么,每次该存储服务器向该信息队列中添加数据更新信息或者从该信息队列中提取数据更新信息时,均可在调用互斥锁成功的前提下进行。

也即是,该步骤202可以包括:存储服务器接收该数据更新请求时,调用该信息队列的互斥锁,将该数据更新请求中的数据更新信息添加至信息队列中,添加之后释放该互斥锁。

该步骤203可以包括:当该数据更新信息位于该信息队列中的指定位置时,存储服务器调用该信息队列的互斥锁,从该信息队列中,提取该数据更新信息,提取之后释放该互斥锁。

采用该互斥锁可以保证,只要该互斥锁处于被调用的状态,将不能再向该信息队列添加数据更新信息,或者从该信息队列中提取数据更新信息,只有当该互斥锁被释放之后,才能进行数据更新信息的添加或提取。

相应地,在该存储服务器向该信息队列添加一条数据更新信息的过程中,如果该存储服务器接收到了其他的数据更新请求,这些数据更新请求中的数据更新信息必须等待该添加过程结束后,才能被添加至该信息队列中,可以保证任一时刻只将一个数据更新请求中的数据更新信息添加至信息队列中,避免了同时添加多条数据更新信息造成的冲突。或者,如果要从该信息队列中提取一条数据更新信息,也必须等待该添加过程结束后才能进行提取,避免了造成管理混乱。

在该存储服务器从信息队列提取一条数据更新信息的过程中,如果该信息队列中包括其他数据更新信息,这些数据更新信息必须等待该提取过程结束后,才能被提取,可以保证任一时刻只从信息队列中提取一条数据更新信息,避免了同时提取多条数据更新信息时,同时对目标数据进行更新而造成的冲突。或者,如果要向该信息队列中添加一条数据更新信息,也必须等待该提取过程结束后才能进行添加,避免了造成管理混乱。

需要说明的是,本发明实施例仅是以该存储服务器作为执行主体为例进行说明,而实际上,该存储服务器中可以运行接收线程和更新线程,该接收线程用于接收数据更新请求,并将数据更新请求中的数据更新信息添加至该信息队列中,而该更新线程用于从该信息队列中提取数据更新信息,并基于该提取的数据更新信息进行更新。

那么,在运行过程中,该接收线程可以在调用互斥锁成功的前提下,将数据更新信息添加至该信息队列中,此时其他线程尝试调用该互斥锁时将不能调用成功,只能等待该互斥锁被释放后才能调用该互斥锁。或者,该更新线程可以在调用互斥锁成功的前提下,从该信息队列中提取数据更新信息,此时其他线程尝试调用该互斥锁时将不能调用成功,只能等待该互斥锁被释放才能调用该互斥锁。

204、存储服务器基于提取的数据更新信息对相对应的目标数据进行更新。

该数据更新信息包括数据标识、字段标识和更新信息,该存储服务器根据该数据标识,读取该数据标识对应的目标数据,根据该字段标识,从该目标数据中,提取该字段标识对应的目标字段,根据该更新信息,对该目标字段进行更新,得到更新后的目标字段,将该目标数据中除该目标字段以外的其他字段和该更新后的目标字段组合,得到更新后的目标数据,并存储该更新后的目标数据。

其中,该目标数据的格式可以为pb(protocolbuffer,协议缓冲区)格式,或者为其它格式。

在一种可能的实现方式中,该更新信息包括更新类型,存储服务器可以根据该更新类型,对该目标字段进行更新。其中,该更新类型可以为增加指定数量、减少指定数量、删除等。

例如,该存储服务器存储的用户数据如表1所示,当有一个新的用户关注了该用户时,用户的关注数量应该加1,此时触发的数据更新请求包括用户标识“id1”、字段标识“关注数量字段”和更新类型“+1”,则该存储服务器根据用户标识“id1”读取到用户数据,并将该用户数据中的关注数量字段加1,则更新之后,用户的关注数量从300变为301。

表1

在另一种可能的实现方式中,该更新信息包括更新后的目标字段。存储服务器可以直接将该目标字段替换为该更新后的目标字段。

例如,该存储服务器存储的用户数据如表1所示,当用户希望更改签名时,触发的数据更新请求中的数据更新信息包括用户标识“id1”、字段标识“签名字段”和更新后的签名字段“sentence2”,则该存储服务器根据用户标识“id1”读取到用户数据,并将该用户数据中的签名字段修改为“sentence2”。

需要说明的是,该存储服务器可以采用“key-value”的数据结构进行存储,其中,数据标识可以作为key,目标数据作为value,且该目标数据中可以包括一个或多个字段。且,为了区分不同的字段,该存储服务器为每个字段设置对应的字段标识。

另外,为了便于进行更新,该存储服务器还可以对目标字段进行格式转换。具体地,该步骤204可以包括以下步骤2041-2043:

2041、存储服务器对该目标字段进行反序列化,得到第一字段。

该存储服务器通常将该目标字段以二进制的格式存储,而当该目标字段为二进制的格式时,不便于修改。因此在进行更新之前,存储服务器对该目标字段进行反序列化,将该目标字段的格式转化为便于修改的格式,例如数据结构、对象等,得到第一字段。

2042、存储服务器根据该更新信息,对该第一字段进行更新,得到更新后的第二字段。

在第一种可能的实现方式中,该更新信息包括更新类型,存储服务器可以根据该更新类型,对该第一字段进行更新,得到更新后的第二字段。

在第二种可能的实现方式中,该更新信息包括更新后的字段,存储服务器可以直接将该第一字段替换为该更新后的字段,作为第二字段。

2043、存储服务器将该第二字段进行序列化,得到更新后的目标字段。

由于该第二字段的格式通常为不便于存储的格式,例如数据结构、对象等,因此存储服务器将该第二字段进行序列化,将该第二字段的格式转化为便于存储的格式,例如二进制的格式,得到更新后的目标字段。

205、存储服务器将更新后的目标数据反馈至该业务服务器。

206、业务服务器接收该更新后的目标数据。

当存储服务器对目标数据进行更新后,存储服务器可以向该业务服务器发送数据更新响应消息,该数据更新响应消息包括该更新后的目标数据,从而将更新后的目标数据反馈至该业务服务器。

进一步地,该存储服务器向该业务服务器发送该更新后的目标数据时,可以只发送更新后的目标字段,也即是该数据更新响应消息包括该更新后的目标字段,该业务服务器可以根据该数据更新响应消息,获取到更新后的目标字段。

另外,该数据更新响应消息可以包括该数据标识,或者该数据更新响应消息也可以包括该数据标识和该字段标识。该业务服务器根据该数据更新响应消息,可以得知本次更新成功。

具体地,该存储服务器可以通过调用与该业务服务器之间的rpc接口,向该业务服务器发送数据更新响应消息,该业务服务器通过该rpc接口,接收该存储服务器发送的数据更新响应消息。

本发明实施例中,如果该数据更新请求是由终端设备发送给该业务服务器,则该业务服务器接收到该数据更新响应消息后,可以向该终端设备发送该更新后的目标数据,以保证终端设备能够及时获取更新后的目标数据。进一步地,该终端设备在获取更新后的目标数据后,可以将该更新后的目标数据提供给用户,从而满足用户及时获知更新结果的需求。

相关技术中,当存储服务器中存储的数据需要更新时,由业务服务器从存储服务器读取数据,并执行对数据的更新操作。当业务服务器接收到的多个数据更新请求均用于请求更新同一个目标数据时,为了避免该多个数据更新请求之间产生冲突,可以设置“乐观锁”机制。

该“乐观锁”机制是指:业务服务器从该存储服务器读取到待更新的目标数据后,在业务服务器对该目标数据进行更新后,也对版本号进行更新,即,将该目标数据中的版本号替换为更新后的版本号,如将版本号加1。之后,业务服务器向该存储服务器发送更新后的目标数据。存储服务器在接收到更新后的目标数据后,将获取该更新后的目标数据中的版本号,比较该版本号与该存储服务器中目标数据的版本号,如果该版本号比该存储服务器中目标数据的版本号新,则存储该更新后的目标数据,如果该存储服务器中目标数据的版本号比该版本号新,则放弃存储该更新后的目标数据。

那么,举例来说,目标数据的版本号为1.0时,当有业务服务器a和业务服务器b同时要对该目标数据进行更新时,业务服务器a和业务服务器b均读取该目标数据,此时,业务服务器a先对该目标数据进行更新,并将版本号修改为2.0后,将更新后的目标数据存储于存储服务器中。之后,业务服务器b对该目标数据进行更新,并将版本号修改为2.0后,由于存储服务器上的版本号与业务服务器b更新后的版本号相同,存储服务器将不会存储该业务服务器b更新后的目标数据,导致业务服务器b更新失败。此时,业务服务器b只能重新从服务器读取版本号为2.0的目标数据,对该目标数据进行更新后,将版本号修改为3.0,存储服务器才会存储业务服务器b更新后的目标数据。

采用这种“乐观锁”机制的相关技术,当针对目标数据的数据更新请求数量很多时,业务服务器将频繁面临更新失败的情况,并不断重试,该多次重试的过程将导致网络资源的浪费。

而在本发明实施例中,将针对同一个目标数据的多个数据更新请求,将该多个数据更新请求中的数据更新信息添加至同一信息队列中进行排序,每次在信息队列中只提取一个数据更新信息,当根据提取的数据更新信息对相对应的目标数据更新后,再根据该信息队列中的下一个数据更新信息,对该目标数据再次更新。而且上述添加和提取过程均需调用互斥锁成功后才能进行,避免了冲突。

也即是,通过采用“互斥锁”和“排队锁”相结合的机制,可以保证针对同一个目标数据的多个数据更新请求排队进行处理,从而保证多个数据更新请求之间不会产生冲突,避免了反复失败重试的风险,减少了网络资源的开销,提高了数据更新的效率。而且,与“乐观锁”机制相比,该业务服务器只需向该存储服务器发送一次数据更新请求即可,减少了该业务服务器与该存储服务器之间的传输次数,节省了传输资源,提高了数据更新的速度和效率,解决了在高冲突场景下性能低下的问题。

本发明实施例提供了一种排队机制,可以由存储服务器在信息队列中,按照排序信息对多个数据更新请求的数据更新信息进行排序,不仅避免了多个数据更新请求对同一目标数据同时进行更新而导致的冲突,而且,该业务服务器只需向该存储服务器发送一次数据更新请求即可,减少了该业务服务器与该存储服务器之间的传输次数,节省了传输资源,提高了数据更新的速度和效率。

进一步地,由于相关技术中目标数据通常需要编码、解码,才能在业务服务器和存储服务器之间传输,而本发明实施例中,由存储服务器更新自身存储的目标数据,避免了将目标数据传输至业务服务器的过程,从而无需进行编码和解码,提高了数据更新的效率。

进一步地,通过采用“互斥锁”机制,避免了冲突,减少了网络资源开销,提高了数据更新的效率。

上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

图3是本发明实施例提供的一种数据更新装置的结构示意图。该装置应用于存储服务器中,参见图3,该装置包括:接收模块301、添加模块302、提取模块303、更新模块304和反馈模块305。

该接收模块301用于执行上述图2所示实施例中的步骤202中的接收步骤。

该添加模块302用于执行上述图2所示实施例中的步骤202中的添加步骤。

该提取模块303用于执行上述图2所示实施例中的步骤203。

该更新模块304用于执行上述图2所示实施例中的步骤204。

该反馈模块305用于执行上述图2所示实施例中的步骤205。

可选地,该提取模块303还用于从该信息队列中提取时间戳最早的数据更新请求。

可选地,该提取模块303还用于从该信息队列中提取优先级最高的数据更新请求。

可选的,该添加模块302包括调用单元和释放单元。

该调用单元,用于调用该信息队列的互斥锁,将该数据更新信息添加至该信息队列中,该释放单元,用于释放该互斥锁。

可选地,该提取模块303包括调用单元和释放单元。

该调用单元用于调用该信息队列的互斥锁,提取该数据更新信息,该释放单元用于释放该互斥锁。

可选的,该更新模块304包括:读取单元、提取单元、更新单元和组合单元。

该读取单元用于读取目标数据,该提取单元用于提取目标字段,该更新单元用于对该目标字段进行更新,该组合单元用于将其他字段和更新后的目标字段组合。

可选地,该更新模块304,用于根据更新类型对该目标字段进行更新,或者将该目标字段替换为更新后的目标字段。

可选地,该更新模块304,包括:反序列化单元、更新单元和序列化单元。

该反序列化单元用于对该目标字段进行反序列化,该更新单元用于进行更新,该序列化单元用于将第二字段进行序列化。

可选地,该接收模块301还用于通过与该业务服务器之间的rpc接口,接收该数据更新请求。

可选地,该反馈模块305还用于通过调用与该业务服务器之间的rpc接口,向该业务服务器发送数据更新响应消息,该数据更新响应消息包括该更新后的目标数据。

图4是本发明实施例提供的一种数据更新装置的结构示意图。该装置应用于业务服务器中,参见图4,该装置包括:获取模块401、发送模块402和接收模块。

该获取模块401用于执行上述图2所示实施例中的步骤201中的获取步骤。

该发送模块402用于执行上述图2所示实施例中的步骤201中的发送步骤。

该接收模块403用于执行上述图2所示实施例中的步骤206。

可选地,该发送模块402还用于调用与该存储服务器之间的rpc接口,发送该数据更新请求。

可选地,该接收模块403还用于通过与该存储服务器之间的rpc接口,接收该存储服务器发送的数据更新响应消息,该数据更新响应消息包括该更新后的目标数据。

需要说明的是:上述实施例提供的数据更新装置在更新数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将存储服务器和业务服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据更新装置与数据更新方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5是根据一示例性实施例示出的一种数据更新装置500的框图。例如,装置500可以被提供为一存储服务器或业务服务器。参照图5,装置500包括处理组件522,其进一步包括一个或多个处理器,以及由存储单元532所代表的存储器资源,用于存储数据,也可以用于存储可由处理部件522的执行的指令,例如应用程序。存储单元532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件522被配置为执行指令,以对该存储单元532中存储的数据执行上述数据更新方法。

装置500还可以包括一个电源组件526被配置为执行装置500的电源管理,一个有线或无线网络接口550被配置为将装置500连接到网络,和一个输入输出(i/o)接口558。装置500可以操作基于存储在存储单元532的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

上述装置500可以用于执行上述实施例中存储服务器和业务服务器执行的步骤。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上该仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1