数据同步装置及其实现数据同步的方法、客户端访问系统与流程

文档序号:12494798阅读:254来源:国知局
数据同步装置及其实现数据同步的方法、客户端访问系统与流程

本发明涉及计算机数据处理的技术领域,特别涉及一种数据同步装置及其实现数据同步的方法以及一种客户端访问系统。



背景技术:

为了减轻后台服务器和数据库的压力,网站常常增设缓存服务器,将用户频繁访问的数据放在缓存服务器中,以分担后台服务器和数据库的访问量,使后台服务器和数据库的压力得以降低。例如,如图1所示的客户端访问系统,后台服务器编辑数据,保存数据至数据库中的同时,同步更新数据至缓存服务器中;每个客户端访问各自所连接的接口服务器,每个接口服务器从缓存服务器中读取最新的数据,并将数据返回给客户端。

但是,随着网站规模的扩大以及访问量的提高,缓存服务器的压力越来越大;当访问量达到缓存服务器的极限(例如,超过10万个并发用户链接)时,缓存服务器不可避免地会出现响应速度降低或者无法访问的情况。

因此需要在接口服务器上提供一种数据同步装置和实现数据同步的方法,将缓存服务器上的数据分发至各个客户端对应的接口服务器,并在接口服务器上实时同步缓存服务器的数据,从而使得接口服务器每次收到客户端的连接访问请求时,不必要从缓存服务器上读取最新的数据。



技术实现要素:

为了解决上述技术问题,本发明提供了一种数据同步装置及其实现数据同步的方法以及一种客户端访问系统,能够使得接口服务器与缓存服务器之间始终保持数据同步,进而提升缓存服务器访问性能。

为了达到本发明目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据同步装置,包括:监听模块、读取模块和存储模块;其中,

监听模块,用于监听缓存服务器的数据是否发生变更,当监听到缓存服务器的数据发生变更时,通知读取模块;

读取模块,用于在自身所属装置启动时,从缓存服务器读取所需的数据,并存储至存储模块;当接收到来自监听模块的通知时,重新从缓存服务器读取所需的数据,并更新存储模块存储的数据;

存储模块,用于存储读取模块所读取的数据。

进一步地,所述监听模块具体用于:通过消息中间件与所述缓存服务器建立第一数据通道,并在第一数据通道上监听所述缓存服务器的数据是否发生变更。

进一步地,所述监听模块具体用于:通过套接字与所述缓存服务器建立第二数据通道,并在第二数据通道上监听所述缓存服务器的数据是否发生变更。

进一步地,还包括:数据处理模块,用于接收客户端的连接访问请求,根据连接访问请求读取存储模块中相应的数据。

本发明实施例提供了一种客户端访问系统,包括客户端、接口服务器、缓存服务器和后台服务器;

客户端,用于发起连接访问请求至相应的接口服务器;

接口服务器,用于在启动时,从缓存服务器读取自身所连的客户端所需的数据,并存储至本地;监听缓存服务器的数据是否发生变更;当监听到缓存服务器的数据发生变更时,重新从缓存服务器读取客户端所需的数据,并更新本地存储的数据;接收客户端的连接访问请求,根据连接访问请求读取相应的本地存储的数据并生成连接访问响应,将连接访问响应返回至客户端;

缓存服务器,用于同步存储后台服务器的数据;当存储的数据发生变更时,通知相应的接口服务器;

后台服务器,用于管理多个客户端的数据,并将所述客户端的数据同步存储至缓存服务器。

进一步地,所述接口服务器具体用于:通过消息中间件或套接字与所述缓存服务器建立数据通道,并在数据通道上监听所述缓存服务器的数据是否发生变更。

本发明实施例还提供了一种数据同步装置的实现数据同步的方法,包括如下步骤:

在数据同步装置启动时,从缓存服务器读取所需的数据并存储至本地;

监听缓存服务器的数据是否发生变更;

当监听到缓存服务器的数据发生变更时,重新从缓存服务器读取所需的数据并存储至本地。

进一步地,所述实现数据同步的方法,还包括:

所述数据同步装置接收客户端的连接访问请求,根据连接访问请求读取相应的本地存储的数据。

进一步地,所述监听缓存服务器的数据是否发生变更包括:

通过消息中间件与所述缓存服务器建立第一数据通道,并在第一数据通道上监听所述缓存服务器的数据是否发生变更。

进一步地,所述监听缓存服务器的数据是否发生变更包括:

通过套接字与所述缓存服务器建立第二数据通道,并在第二数据通道上监听所述缓存服务器的数据是否发生变更。

本发明提供的技术方案,通过在数据同步装置启动时,从缓存服务器读取所需的数据并存储至本地;然后监听缓存服务器的数据是否发生变更;当监听到缓存服务器的数据发生变更时,重新从缓存服务器读取所需的数据并存储至本地,从而使得数据同步装置与缓存服务器之间始终保持数据同步;

进一步地,本发明的客户端访问系统,通过在接口服务器上应用本发明的数据同步装置及其实现数据同步的方法,使得接口服务器与缓存服务器之间始终保持数据同步,当接口服务器接收到客户端的连接访问请求时,不需要从缓存服务器读取最新的数据,解决了由于网站规模的扩大以及访问量的提高,导致缓存服务器访问性能下降的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为一种客户端访问系统的硬件结构示意图;

图2为本发明的第一种数据同步装置的结构示意图;

图3为本发明的第二种数据同步装置的结构示意图;

图4为本发明的第一种实现数据同步的方法的流程示意图;

图5为本发明的第二种实现数据同步的方法的流程示意图。

具体实施方式

下面将结合附图及实施例对本发明的技术方案进行更详细的说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图2所示,根据本发明的一种数据同步装置,包括监听模块10、读取模块20和存储模块30;

其中,监听模块10,用于监听缓存服务器的数据是否发生变更,当监听到缓存服务器的数据发生变更时,通知读取模块20;

读取模块20,用于在自身所属装置启动时,从缓存服务器读取所需的数据,并存储至存储模块30;当接收到来自监听模块10的通知时,重新从缓存服务器读取所需的数据,并更新存储模块30存储的数据;

存储模块30,用于存储读取模块20所读取的数据。

可选地,监听模块10具体用于:通过消息中间件与缓存服务器建立第一数据通道,并在第一数据通道上监听缓存服务器的数据是否发生变更。消息中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务功能,衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的,它的出现保证了消息传输的可靠性、高效性和安全性。

具体的,在缓存服务器端配置消息中间件的消息发布者,在监听模块10中配置消息中间件的某一主题(topic)的消息订阅者,当后台管理界面针对某一主题的数据进行新增、修改或者删除操作时,后台服务器首先保存相关数据至数据库中,然后将变更数据同步更新至缓存服务器中,缓存服务器向消息中间件系统中的相关主题发布一条数据变更通知;监听模块10接收到该主题的数据变更通知后,通知读取模块20。

可选地,本发明的消息中间件为Redis、Kafka或消息队列(Message Queue,MQ)等等现有的消息中间件。Redis(REmote DIctionary Server)是一个开源的内存存储系统,可以同时用来做数据库、缓存或者消息代理服务。Kafka是一个分布式的基于推送-订阅(push-subscribe)的消息系统,它具备快速、可扩展、可持久化的特点。消息队列MQ是分布式应用间交换信息的一种技术,消息队列可驻留在内存或者磁盘上,队列存储消息直到它们被应用程序读走。消息队列MQ包括RabbitMQ、ActiveMQ和ZeroMQ等等现有的消息中间件,RabbitMQ是实现高级消息队列协议(AMQP)的消息中间件的一种,用于在分布式系统中存储转发消息;ActiveMQ是阿帕奇(Apache)软件基金下的一个开源软件,遵循JMS(Java Message Service)规范;ZeroMQ是一个非常轻量级的消息系统,专门为高吞吐量/低延迟的场景开发。

具体地,如果缓存服务器为Redis缓存服务器,本发明的消息中间件优选使用Redis消息中间件。

可选地,监听模块10具体用于:通过套接字(Socket)与缓存服务器建立第二数据通道,并在第二数据通道上监听缓存服务器的数据是否发生变更。Socket用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信。

具体的,在缓存服务器端配置服务器端套接字,在监听模块10中配置客户端套接字。缓存服务器实时监听客户端套接字的连接请求;客户端套接字发起连接请求,要连接的目标是服务器端的套接字;缓存服务器接收到客户端套接字的连接请求,响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,第二数据通道就建立好了。当后台服务器数据变更导致缓存服务器的数据发生变更时,缓存服务器通过第二数据通道向监听模块10发送一条数据变更通知;监听模块10接收到缓存服务器的数据变更通知后,通知读取模块20。

可选地,当读取模块20接收到来自监听模块10的通知时,重新从缓存服务器读取全部所需的数据。

可选地,缓存服务器发送至监听模块10的数据变更通知中,包括缓存服务器的具体变更信息。例如:所述具体变更信息包括变更文件名及其地址。当监听模块10接收到缓存服务器的数据变更通知并通知读取模块20时,将缓存服务器的具体变更信息发送至读取模块20。读取模块20根据具体变更信息,读取缓存服务器的相应的变更数据,并更新存储模块存储的数据。

在本发明的一实施例中,存储模块30包括缓存存储单元和/或硬盘存储单元。

具体的,读取模块30将读取的缓存服务器的数据,存储至存储模块的缓存存储单元中,或者存储至存储模块的硬盘存储单元中,或者同时存储至缓存存储单元和硬盘存储单元中。

进一步地,如图3所示,本发明的数据同步装置,还包括:数据处理模块40,用于接收客户端的连接访问请求,根据连接访问请求读取存储模块30中相应的数据。

本发明实施例还提供了一种客户端访问系统,包括客户端、接口服务器、缓存服务器和后台服务器;

客户端,用于发起连接访问请求至相应的接口服务器;

接口服务器,用于在启动时,从缓存服务器读取自身所连的客户端所需的数据,并存储至本地;监听缓存服务器中相应的数据是否发生变更;当监听到缓存服务器中相应的数据发生变更时,重新从缓存服务器读取客户端所需的数据,并更新本地存储的数据;接收客户端的连接访问请求,根据连接访问请求读取相应的本地存储的数据并生成连接访问响应,将连接访问响应返回至客户端;

缓存服务器,用于同步存储后台服务器的数据;当存储的数据发生变更时,通知相应的接口服务器;

后台服务器,用于管理多个客户端的数据,并将所述客户端的数据同步存储至缓存服务器。

可选地,接口服务器通过消息中间件与缓存服务器建立第一数据通道,并在第一数据通道上监听缓存服务器的数据是否发生变更。

具体的,在缓存服务器端配置消息中间件的消息发布者,在接口服务器端配置消息中间件的某一主题的消息订阅者,当后台管理界面针对某一主题的数据进行新增、修改或者删除操作时,后台服务器首先保存相关数据至数据库中,然后将变更数据同步更新至缓存服务器中,缓存服务器向消息中间件系统中的相关主题发布一条数据变更通知;接口服务器接收到该主题的数据变更通知。

可选地,本发明的消息中间件为Redis、Kafka或消息队列(Message Queue,MQ)等等现有的消息中间件。

具体地,如果缓存服务器为Redis缓存服务器,本发明的消息中间件优选使用Redis消息中间件。

可选地,接口服务器通过套接字与缓存服务器建立第二数据通道,并在第二数据通道上监听缓存服务器的数据是否发生变更。

具体的,在缓存服务器端配置服务器端套接字,在接口服务器端配置客户端套接字。缓存服务器实时监听客户端套接字的连接请求;客户端套接字发起连接请求,要连接的目标是服务器端的套接字;缓存服务器接收到客户端套接字的连接请求,响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,第二数据通道就建立好了。当后台服务器数据发生变更导致缓存服务器的数据发生变更时,缓存服务器通过第二数据通道向接口服务器发送一条数据变更通知。

可选地,当接口服务器接收到数据变更通知后,重新从缓存服务器读取全部所需的数据。

可选地,缓存服务器发送的数据变更通知中,包括缓存服务器的具体变更信息。例如:所述具体变更信息包括变更文件名及其地址。当接口服务器接收到缓存服务器的数据变更通知后,根据其中的具体变更信息,读取缓存服务器的相应的变更数据,并更新接口服务器上存储的数据。

在本发明的一实施例中,接口服务器将读取的缓存服务器的数据,存储至缓存存储单元和/或硬盘存储单元。

具体的,接口服务器将读取的缓存服务器的数据,缓存至本地的缓存存储单元中,或者存储至本地的硬盘存储单元中,或者同时缓存至缓存存储单元以及存储至硬盘存储单元中。

如图4所示,根据本发明的一种数据同步装置的实现数据同步的方法,包括以下步骤:

步骤101:在数据同步装置启动时,从缓存服务器读取所需的数据并存储至本地;

步骤102:监听缓存服务器的数据是否发生变更;

步骤103:当监听到缓存服务器的数据发生变更时,重新从缓存服务器读取所需的数据并存储至本地。

可选地,所述监听缓存服务器的数据是否发生变更包括:通过消息中间件与缓存服务器建立第一数据通道,并在第一数据通道上监听缓存服务器的数据是否发生变更。

具体的,在缓存服务器端配置消息中间件的消息发布者,在数据同步装置中配置消息中间件的某一主题(topic)的消息订阅者,当后台管理界面针对某一主题的数据进行新增、修改或者删除操作时,后台服务器首先保存相关数据至数据库中,然后将变更数据同步更新至缓存服务器中,缓存服务器向消息中间件系统中的相关主题发布一条数据变更通知,数据同步装置接收到该主题的数据变更通知。

可选地,本发明的消息中间件为Redis、Kafka或MQ(Message Queue)等等现有的消息中间件。

具体地,如果服务器为Redis缓存服务器,本发明的消息中间件优选使用Redis消息中间件。

可选地,所述监听缓存服务器的数据是否发生变更包括:通过套接字(Socket)与缓存服务器建立第二数据通道,并在第二数据通道上监听缓存服务器的数据是否发生变更。

具体的,在缓存服务器端配置服务器端套接字,在数据同步装置中配置客户端套接字。缓存服务器实时监听客户端套接字的连接请求;客户端套接字发起连接请求,要连接的目标是服务器端的套接字;缓存服务器接收到客户端套接字的连接请求,响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,第二数据通道就建立好了。当后台服务器数据发生变更导致缓存服务器的数据发生变更时,缓存服务器通过第二数据通道向数据同步装置发送一条数据变更通知。

可选地,当监听到缓存服务器的数据发生变更时,重新从缓存服务器读取全部所需的数据。

可选地,缓存服务器发送的数据变更通知中,包括缓存服务器的具体变更信息。例如:所述具体变更信息包括变更文件名及其地址。当接收到缓存服务器的数据变更通知后,根据其中的具体变更信息,读取缓存服务器的相应的变更数据,并更新本地存储的数据。

在本发明的一实施例中,将读取的缓存服务器的数据,存储至缓存存储单元和/或硬盘存储单元。

具体的,将读取的缓存服务器的数据,缓存至本地的缓存存储单元中,或者存储至本地的硬盘存储单元中,或者同时缓存至缓存存储单元以及存储至硬盘存储单元中。

进一步地,如图5所示,本发明的数据同步装置的实现数据同步的方法,还包括:

步骤104:所述数据同步装置接收客户端的连接访问请求,根据连接访问请求读取相应的本地存储的数据。

本发明的客户端访问系统,通过在接口服务器上应用本发明的数据同步装置及其实现数据同步的方法,使得接口服务器与缓存服务器之间始终保持数据同步,当接口服务器接收到客户端的连接访问请求时,不需要从缓存服务器读取最新的数据,解决了由于网站规模的扩大以及访问量的提高,导致缓存服务器访问性能下降的问题。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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