CN107943594B - 数据获取方法和装置 - Google Patents

数据获取方法和装置 Download PDF

Info

Publication number
CN107943594B
CN107943594B CN201610894361.4A CN201610894361A CN107943594B CN 107943594 B CN107943594 B CN 107943594B CN 201610894361 A CN201610894361 A CN 201610894361A CN 107943594 B CN107943594 B CN 107943594B
Authority
CN
China
Prior art keywords
cache server
target
data
distributed lock
target data
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
Application number
CN201610894361.4A
Other languages
English (en)
Other versions
CN107943594A (zh
Inventor
吴帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610894361.4A priority Critical patent/CN107943594B/zh
Publication of CN107943594A publication Critical patent/CN107943594A/zh
Application granted granted Critical
Publication of CN107943594B publication Critical patent/CN107943594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Abstract

本申请公开了数据获取方法和装置。方法的一具体实施方式包括:接收客户端发送的数据获取请求;从缓存服务器集群中选取缓存服务器作为目标缓存服务器;向目标缓存服务器发送数据获取请求,确定目标缓存服务器中是否存在目标数据;响应于确定目标缓存服务器中存在目标数据,接收目标缓存服务器发送的目标数据和目标数据的更新时间,向客户端发送目标数据,响应于确定当前时间大于更新时间,获取用于对查询目标数据的操作进行保护的全局分布式锁。该实施方式实现了区分热数据和冷数据,保证热数据在缓存服务器中长期有效,节省了缓存服务器的资源。

Description

数据获取方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及数据获取方法和装置。
背景技术
随着互联网高速发展,为缩短系统对客户端发送的请求的响应时间,通常需要大量使用缓存服务器。为提高并发性,通常需要部署多个缓存服务器集群。为保证各个缓存服务器集群中每个缓存服务器中的数据的一致性,需要对各个缓存服务器集群中每个缓存服务器中的数据同时进行更新等操作。
现有技术中的一种缓存机制是:接收客户端发送的数据获取请求;查看缓存服务器中是否存在该数据获取请求指示的待获取的数据;如果存在,则向客户端返回该数据;如果不存在,则访问数据库并读取该数据,并将该数据更新至缓存服务器中,同时向客户端返回该数据。然而,当缓存服务器中不存在待获取的数据时,各个请求都需要访问数据库,因访问量过大,造成数据库压力过大,甚至导致数据库宕机。如果使用分布式锁,只允许获取到该分布式锁的一个请求去访问数据库,造成其它请求被阻塞、响应时间过长等问题,降低了系统吞吐量、影响用户体验。
现有技术中的另一种缓存机制是:设置定时任务,定时从数据库中读取数据并将该数据更新至缓存服务器中;接收客户端发送的数据获取请求,从缓存服务器中搜索请求的数据;将搜索到的数据返回至客户端。然而,该缓存机制不能区分热数据和冷数据,造成大量的冷数据被存储至缓存服务器,造成资源的浪费。其中,热数据是指被访问频率高的数据,冷数据是指被访问频率低的数据。
发明内容
本申请的目的在于提出一种改进的数据获取方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种数据获取方法,所述方法包括:接收客户端发送的数据获取请求;从缓存服务器集群中选取缓存服务器作为目标缓存服务器;向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在目标数据,其中,所述目标数据是所述数据获取请求指示的待获取的数据;响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据和所述目标数据的更新时间,向所述客户端发送所述目标数据,响应于确定当前时间大于所述更新时间,获取用于对查询所述目标数据的操作进行保护的全局分布式锁。
在一些实施例中,所述方法还包括:响应于确定所述目标缓存服务器中不存在所述目标数据,执行如下发送步骤:等待预设的时长,向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在所述目标数据;响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数小于预设的第一阈值,则确定重新执行所述发送步骤。
在一些实施例中,所述方法还包括:响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据,向所述客户端发送所述目标数据。
在一些实施例中,所述方法还包括:响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数等于所述第一阈值,则向所述客户端发送空值,并获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
在一些实施例中,所述方法还包括:执行受所述全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间;将所述更新后的目标数据、所述更新后的更新时间、所述更新后的过期时间同步至所述缓存服务器集群中的每一个缓存服务器中。
在一些实施例中,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,包括:确定用于获取所述全局分布式锁的任务及所述任务的任务标识;对于所述任务,执行如下获取步骤:向所述缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令,其中,目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁;确定当前时间是否小于预设时间;响应于确定所述当前时间不小于所述预设时间,则向所述缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于接收的各个任务标识中不存在所述任务标识且所述获取步骤的执行次数小于预设的第二阈值,则确定重新执行所述获取步骤。
在一些实施例中,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,还包括:响应于所接收的各个任务标识中存在所述任务标识或所述获取步骤的执行次数不小于所述第二阈值,则确定获取所述全局分布式锁失败。
在一些实施例中,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,还包括:响应于确定所述当前时间小于所述预设时间,接收各个缓存服务器发送的表征所述指令是否执行成功的执行结果,其中,对于各个缓存服务器中的每一个缓存服务器,如果该缓存服务器执行所述指令成功,则将所述任务标识更新至该缓存服务器中的目标分布式锁的标识字段;根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁。
在一些实施例中,所述根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁,包括:如果所接收的各个执行结果均是表征所述指令执行成功的结果,则确定获取所述全局分布式锁成功;如果所接收的各个执行结果均是表征所述指令执行失败的结果,则确定获取所述全局分布式锁失败;如果所接收的各个执行结果中存在至少一个表征所述指令执行失败的结果和至少一个表征所述指令执行成功的结果,则向执行所述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收执行所述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于所述任务标识,则确定获取全局分布式锁成功,否则确定获取所述全局分布式锁失败。
第二方面,本申请提供了一种数据获取装置,所述装置包括:请求接收单元,配置用于接收客户端发送的数据获取请求;选取单元,配置用于从缓存服务器集群中选取缓存服务器作为目标缓存服务器;第一请求发送单元,配置用于向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在目标数据,其中,所述目标数据是所述数据获取请求指示的待获取的数据;第一目标数据发送单元,配置用于响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据和所述目标数据的更新时间,向所述客户端发送所述目标数据,响应于确定当前时间大于所述更新时间,获取用于对查询所述目标数据的操作进行保护的全局分布式锁。
在一些实施例中,所述装置还包括:第二请求发送单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据,执行如下发送步骤:等待预设的时长,向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在所述目标数据;确定单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数小于预设的第一阈值,则确定重新执行所述发送步骤。
在一些实施例中,所述装置还包括:第二目标数据发送单元,配置用于响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据,向所述客户端发送所述目标数据。
在一些实施例中,所述装置还包括:第三目标数据发送单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数等于所述第一阈值,则向所述客户端发送空值,并获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
在一些实施例中,所述装置还包括:查询单元,配置用于执行受所述全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间;同步单元,配置用于将所述更新后的目标数据、所述更新后的更新时间、所述更新后的过期时间同步至所述缓存服务器集群中的每一个缓存服务器中。
在一些实施例中,所述第一目标数据发送单元或所述第三目标数据发送单元包括:全局分布式锁获取子单元,配置用于获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
在一些实施例中,所述全局分布式锁获取子单元包括:任务确定模块,配置用于确定用于获取所述全局分布式锁的任务及所述任务的任务标识;指令发送模块,配置用于对于所述任务,执行如下获取步骤:向所述缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令,其中,目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁;确定当前时间是否小于预设时间;标识接收模块,配置用于响应于确定所述当前时间不小于所述预设时间,则向所述缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于接收的各个任务标识中不存在所述任务标识且所述获取步骤的执行次数小于预设的第二阈值,则确定重新执行所述获取步骤。
在一些实施例中,所述全局分布式锁获取子单元还包括:第一结果确定模块,配置用于响应于所接收的各个任务标识中存在所述任务标识或所述获取步骤的执行次数不小于所述第二阈值,则确定获取所述全局分布式锁失败。
在一些实施例中,所述全局分布式锁获取子单元还包括:结果接收模块,配置用于响应于确定所述当前时间小于所述预设时间,接收各个缓存服务器发送的表征所述指令是否执行成功的执行结果,其中,对于各个缓存服务器中的每一个缓存服务器,如果该缓存服务器执行所述指令成功,则将所述任务标识更新至该缓存服务器中的目标分布式锁的标识字段;第二结果确定模块,配置用于根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁。
在一些实施例中,所述第二结果确定模块包括:第一确定子模块,配置用于如果所接收的各个执行结果均是表征所述指令执行成功的结果,则确定获取所述全局分布式锁成功;第二确定子模块,配置用于如果所接收的各个执行结果均是表征所述指令执行失败的结果,则确定获取所述全局分布式锁失败;第三确定子模块,配置用于如果所接收的各个执行结果中存在至少一个表征所述指令执行失败的结果和至少一个表征所述指令执行成功的结果,则向执行所述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收执行所述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于所述任务标识,则确定获取所述全局分布式锁成功,否则确定获取所述全局分布式锁失败。
本申请提供的数据获取方法和装置,通过接收客户端发送的数据获取请求;之后,确定目标缓存服务器中是否存在目标数据,响应于确定上述目标服务器中存在上述目标数据,则获取上述目标数据和上述目标数据的更新时间;然后,将上述目标数据发送至客户端;最后,确定当前时间是否大于上述更新时间,如果当前时间大于上述更新时间,则确定上述目标数据是热数据,需要获取全局分布式锁,只有成功获取到上述全局分布式锁的请求,才能访问数据库,减小了访问数据库的次数,降低了数据库的压力。缓存服务器中的数据也具有过期时间,如果在该数据的更新时间至过期时间这段时间段内,缓存服务器一直没有接收到获取该数据的请求,则确定该数据是冷数据,缓存服务器将会删除该冷数据,以节省缓存服务器的资源。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的数据获取方法的一个实施例的流程图;
图3是根据本申请的数据获取方法的一个应用场景的示意图;
图4是根据本申请的数据获取方法的又一个实施例的流程图;
图5是对图4的流程图中获取全局分布式锁的分解流程图;
图6是根据本申请的数据获取装置的一个实施例的结构示意图;
图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的数据获取方法或数据获取装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104、106,服务器105,缓存服务器集群112、113和缓存服务器107、108、109、110、111。其中,缓存服务器107、108归属于缓存服务器集群112,缓存服务器109、110、111归属于缓存服务器集群113。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络106用以在服务器105和缓存服务器107、108、109、110、111之间提供通信链路的介质。网络104、106可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。服务器105通过网络106与缓存服务器107、108、109、110、111交互,以接收或发送消息等。例如,服务器105从缓存服务器中107、108、109、110、111获取用户请求的目标数据,或者向缓存服务器107、108、109、110、111发送待更新的目标数据。
终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。终端设备101、102、103可以是支持发送数据获取请求的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103发送的数据获取请求提供支持的网站服务器。网站服务器可以接收数据获取请求,然后,从缓存服务器中查询用户请求的目标数据,之后,将查询到的目标数据反馈给终端设备。
缓存服务器集群112、113是由具有相同功能的多个缓存服务器组成的服务器群。在实际应用中,需要保证缓存服务器集群112、113中的各个缓存服务器107、108、109、110、111中数据的一致性。其中,缓存服务器107、108、109、110、111可以是存放频繁被访问的数据的服务器,包括但不限于redis缓存服务器、memcached缓存服务器等等,其中,上述redis缓存服务器是指已知的开源的基于内存存储的数据结构服务器,上述memcached缓存服务器是已知的高性能的分布式缓存服务器。
需要说明的是,本申请实施例所提供的数据获取方法一般由服务器105执行,相应地,数据获取装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络、服务器、缓存服务器集群和缓存服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器、缓存服务器集群和缓存服务器。
继续参考图2,示出了根据本申请的数据获取方法的一个实施例流程200。所述的数据获取方法,包括以下步骤:
步骤201,接收客户端发送的数据获取请求。
在本实施例中,数据获取方法运行其上的电子设备(例如图1所示的服务器105)可以通过有线连接方式或者无线连接方式从客户端接收数据获取请求。上述客户端可以是安装在手机或计算机上的网页浏览器应用、购物类应用、搜索类应用等。上述数据获取请求可以是指示用户期望浏览的网页数据的请求。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
步骤202,从缓存服务器集群中选取缓存服务器作为目标缓存服务器。
在本实施例中,基于在步骤201中接收到的数据获取请求,上述电子设备可以首先加载配置文件,其中,上述配置文件中记载了可能存储上述数据获取请求指示的待获取数据的缓存服务器集群的信息;之后,读取上述配置文件,确定可能存储上述待获取数据的至少一个缓存服务器集群(例如图1所示的缓存服务器集群112、113),其中,上述至少一个缓存服务器集群中的每一个缓存服务器中存储的数据具有一致性;之后,可以采用各种算法从上述至少一个缓存服务器集群中选取一个缓存服务器作为目标缓存服务器。
在本实施例的一些可选的实现方式中,上述电子设备可以首先读取配置文件确定可能存储上述待获取数据的各个缓存服务器集群,及各个缓存服务器集群的地理位置信息、上述电子设备的地理位置信息;然后,上述电子设备可以根据各个缓存服务器集群的地理位置信息、上述电子设备的地理位置信息,选取距上述电子设备的位置最近的一个缓存服务器集群作为目标缓存服务器集群;之后,上述电子设备可以根据负载均衡算法从该目标缓存服务器集群中选取一个缓存服务器作为目标缓存服务器。
在本实施例的一些可选的实现方式中,上述电子设备可以首先读取配置文件确定可能存储上述待获取数据的各个缓存服务器集群;然后,上述电子设备可以根据负载均衡算法选取一个缓存服务器集群作为目标缓存服务器集群;之后,上述电子设备可以从该目标缓存服务器集群中随机选取一个缓存服务器作为目标缓存服务器。
步骤203,向目标缓存服务器发送数据获取请求,确定目标缓存服务器中是否存在目标数据。
在本实施例中,上述电子设备可以通过有线连接方式或无线连接方式向上述目标缓存服务器发送上述数据获取请求。上述目标缓存服务器首先接收上述数据获取请求;然后,查询上述目标缓存服务器中是否存在上述目标数据,其中,上述目标数据是上述数据获取请求指示的待获取的数据;如果上述目标缓存服务器中存在上述目标数据,上述目标缓存服务器可以直接将上述目标数据发送至上述电子设备;如果上述目标缓存服务器中不存在上述目标数据,上述目标缓存服务器可以向上述电子设备发送空值,也可以向上述电子设备发送表征没有查询到上述目标数据的查询结果;最后,上述电子设备可以根据接收的上述目标缓存服务器发送的信息,确定上述目标缓存服务器中是否存在上述目标数据。
步骤204,响应于确定目标缓存服务器中存在目标数据,接收目标缓存服务器发送的目标数据和目标数据的更新时间,向客户端发送目标数据,响应于确定当前时间大于更新时间,获取用于对查询目标数据的操作进行保护的全局分布式锁。
在本实施例中,响应于确定上述目标缓存服务器中存在上述目标数据,上述电子设备首先接收上述目标缓存服务器发送的上述目标数据和上述目标数据的更新时间;然后,将接收的上述目标数据发送至上述客户端;之后,比较当前时间是否大于上述更新时间,如果当前时间大于上述更新时间,则确定上述目标数据是热数据,需要获取全局分布式锁,其中,上述全局分布式是用于保护从数据库中查询目标数据的操作的全局分布式锁。
在本实施例中,如果在步骤201中没有接收到客户端发送的数据获取请求,即使当前时间大于缓存服务器中数据的更新时间,也不会获取全局分布式锁,如果在该数据的更新时间至该数据的过期时间这段时间段内,缓存服务器一直没有接收到上述电子设备发送的获取该数据的请求,则确定该数据是冷数据,缓存服务器将会删除该冷数据,以节省缓存服务器的资源。作为公知常识,缓存服务器中的数据具有过期时间。
在本实施例的一些可选的实现方式中,存储在缓存服务器中的数据的更新时间可以用时间戳表示,例如,2016-09-10 08:10:00。
在本实施例的一些可选的实现方式中,可以用数据的过期时间减去预设的时间段表征更新时间。作为示例,数据的过期时间是2016-09-10 08:16:00,预设的时间段是6分钟,则该数据的更新时间等于2016-09-10 08:10:00。表示在该数据的过期时间前的6分钟内,如果接收到客户端发送的获取该数据的请求,则获取全局分布式锁。
继续参见图3,图3是根据本实施例的数据获取方法的应用场景的一个示意图300。在图3的应用场景中,用户首先发起一个购物类网页数据获取请求;之后,网站服务器根据配置文件从至少一个缓存服务器集群中选择与其安装在同一机房的缓存服务器集群作为目标缓存服务器集群;然后,网站服务器从该目标缓存服务器集群中随机选取一个缓存服务器作为目标缓存服务器;然后,网站服务器从该目标缓存服务器中检索到用户请求指示的目标数据,并将该目标数据返回,最后,用户在浏览器上看到智能电视的详细信息,该详细信息包括:标题信息301、尺寸信息302、颜色信息303。同时,网站服务器通过比较确定当前时间大于该目标数据的更新时间,然后,网站服务器获取全局分布式锁,其中,该全局分布式锁是用于对从数据库中查询数据获取请求指示的数据的操作进行保护的分布式锁。
本申请的上述实施例提供的方法通过确定当前数据获取请求的时间是否大于存储在缓存服务器中的目标数据的更新时间,如果大于,则确定该目标数据为热数据,则需要获取全局分布式锁。只有成功获取到上述全局分布式锁的请求,才能访问数据库,减小了访问数据库的次数,降低了数据库的压力。而对于缓存服务器中某个数据,如果在从该数据的更新时间至该数据的过期时间这一时间段内一直没有接收到客户端发送的获取该数据的请求,则确定该数据为冷数据,则不需要获取全局分布式锁。一旦当前时间大于该数据的过期时间,该数据将会被从缓存服务器中删除。从而节省缓存服务器的资源。
进一步参考图4,其示出了数据获取方法的又一个实施例的流程400。该数据获取方法的流程400,包括以下步骤:
步骤401,接收客户端发送的数据获取请求。
在本实施例中,数据获取方法运行其上的电子设备(例如图1所示的服务器105)可以通过有线连接方式或者无线连接方式从客户端接收数据获取请求。
步骤402,从缓存服务器集群中选取缓存服务器作为目标缓存服务器。
在本实施例中,上述电子设备从缓存服务器集群中选取缓存服务器作为目标缓存服务器的方法可以参照步骤202,在此不再赘述。
步骤403,向目标缓存服务器发送数据获取请求,确定目标缓存服务器中是否存在目标数据。
在本实施例中,上述电子设备向目标缓存服务器发送数据获取请求,确定目标缓存服务器中是否存在目标数据的方法可以参照步骤203,在此不再赘述。
在本实施例中,如果上述目标缓存服务器中存在上述目标数据,则执行步骤404,如果上述目标缓存服务器中不存在目标数据,则执行步骤405。
步骤404,接收目标缓存服务器发送的目标数据和目标数据的更新时间,向客户端发送目标数据,响应于确定当前时间大于更新时间,获取用于对查询目标数据的操作进行保护的全局分布式锁。
在本实施例中,上述电子设备具体实现步骤404的方法可以参照步骤204,在此不再赘述。
在本实施例中,上述电子设备只有在确定上述目标缓存服务器中存在上述目标数据,且当前时间大于上述目标数据的更新时间时,才会获取用于对查询目标数据的操作进行保护的全局分布式锁。只有在获取该全局分布式锁成功时,上述电子设备才继续执行步骤411。
步骤405,执行如下发送步骤:等待预设的时长,向目标缓存服务器发送数据获取请求。
在本实施例中,基于步骤403中确定目标缓存服务器中不存在上述目标数据,上述电子设备可以从配置文件或代码文件中读取预设的时长,之后,等待该预设的时长,再次向上述目标缓存服务器发送上述数据获取请求。其中,上述预设的时长可以是根据业务需要设置的任意时长,例如,50毫秒。
步骤406,确定目标缓存服务器中是否存在目标数据。
在本实施例中,基于在步骤405中发送上述数据获取请求后,上述目标缓存服务器接收上述数据请求,检索目标缓存服务器中是否存在请求的目标数据,并将检索结果发送至上述电子设备;然后,上述电子设备接收上述目标缓存服务器发送的检索结果,并根据该检索结果确定目标缓存服务器中是否存在上述目标数据。
在本实施例中,上述电子设备如果确定上述目标缓存服务器中不存在上述目标数据,则执行步骤408。上述电子设备如果确定上述目标缓存服务器中存在上述目标数据,则执行步骤407。
步骤407,接收目标缓存服务器发送的目标数据,向客户端发送目标数据。
在本实施例中,基于在步骤406中,上述电子设备已经确定上述目标缓存服务器中存在上述目标数据,则上述电子设备可以监听上述目标缓存服务器是否发送上述目标数据,如果上述电子设备监听到上述目标缓存服务器发送上述目标数据,则接收上述目标缓存服务器发送的上述目标数据;之后,上述电子设备可以将接收的上述目标数据发送至上述客户端。
步骤408,确定发送步骤的执行次数是否小于预设的第一阈值。
在本实施例中,基于在步骤406中确定上述目标缓存服务器中不存在上述目标数据,则确定步骤405中发送步骤的执行次数。上述电子设备可以设置一变量用于记录步发送步骤的执行次数,上述电子设备可以在接收客户端发送的数据获取请求时,将上述变量初始化0。每执行一次发送步骤,则将上述变量加1。首先,上述电子设备可以读取该变量用以确定发送步骤的执行次数;之后,上述电子设备可以从配置文件或代码文件中读取预设的第一阈值,其中,上述第一阈值是用于指示上述发送步骤允许执行的最大次数;然后,通过比较确定上述发送步骤的执行次数是否小于上述第一阈值。作为示例,可以预先设置上述第一阈值的值为4。
在本实施例中,响应于上述电子设备确定上述发送步骤的执行次数小于上述第一阈值,则执行步骤405,否则执行步骤409。
步骤409,确定发送步骤的执行次数是否等于预设的第一阈值。
在本实施例中,基于在步骤408中确定的上述发送步骤的执行次数不小于上述第一阈值,通过比较确定上述发送步骤的执行次数是否等于上述第一阈值。
在本实施例中,响应于上述电子设备确定上述发送步骤的执行次数等于上述第一阈值,则执行步骤410。
步骤410,向客户端发送空值,并获取用于对查询目标数据的操作进行保护的全局分布式锁。
在本实施例中,基于上述目标缓存服务器中不存在上述目标数据,且上述发送步骤的执行次数等于上述第一阈值,则上述电子设备向上述客户端发送空值,并获取用于对查询目标数据的操作进行保护的全局分布式锁。响应于获取该全局分布式锁成功,上述电子设备继续执行步骤411。
在本实施例中,在步骤404和步骤410中都需要上述电子设备获取用于对查询目标数据的操作进行保护的全局分布式锁。在步骤404中上述电子设备获取上述全局分布式锁的流程与步骤410中上述电子设备获取上述全局分布式锁的流程相同。
在本实施例中,进一步参考图5,图5是对上述步骤404或步骤410中电子设备获取用于对查询目标数据的操作进行保护的全局分布式锁的流程图。在图5中,将步骤404或步骤410中获取用于对查询目标数据的操作进行保护的全局分布式锁的步骤具体分解成10个子步骤,即:步骤40401、步骤40402、步骤40403、步骤40404、步骤40405、步骤40406、步骤40407、步骤40408、步骤40409、步骤40410。
步骤40401,确定用于获取全局分布式锁的任务及任务的任务标识。
在本实施例中,上述电子设备可以预先创建至少一个任务,对于至少一个任务中的每一个任务,该任务都具有唯一的任务标识。其中,该任务标识可以用该电子设备的IP(Internet Protocol,网络之间互联协议)地址加该任务的任务ID(identification,身份)组成的序列表示。作为示例,如果缓存服务器是redis缓存服务器,上述电子设备预先创建的任务是指预先创建的redis实例,其中,上述redis实例是现有技术,不再赘述。
在本实施例中,首先,上述电子设备可以从至少一个任务中,随机选取一个任务,其中,该任务用于获取上述全局分布式锁;之后,上述电子设备读取该任务的任务标识。
步骤40402,对于该任务,执行如下获取步骤:向缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令。
在本实施例中,对于步骤40401中确定的任务,执行如下的获取步骤:向各个缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令。其中,上述目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁,上述指令是指将该任务的任务标识写入该目标分布式锁的标识字段的指令。
在本实施例中,对于各个缓存服务器集群中的每一个缓存服务器,如果该缓存服务器接收到上述指令,则执行上述指令,即将上述任务的任务标识写入该缓存服务器的目标分布式锁的标识字段;之后,该缓存服务器向上述电子设备返回表征上述指令是否执行成功的执行结果。
步骤40403,确定当前时间是否小于预设时间。
在本实施例中,对于上述任务,上述电子设备首先读取当前时间、预设时间,其中,上述预设时间是用于表示发送的上述指令的超时时间的时间阈值;之后,响应于上述电子设备发送上述指令之后,一直没有接收到各个缓存服务器返回的执行结果,上述电子设备可以通过比较确定上述当前时间是否小于上述预设时间,如果上述当前时间小于上述预设时间,则表示发送的上述指令没有超时,如果上述当前时间不小于上述预设时间,则表示发送的上述指令已经超时。上述电子设备可以采用发送指令时的时间加上预设的时间段表示上述预设时间。作为示例,发送指令的时间是2016-09-10 08:16:00,预设的时间段是2秒,则预设时间是2016-09-10 08:16:02。
在本实施例中,上述电子设备如果确定上述当前时间小于上述预设时间,则执行步骤40409,否则执行步骤40404。
步骤40404,向缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求。
在本实施例中,基于在步骤40403中,上述电子设备确定上述当前时间不小于上述预设时间,即发送的上述指令已经超时,则上述电子设备向各个缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求。首先,该缓存服务器接收上述请求;之后,读取上述请求指示的目标分布式锁的标识字段;最后,将上述读取到的任务标识发送至上述电子设备。
步骤40405,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识。
在本实施例中,上述电子设备接收每一个缓存服务器发送的该缓存服务器的任务标识字段。其中,上述任务标识可以是该缓存服务器成功执行步骤40402中的指令时,成功写入的上述任务的任务标识;上述任务标识也可以是成功写入的其他任务的任务标识。作为示例,上述电子设备预先创建2个任务,任务标识分别为A1、B1。在系统中,存在2个缓存服务器集群,其中一个缓存服务器集群中存在缓存服务器M1、M2,另一个缓存服务器集群中存在缓存服务器N1;之后,对于任务标识分别为A1、B1的任务,电子设备同时向缓存服务器M1、M2、N1发送占用相同目标数据对应的分布式锁的指令getNX A1、getNX B1;然后,缓存服务器M1执行getNX A1指令成功,则缓存服务器M1中的目标分布式锁的任务标识字段存储的任务标识是A1,缓存服务器M2、N1执行getNX B1指令成功,则缓存服务器M2、N1中的目标分布式锁的任务标识字段存储的任务标识是B1。对于任务标识为A1或B1的任务,上述电子设备接收的缓存服务器M1、M2、N1返回的任务标识同为A1、B1、B1。
步骤40406,接收的各个任务标识中是否存在上述任务标识。
在本实施例中,上述电子设备可以通过校验确定接收的各个任务标识中是否存在上述任务的任务标识。作为示例,对于任务标识为A1的任务,上述电子设备接收的缓存服务器M1、M2、N1返回的任务标识为A1、B1、B1,因上述任务的任务标识是A1,通过校验可以确定接收的任务标识A1、B1、B1中存在上述任务的任务标识。
在本实施例中,上述电子设备如果接收的各个任务标识中存在上述任务的任务标识,则执行步骤40408,否则执行步骤40407。
步骤40407,获取步骤的执行次数是否小于预设的第二阈值。
在本实施例中,基于在步骤40406中,上述电子设备接收的各个任务标识中不存在上述任务的任务标识,首先,上述电子设备可以读取用于记录上述获取步骤执行次数的变量值,确定上述获取步骤的执行次数;之后,上述电子设备可以从配置文件中读取预设的第二阈值;最后,上述电子设备可以通过比较确定上述获取步骤的执行次数是否小于上述第二阈值。如果上述获取步骤的执行次数小于上述第二阈值,则重新执行步骤40402,否则执行步骤40408。
步骤40408,获取全局分布式锁失败。
在本实施例中,基于在步骤40406中上述电子设备接收的各个任务标识中存在上述任务的任务标识或基于在步骤40407中确定上述获取步骤的执行次数不小于上述第二阈值,都表征获取全局分布式锁失败。
步骤40409,接收各个缓存服务器发送的表征指令是否执行成功的执行结果。
在本实施例中,基于在步骤40403中,上述电子设备确定上述当前时间小于上述预设时间,即发送的上述指令没有超时,接收各个缓存服务器发送的表征指令是否执行成功的执行结果。
步骤40410,根据所接收的各个执行结果,确定是否成功获取全局分布式锁。
在本实施例中,上述电子设备根据接收的各个缓存服务器发送的执行结果,根据预设的第一规则,确定是否成功获取全局分布式锁。其中,上述第一规则如下:如果所接收的各个执行结果均是表征上述指令执行成功的结果,则确定获取上述全局分布式锁成功;如果所接收的各个执行结果均是表征上述指令执行失败的结果,则确定获取上述全局分布式锁失败;如果所接收的各个执行结果中存在至少一个表征上述指令执行失败的结果和至少一个表征上述指令执行成功的结果,则向执行上述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,之后,接收执行上述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于上述任务标识,则确定获取上述全局分布式锁成功,否则确定获取上述所述全局分布式锁失败。
作为示例,对于任务标识是222.249.234.122.5的任务,其中,222.249.234.122是上述任务所在的电子设备的IP地址,5是上述任务的任务ID,上述电子设备曾向缓存服务器M1、M2、M3、N1、N2发送指令;之后,缓存服务器M3、N2执行上述指令成功,将上述任务的任务标识222.249.234.122.5成功写入其缓存服务器的目标分布式锁的标识字段,而缓存服务器M1、M2、N1执行上述指令失败,缓存服务器M1成功将另一个任务的任务标识222.249.234.122.1写入该缓存服务器的目标分布式锁的标识字段,而缓存服务器M2成功将另一个任务的任务标识222.249.234.122.2写入该缓存服务器的目标分布式锁的标识字段,而缓存服务器N1成功将另一个任务的任务标识222.249.234.122.3写入该缓存服务器的目标分布式锁的标识字段;然后,因缓存服务器M1、M2、N1执行上述指令失败,上述电子设备向缓存服务器M1、M2、N1发送获取其缓存服务器中目标分布式锁的标识字段请求;然后,上述电子设备接收缓存服务器M1、M2、N1分别发送的其目标分布式锁的任务标识222.249.234.122.1、222.249.234.122.2、222.249.234.122.3;最后,上述电子设备通过比较确定接收的各个任务标识222.249.234.122.1、222.249.234.122.2、222.249.234.122.3都小于上述任务的任务标识222.249.234.122.5,则确定获取全局分布式锁成功。
步骤411,执行受全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间。
在本实施例中,基于上述电子设备在步骤404中成功获取到上述全局分布式锁或在步骤410中成功获取到上述全局分布式锁,上述电子设备可以执行受上述全局分布式锁保护的数据查询操作。首先,上述电子设备可以读取配置文件,确定待连接的数据库;之后,上述电子设备与上述数据库建立连接;然后,上述电子设备根据上述客户端发送的数据获取请求,确定查询条件;最后,上述电子设备根据上述查询条件从上述数据库中查询上述数据获取请求指示的更新后的目标数据。
在本实施例中,上述电子设备可以根据预设的第二规则生成上述更新后的目标数据的新的更新时间和新的过期时间。其中,上述新的更新时间也称之为更新后的更新时间。上述新的过期时间也称之为更新后的过期时间。
在本实施例的一些可选的实现方式中,上述第二生成规则可以是,上述电子设备将当前时间加上预设的第一时间段作为更新后的过期时间,上述过期时间减去预设的第二时间段作为更新后更新时间。上述第一时间段大于上述第二时间段。作为示例,当前时间是2016-09-14 17:07:00,预设的第一时间段是30分钟,则更新后的过期时间是2016-09-1417:37:00,预设的第二时间段是5分钟,则更新后的更新时间是2016-09-14 17:32:00。
在本实施例的一些可选的实现方式中,上述第二生成规则也可以是,上述电子设备读取上述目标缓存服务器中上述目标数据的更新时间和过期时间,将上述更新时间和过期时间分别加上预设的第三时间段作为更新后的更新时间和更新后的过期时间。作为示例,读取的目标缓存服务器中的目标数据的更新时间和过期时间分别是2016-09-14 15:07:00、2016-09-14 15:17:00,预设的第三时间段1小时,则更新后的更新时间和更新后的过期时间分别是2016-09-14 16:07:00、2016-09-14 16:17:00。
步骤412,将更新后的目标数据、更新后的更新时间、更新后的过期时间同步至缓存服务器集群中的每一个缓存服务器中。
在本实施例中,上述电子设备可以将上述更新后的目标数据、上述更新后的更新时间、上述更新后的过期时间发送至各个缓存服务器集群中的每一个缓存服务器;之后,每一个缓存服务器接收上述电子设备发送的上述更新后的目标数据、上述更新后的更新时间、上述更新后的过期时间;然后,缓存服务器根据目标数据的唯一标识,检索该缓存服务器中是否存在与上述唯一标识相同的原目标数据,如果不存在,则保存上述接收的上述更新后的目标数据、上述更新后的更新时间、上述更新后的过期时间;如果存在,该缓存服务器可以将原目标数据、上述原目标数据的更新时间和上述原目标数据的过期时间删除,并保存上述接收的上述更新后的目标数据、上述更新后的更新时间、上述更新后的过期时间。
从图4中可以看出,本实施例中数据获取方法的流程400突出了获取全局分布式锁的步骤,该全局分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁。由此,本实施例描述的方案解决了各个任务获取相同目标数据时,如果缓存服务器中不存在该目标数据时,同时查询数据库,造成数据库压力过大的问题;该流程400还突出将更新后的目标数据、更新后的更新时间、更新后的过期时间同步到各个缓存服务器集群中的每一个缓存服务器中的步骤,保证缓存服务器中热数据的时效性和长期有效性。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种数据获取装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例所述的数据获取装置600包括:请求接收单元601、选取单元602、第一请求发送单元603、第一目标数据发送单元604。其中,上述请求接收单元601配置用于接收客户端发送的数据获取请求;上述选取单元602配置用于从缓存服务器集群中选取缓存服务器作为目标缓存服务器;上述第一请求发送单元603配置用于向上述目标缓存服务器发送上述数据获取请求,确定上述目标缓存服务器中是否存在目标数据,其中,上述目标数据是上述数据获取请求指示的待获取的数据;上述第一目标数据发送单元604配置用于响应于确定上述目标缓存服务器中存在上述目标数据,接收上述目标缓存服务器发送的上述目标数据和上述目标数据的更新时间,向上述客户端发送上述目标数据,响应于确定当前时间大于上述更新时间,获取用于对查询上述目标数据的操作进行保护的全局分布式锁。
在本实施例中,数据获取装置600的请求接收单元601可以通过有线连接方式或者无线连接方式从客户端接收数据获取请求。上述客户端可以是安装在手机或计算机上的网页浏览器应用、购物类应用、搜索类应用等。上述数据获取请求可以是指示用户期望浏览的网页数据的请求。
在本实施例中,基于请求接收单元601接收的数据获取请求,上述选取单元602可以首先读取配置文件确定可能存储上述数据获取请求指示的待获取数据的至少一个缓存服务器集群;之后,可以采用负载均衡算法从上述至少一个缓存服务器集群中选取一个缓存服务器集群作为目标缓存服务器集群;最后,从上述目标缓存服务器集群中随机选取一个缓存服务器作为目标缓存服务器。
在本实施例中,上述第一请求发送单元603可以通过有线连接方式或无线连接方式向上述目标缓存服务器发送上述数据获取请求。上述目标缓存服务器首先接收上述数据获取请求;然后,查询上述目标缓存服务器中是否存在上述目标数据,其中,上述目标数据是上述数据获取请求指示的待获取的数据;如果上述目标缓存服务器中存在上述目标数据,上述目标缓存服务器可以直接将上述目标数据发送至上述电子设备;如果上述目标缓存服务器中不存在上述目标数据,上述目标缓存服务器可以向上述电子设备发送空值,也可以向上述电子设备发送表征没有查询到上述目标数据的查询结果;最后,上述电子设备可以根据接收的上述目标缓存服务器发送的信息,确定上述目标缓存服务器中是否存在上述目标数据。
在本实施例中,基于上述第一请求发送单元603确定上述目标缓存服务器中存在上述目标数据,上述第一目标数据发送单元604首先接收上述目标缓存服务器发送的上述目标数据和上述目标数据的更新时间;然后,将接收的上述目标数据发送至上述客户端;之后,比较当前时间是否大于上述更新时间,如果当前时间大于上述更新时间,则确定上述目标数据是热数据,需要获取全局分布式锁,其中,上述全局分布式是用于保护从数据库中查询目标数据的操作的全局分布式锁。如果没有接收到数据获取请求,即使当前时间大于缓存服务器中数据的更新时间,也不会获取全局分布式锁,如果在该数据的更新时间至该数据的过期时间这段时间段内,缓存服务器一直没有接收到客户端发送的获取该数据的请求,则确定该数据是冷数据,缓存服务器将会删除该冷数据,以节省缓存服务器的资源。作为公知常识,缓存服务器中的数据具有过期时间。
在本实施例的一些可选的实现方式中,基于上述第一请求发送单元603确定上述目标缓存服务器中不存在上述目标数据,上述数据获取装置600还可以包括第二请求发送单元605,上述第二请求发送单元605配置用于执行如下发送步骤:等待预设的时长,向上述目标缓存服务器发送上述数据获取请求,确定上述目标缓存服务器中是否存在上述目标数据。
在本实施例的一些可选的实现方式中,基于上述第二请求发送单元605确定上述目标缓存服务器中存在上述目标数据,上述数据获取装置600还可以包括第二目标数据发送单元606,上述第二目标数据发送单元606配置用于接收上述目标缓存服务器发送的上述目标数据,向上述客户端发送上述目标数据。
在本实施例的一些可选的实现方式中,基于上述第二请求发送单元605确定上述目标缓存服务器中不存在上述数据且上述发送步骤的执行次数小于预设的第一阈值,上述数据获取装置600还可以包括确定单元607,上述确定单元607配置用于跳转至上述第二请求发送单元605,上述第二请求发送单元605继续执行发送步骤。
在本实施例的一些可选的实现方式中,基于上述第二请求发送单元605确定上述目标缓存服务器中不存在上述目标数据且上述发送步骤的执行次数等于上述第一阈值,上述数据获取装置600还可以包括第三目标数据发送单元608,上述第三目标数据发送单元608配置用于向上述客户端发送空值,并获取用于对查询上述目标数据的操作进行保护的全局分布式锁。
在本实施例的一些可选的实现方式中,基于上述第一目标数据发送单元604或上述第三目标数据发送单元608成功获取到对查询上述目标数据的操作进行保护的全局分布式锁,上述数据获取装置600还可以包括查询单元609,配置用于执行受上述全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间。
在本实施例的一些可选的实现方式中,基于上述查询单元609成功获取到更新后的目标数据、更新后的更新时间、更新后的过期时间,上述数据获取装置600还可以包括同步单元610,上述同步单元610配置用于将上述更新后的目标数据、上述更新后的更新时间、上述更新后的过期时间同步至各个缓存服务器集群中的每一个缓存服务器中。
在本实施例的一些可选的实现方式中,上述第一目标数据发送单元604和上述第三目标数据发送单元608包括全局分布式锁子单元(图6未示出),上述全局分布式锁子单元配置用于获取用于对查询上述目标数据的操作进行保护的全局分布式锁。上述全局分布式锁子单元包括:任务确定模块(图6未示出)、指令发送模块(图6未示出)。其中,上述任务确定模块配置用于确定获取全局分布式锁的任务及上述任务的任务标识;上述指令发送模块配置用于对于上述任务,执行如下获取步骤:向上述缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令,其中,目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁;确定当前时间是否小于预设时间。
在本实施例的一些可选的实现方式中,基于上述指令发送模块确定上述当前时间不小于上述预设时间,上述全局分布式锁子单元还可以包括标识接收模块。其中,上述标识接收模块配置用于向上述缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于接收的各个任务标识中不存在上述任务标识且上述获取步骤的执行次数小于预设的第二阈值,则跳转至上述指令发送模块,上述指令发送模块重新执行上述获取步骤。
在本实施例的一些可选的实现方式中,上述全局分布式锁子单元还可以包括第一结果确定模块。其中,上述第一结果确定模块配置用于响应于所接收的各个任务标识中存在上述任务标识或上述获取步骤的执行次数不小于上述第二阈值,则确定获取上述全局分布式锁失败。
在本实施例的一些可选的实现方式中,基于上述指令发送模块确定上述当前时间小于上述预设时间,上述全局分布式锁子单元还可以包括结果接收模块。其中,上述结果接收模块配置用于接收各个缓存服务器发送的表征上述指令是否执行成功的执行结果,其中,对于各个缓存服务器中的每一个缓存服务器,如果该缓存服务器执行上述指令成功,则将上述任务标识更新至该缓存服务器中的目标分布式锁的标识字段。
在本实施例的一些可选的实现方式中,基于上述结果接收模块接收到各个缓存服务器发送的表征上述指令是否执行成功的执行结果,上述全局分布式锁子单元还可以包括第二结果确定模块。其中,上述第二结果确定模块配置用于根据所接收的各个执行结果,确定是否成功获取上述全局分布式锁。
在本实施例的一些可选的实现方式中,上述第二结果确定模块可以包括:第一确定子模块、第二确定子模块、第三确定子模块。其中,上述第一确定子模块配置用于如果所接收的各个执行结果均是表征上述指令执行成功的结果,则确定获取上述全局分布式锁成功;上述第二确定子模块配置用于如果所接收的各个执行结果均是表征上述指令执行失败的结果,则确定获取上述全局分布式锁失败;上述第三确定子模块配置用于如果所接收的各个执行结果中存在至少一个表征上述指令执行失败的结果和至少一个表征上述指令执行成功的结果,则向执行上述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收执行上述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于上述任务标识,则确定获取上述全局分布式锁成功,否则确定获取上述全局分布式锁失败。
本申请的上述实施例提供的装置,通过请求接收单元601接收客户端发送的数据获取请求;之后,选取单元602选取目标缓存服务器;然后,第一请求发送单元603确定上述目标缓存服务器中存在上述目标数据,则获取上述目标数据和上述目标数据的更新时间;然后,将上述目标数据发送至客户端;最后,确定当前时间是否大于上述更新时间,如果当前时间大于上述更新时间,则确定上述目标数据是热数据,需要获取全局分布式锁,只有成功获取到上述全局分布式锁的请求,才能访问数据库,减小了访问数据库的次数,降低了数据库的压力。缓存服务器中的数据也具有过期时间,如果在该数据的更新时间至过期时间这段时间段内,缓存服务器一直没有接收到客户端发送的获取该数据的请求,则确定该数据是冷数据,缓存服务器将会删除该冷数据,以节省缓存服务器的资源。
下面参考图7,其示出了适于用来实现本申请的终端设备或服务器的计算机系统700的结构示意图。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括请求接收单元、选取单元、第一请求发送单元和第一目标数据发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,请求接收单元还可以被描述为“接收客户端发送的数据获取请求的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收客户端发送的数据获取请求;从缓存服务器集群中选取缓存服务器作为目标缓存服务器;向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在目标数据,其中,所述目标数据是所述数据获取请求指示的待获取的数据;响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据和所述目标数据的更新时间,向所述客户端发送所述目标数据,响应于确定当前时间大于所述更新时间,获取用于对查询所述目标数据的操作进行保护的全局分布式锁。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (19)

1.一种数据获取方法,其特征在于,所述方法包括:
接收客户端发送的数据获取请求;
从缓存服务器集群中选取缓存服务器作为目标缓存服务器;
向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在目标数据,其中,所述目标数据是所述数据获取请求指示的待获取的数据;
响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据和所述目标数据的更新时间,向所述客户端发送所述目标数据,响应于确定当前时间大于所述更新时间,获取用于对查询所述目标数据的操作进行保护的全局分布式锁;
其中,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,包括:
确定用于获取所述全局分布式锁的任务及所述任务的任务标识;
对于所述任务,执行如下获取步骤:向所述缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令,其中,目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁;确定当前时间是否小于预设时间;
响应于确定所述当前时间不小于所述预设时间,则向所述缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于接收的各个任务标识中不存在所述任务标识且所述获取步骤的执行次数小于预设的第二阈值,则确定重新执行所述获取步骤。
2.根据权利要求1所述的数据获取方法,其特征在于,所述方法还包括:
响应于确定所述目标缓存服务器中不存在所述目标数据,执行如下发送步骤:等待预设的时长,向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在所述目标数据;
响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数小于预设的第一阈值,则确定重新执行所述发送步骤。
3.根据权利要求2所述的数据获取方法,其特征在于,所述方法还包括:
响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据,向所述客户端发送所述目标数据。
4.根据权利要求2所述的数据获取方法,其特征在于,所述方法还包括:
响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数等于所述第一阈值,则向所述客户端发送空值,并获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
5.根据权利要求1或4所述的数据获取方法,其特征在于,所述方法还包括:
执行受所述全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间;
将所述更新后的目标数据、所述更新后的更新时间、所述更新后的过期时间同步至所述缓存服务器集群中的每一个缓存服务器中。
6.根据权利要求1所述的数据获取方法,其特征在于,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,还包括:
响应于所接收的各个任务标识中存在所述任务标识或所述获取步骤的执行次数不小于所述第二阈值,则确定获取所述全局分布式锁失败。
7.根据权利要求1所述的数据获取方法,其特征在于,所述获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁,还包括:
响应于确定所述当前时间小于所述预设时间,接收各个缓存服务器发送的表征所述指令是否执行成功的执行结果,其中,对于各个缓存服务器中的每一个缓存服务器,如果该缓存服务器执行所述指令成功,则将所述任务标识更新至该缓存服务器中的目标分布式锁的标识字段;
根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁。
8.根据权利要求7所述的数据获取方法,其特征在于,所述根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁,包括:
如果所接收的各个执行结果均是表征所述指令执行成功的结果,则确定获取所述全局分布式锁成功;
如果所接收的各个执行结果均是表征所述指令执行失败的结果,则确定获取所述全局分布式锁失败;
如果所接收的各个执行结果中存在至少一个表征所述指令执行失败的结果和至少一个表征所述指令执行成功的结果,则向执行所述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收执行所述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于所述任务标识,则确定获取所述全局分布式锁成功,否则确定获取所述全局分布式锁失败。
9.一种数据获取装置,其特征在于,所述装置包括:
请求接收单元,配置用于接收客户端发送的数据获取请求;
选取单元,配置用于从缓存服务器集群中选取缓存服务器作为目标缓存服务器;
第一请求发送单元,配置用于向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在目标数据,其中,所述目标数据是所述数据获取请求指示的待获取的数据;
第一目标数据发送单元,配置用于响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据和所述目标数据的更新时间,向所述客户端发送所述目标数据,响应于确定当前时间大于所述更新时间,获取用于对查询所述目标数据的操作进行保护的全局分布式锁;
其中,所述全局分布式锁获取子单元还包括:
任务确定模块,配置用于确定用于获取所述全局分布式锁的任务及所述任务的任务标识;
指令发送模块,配置用于对于所述任务,执行如下获取步骤:向所述缓存服务器集群中的每一个缓存服务器发送占用该缓存服务器中的目标分布式锁的指令,其中,目标分布式锁是用于保护从数据库中查询更新后的目标数据的分布式锁;确定当前时间是否小于预设时间;
标识接收模块,配置用于响应于确定所述当前时间不小于所述预设时间,则向所述缓存服务器集群中的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于接收的各个任务标识中不存在所述任务标识且所述获取步骤的执行次数小于预设的第二阈值,则确定重新执行所述获取步骤。
10.根据权利要求9所述的数据获取装置,其特征在于,所述装置还包括:
第二请求发送单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据,执行如下发送步骤:等待预设的时长,向所述目标缓存服务器发送所述数据获取请求,确定所述目标缓存服务器中是否存在所述目标数据;
确定单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数小于预设的第一阈值,则确定重新执行所述发送步骤。
11.根据权利要求10所述的数据获取装置,其特征在于,所述装置还包括:
第二目标数据发送单元,配置用于响应于确定所述目标缓存服务器中存在所述目标数据,接收所述目标缓存服务器发送的所述目标数据,向所述客户端发送所述目标数据。
12.根据权利要求10所述的数据获取装置,其特征在于,所述装置还包括:
第三目标数据发送单元,配置用于响应于确定所述目标缓存服务器中不存在所述目标数据且所述发送步骤的执行次数等于所述第一阈值,则向所述客户端发送空值,并获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
13.根据权利要求9或12所述的数据获取装置,其特征在于,所述装置还包括:
查询单元,配置用于执行受所述全局分布式锁保护的数据查询操作,获取更新后的目标数据、更新后的更新时间、更新后的过期时间;
同步单元,配置用于将所述更新后的目标数据、所述更新后的更新时间、所述更新后的过期时间同步至所述缓存服务器集群中的每一个缓存服务器中。
14.根据权利要求9或12所述的数据获取装置,其特征在于,所述装置的第一目标数据发送单元或第三目标数据发送单元包括:
全局分布式锁获取子单元,配置用于获取用于对查询所述目标数据的操作进行保护的所述全局分布式锁。
15.根据权利要求9所述的数据获取装置,其特征在于,所述全局分布式锁获取子单元还包括:
第一结果确定模块,配置用于响应于所接收的各个任务标识中存在所述任务标识或所述获取步骤的执行次数不小于所述第二阈值,则确定获取所述全局分布式锁失败。
16.根据权利要求9所述的数据获取装置,其特征在于,所述全局分布式锁获取子单元还包括:
结果接收模块,配置用于响应于确定所述当前时间小于所述预设时间,接收各个缓存服务器发送的表征所述指令是否执行成功的执行结果,其中,对于各个缓存服务器中的每一个缓存服务器,如果该缓存服务器执行所述指令成功,则将所述任务标识更新至该缓存服务器中的目标分布式锁的标识字段;
第二结果确定模块,配置用于根据所接收的各个执行结果,确定是否成功获取所述全局分布式锁。
17.根据权利要求16所述的数据获取装置,其特征在于,所述第二结果确定模块包括:
第一确定子模块,配置用于如果所接收的各个执行结果均是表征所述指令执行成功的结果,则确定获取所述全局分布式锁成功;
第二确定子模块,配置用于如果所接收的各个执行结果均是表征所述指令执行失败的结果,则确定获取所述全局分布式锁失败;
第三确定子模块,配置用于如果所接收的各个执行结果中存在至少一个表征所述指令执行失败的结果和至少一个表征所述指令执行成功的结果,则向执行所述指令失败的每一个缓存服务器发送获取该缓存服务器中的目标分布式锁的标识字段的请求,接收执行所述指令失败的每一个缓存服务器发送的该缓存服务器中的目标分布式锁的任务标识,响应于所接收的各个任务标识都小于所述任务标识,则确定获取所述全局分布式锁成功,否则确定获取所述全局分布式锁失败。
18.一种数据获取装置,其特征在于,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至8中任一项所述的数据获取方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1至8中任一项所述的数据获取方法。
CN201610894361.4A 2016-10-13 2016-10-13 数据获取方法和装置 Active CN107943594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610894361.4A CN107943594B (zh) 2016-10-13 2016-10-13 数据获取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610894361.4A CN107943594B (zh) 2016-10-13 2016-10-13 数据获取方法和装置

Publications (2)

Publication Number Publication Date
CN107943594A CN107943594A (zh) 2018-04-20
CN107943594B true CN107943594B (zh) 2021-11-12

Family

ID=61928381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610894361.4A Active CN107943594B (zh) 2016-10-13 2016-10-13 数据获取方法和装置

Country Status (1)

Country Link
CN (1) CN107943594B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829743A (zh) * 2018-05-24 2018-11-16 平安科技(深圳)有限公司 缓存数据更新方法、装置、计算机设备以及存储介质
CN110795395B (zh) * 2018-07-31 2023-04-18 阿里巴巴集团控股有限公司 文件部署系统和文件部署方法
CN109614404B (zh) * 2018-11-01 2023-08-01 创新先进技术有限公司 一种数据缓存系统及方法
CN109634915A (zh) * 2018-11-28 2019-04-16 深圳市网心科技有限公司 文件部署方法、云服务器、系统及存储介质
CN110311975B (zh) * 2019-06-28 2022-06-03 北京奇艺世纪科技有限公司 一种数据请求处理方法及装置
CN110505277B (zh) * 2019-07-18 2022-04-26 北京奇艺世纪科技有限公司 一种数据缓存方法、装置及客户端
CN112532673B (zh) * 2019-09-19 2023-12-05 北京京东振世信息技术有限公司 消息发送方法及装置、计算机可读存储介质、电子设备
CN110995811B (zh) * 2019-11-25 2022-05-03 北京奇艺世纪科技有限公司 一种数据更新方法及装置
CN111259034A (zh) * 2020-02-17 2020-06-09 腾讯科技(深圳)有限公司 一种缓存数据管理方法和相关装置
CN111309747A (zh) * 2020-02-18 2020-06-19 京东数字科技控股有限公司 数据同步方法、系统和装置
CN111381951B (zh) * 2020-03-06 2023-06-30 北京思特奇信息技术股份有限公司 一种系统架构中脏数据处理方法、装置及存储介质
CN111400327B (zh) * 2020-03-11 2023-10-13 北京奇艺世纪科技有限公司 一种数据同步方法、装置、电子设备及存储介质
CN111552740B (zh) * 2020-04-28 2023-09-12 腾讯科技(深圳)有限公司 数据处理方法及装置
CN113704274B (zh) * 2020-05-20 2024-03-19 中国移动通信集团福建有限公司 一种数据的读取方法及电子设备
CN112463862A (zh) * 2020-11-05 2021-03-09 深圳市和讯华谷信息技术有限公司 一种基于配置权限的数据采集方法及装置
CN112363879A (zh) * 2020-11-20 2021-02-12 上海连尚网络科技有限公司 缓存服务器性能测试方法、装置、设备和介质
CN112506973B (zh) * 2020-12-14 2023-12-15 中国银联股份有限公司 一种存储数据管理的方法及装置
CN112910988A (zh) * 2021-01-28 2021-06-04 网宿科技股份有限公司 一种资源获取方法及资源调度装置
CN113238862B (zh) * 2021-05-13 2024-04-16 京东科技控股股份有限公司 一种分布式任务调度方法和装置
CN114143376A (zh) * 2021-11-18 2022-03-04 青岛聚看云科技有限公司 一种用于加载缓存的服务器、显示设备及资源播放方法
CN117278628B (zh) * 2023-11-16 2024-03-19 凌锐蓝信科技(北京)有限公司 数据传输方法、装置、系统、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729247A (zh) * 2012-10-12 2014-04-16 阿里巴巴集团控股有限公司 数据获取请求的处理方法、系统及服务器
CN105138587A (zh) * 2015-07-31 2015-12-09 小米科技有限责任公司 数据访问方法、装置和系统
CN105373369A (zh) * 2014-08-25 2016-03-02 北京皮尔布莱尼软件有限公司 一种异步缓存方法、服务器及系统
CN105450618A (zh) * 2014-09-26 2016-03-30 Tcl集团股份有限公司 一种api服务器处理大数据的运算方法及其系统
CN105608115A (zh) * 2015-12-11 2016-05-25 北京奇虎科技有限公司 数据获取方法与装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9596313B2 (en) * 2013-04-12 2017-03-14 Tencent Technology (Shenzhen) Company Limited Method, terminal, cache server and system for updating webpage data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729247A (zh) * 2012-10-12 2014-04-16 阿里巴巴集团控股有限公司 数据获取请求的处理方法、系统及服务器
CN105373369A (zh) * 2014-08-25 2016-03-02 北京皮尔布莱尼软件有限公司 一种异步缓存方法、服务器及系统
CN105450618A (zh) * 2014-09-26 2016-03-30 Tcl集团股份有限公司 一种api服务器处理大数据的运算方法及其系统
CN105138587A (zh) * 2015-07-31 2015-12-09 小米科技有限责任公司 数据访问方法、装置和系统
CN105608115A (zh) * 2015-12-11 2016-05-25 北京奇虎科技有限公司 数据获取方法与装置

Also Published As

Publication number Publication date
CN107943594A (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN107943594B (zh) 数据获取方法和装置
US10785322B2 (en) Server side data cache system
CN111464615B (zh) 请求处理方法、装置、服务器及存储介质
KR20160030381A (ko) 웹 페이지 액세스 방법, 장치, 라우터, 프로그램 및 기록매체
CN109388626B (zh) 用于向业务分配编号的方法和装置
US10275347B2 (en) System, method and computer program product for managing caches
CN104954468A (zh) 资源的分配方法及装置
CN111221469B (zh) 同步缓存数据的方法、装置和系统
US9110807B2 (en) Cache conflict detection
US9471896B2 (en) Memo synchronization system, mobile system, and method for synchronizing memo data
US9529772B1 (en) Distributed caching cluster configuration
WO2017166791A1 (zh) 应用程序备份方法及装置
CN113094430B (zh) 一种数据处理方法、装置、设备以及存储介质
US9298765B2 (en) Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network
CN104376122A (zh) 浏览器客户端获得静态文件的方法及服务器
CN109471713B (zh) 用于查询信息的方法和装置
CN107918617B (zh) 数据查询方法和装置
US10467143B1 (en) Event-driven cache
US7895266B2 (en) Distributed file system and method of replacing cache data in the distributed file system
US11394748B2 (en) Authentication method for anonymous account and server
CN105242960A (zh) 一种处理系统功能调用请求的方法及浏览器
CN113824675B (zh) 管理登录态的方法和装置
CN116991333B (zh) 分布式数据存储方法、装置、电子设备及存储介质
CN113742376A (zh) 一种同步数据的方法、第一服务器以及同步数据的系统
US20130031071A1 (en) Control apparatus, control method and recording medium of control program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant